diff --git a/lib/l10n/app_localizations_ar.dart b/lib/l10n/app_localizations_ar.dart index b48f479f..d30b2112 100644 --- a/lib/l10n/app_localizations_ar.dart +++ b/lib/l10n/app_localizations_ar.dart @@ -12,1168 +12,1173 @@ class AppLocalizationsAr extends AppLocalizations { String get appName => 'SpotiFLAC Mobile'; @override - String get navHome => 'Home'; + String get navHome => 'الرئيسية'; @override - String get navLibrary => 'Library'; + String get navLibrary => 'المكتبة'; @override - String get navSettings => 'Settings'; + String get navSettings => 'الإعدادات'; @override - String get navStore => 'Repo'; + String get navStore => 'المستودع'; @override - String get homeTitle => 'Home'; + String get homeTitle => 'الصفحة الرئيسية'; @override - String get homeSubtitle => 'Paste a supported URL or search by name'; + String get homeSubtitle => 'ألصق عنوان URL مدعوم أو ابحث بالاسم'; @override - String get homeEmptyTitle => 'No search providers yet'; + String get homeEmptyTitle => 'لا يوجد مزودي بحث بعد'; @override - String get homeEmptySubtitle => 'Install an extension to continue.'; + String get homeEmptySubtitle => 'قم بتثبيت مكون إضافي للمتابعة.'; @override - String get homeSupports => 'Supports: Track, Album, Playlist, Artist URLs'; + String get homeSupports => + 'يدعم: الأغنية، الألبوم، قائمة التشغيل، عناوين URL للفنان'; @override - String get homeRecent => 'Recent'; + String get homeRecent => 'الأخيرة'; @override - String get historyFilterAll => 'All'; + String get historyFilterAll => 'الكل'; @override - String get historyFilterAlbums => 'Albums'; + String get historyFilterAlbums => 'الألبومات'; @override - String get historyFilterSingles => 'Singles'; + String get historyFilterSingles => 'الأغاني'; @override - String get historySearchHint => 'Search history...'; + String get historySearchHint => 'سجل البحث...'; @override - String get settingsTitle => 'Settings'; + String get settingsTitle => 'الإعدادات'; @override - String get settingsDownload => 'Download'; + String get settingsDownload => 'إعدادات التحميل'; @override - String get settingsAppearance => 'Appearance'; + String get settingsAppearance => 'المظهر'; @override - String get settingsOptions => 'Options'; + String get settingsOptions => 'الخيارات'; @override - String get settingsExtensions => 'Extensions'; + String get settingsExtensions => 'الإضافات'; @override - String get settingsAbout => 'About'; + String get settingsAbout => 'حول البرنامج'; @override - String get downloadTitle => 'Download'; + String get downloadTitle => 'إعدادات التحميل'; @override - String get downloadAskQualitySubtitle => - 'Show quality picker for each download'; + String get downloadAskQualitySubtitle => 'إظهار منتقي الجودة لكل تنزيل'; @override - String get downloadFilenameFormat => 'Filename Format'; + String get downloadFilenameFormat => 'تنسيق اسم الملف'; @override - String get downloadSingleFilenameFormat => 'Single Filename Format'; + String get downloadSingleFilenameFormat => 'تنسيق اسم الملف الفردي'; @override String get downloadSingleFilenameFormatDescription => - 'Filename pattern for singles and EPs. Uses the same tags as the album format.'; + 'نمط اسم الملف للعازفين و EPs. يستخدم نفس العلامات مثل تنسيق الألبوم.'; @override - String get downloadFolderOrganization => 'Folder Organization'; + String get downloadFolderOrganization => 'تنظيم المجلدات'; @override - String get appearanceTitle => 'Appearance'; + String get appearanceTitle => 'المظهر'; @override - String get appearanceThemeSystem => 'System'; + String get appearanceThemeSystem => 'النظام'; @override - String get appearanceThemeLight => 'Light'; + String get appearanceThemeLight => 'فاتح'; @override - String get appearanceThemeDark => 'Dark'; + String get appearanceThemeDark => 'مظلم'; @override - String get appearanceDynamicColor => 'Dynamic Color'; + String get appearanceDynamicColor => 'لون ديناميكي'; @override - String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; + String get appearanceDynamicColorSubtitle => 'استخدام الألوان من الخلفية'; @override - String get appearanceHistoryView => 'History View'; + String get appearanceHistoryView => 'عرض السجل'; @override - String get appearanceHistoryViewList => 'List'; + String get appearanceHistoryViewList => 'قائمة'; @override - String get appearanceHistoryViewGrid => 'Grid'; + String get appearanceHistoryViewGrid => 'شبكة'; @override - String get optionsTitle => 'Options'; + String get optionsTitle => 'خيارات'; @override - String get optionsPrimaryProvider => 'Primary Provider'; + String get optionsPrimaryProvider => 'المزود الرئيسي'; @override String get optionsPrimaryProviderSubtitle => - 'Service used for searching by track or album name'; + 'الخدمة المستخدمة للبحث عن طريق اسم الأغنية أو الألبوم'; @override String optionsUsingExtension(String extensionName) { - return 'Using extension: $extensionName'; + return 'استخدام الإضافة: $extensionName'; } @override - String get optionsDefaultSearchTab => 'Default Search Tab'; + String get optionsDefaultSearchTab => 'تبويب البحث الافتراضي'; @override String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; + 'اختر علامة التبويب التي تفتح أولاً لنتائج البحث الجديدة.'; @override String get optionsSwitchBack => - 'Choose the default search provider to switch back from an extension'; + 'اختر مزود البحث الافتراضي للتبديل من مكون إضافي'; @override - String get optionsAutoFallback => 'Auto Fallback'; + String get optionsAutoFallback => 'التراجع التلقائي'; @override - String get optionsAutoFallbackSubtitle => - 'Try other services if download fails'; + String get optionsAutoFallbackSubtitle => 'تجربة خدمات أخرى إذا فشل التنزيل'; @override - String get optionsUseExtensionProviders => 'Use Extension Providers'; + String get optionsUseExtensionProviders => 'استخدام مزودي الإضافات'; @override - String get optionsUseExtensionProvidersOn => - 'Extension providers are enabled'; + String get optionsUseExtensionProvidersOn => 'مزودي الإضافات مفعلين'; @override - String get optionsUseExtensionProvidersOff => - 'Extension providers are required'; + String get optionsUseExtensionProvidersOff => 'مزودي الإضافات مطلوبين'; @override - String get optionsEmbedLyrics => 'Embed Lyrics'; + String get optionsEmbedLyrics => 'تضمين كلمات الأغنية'; @override String get optionsEmbedLyricsSubtitle => 'حفظ كلمات الأغاني المتزامنة جنبا إلى جنب مع المسارات التي تم تنزيلها'; @override - String get optionsMaxQualityCover => 'اختيار اعلى جودة للغلاف'; + String get optionsMaxQualityCover => 'اختيار أعلى جودة للغلاف'; @override - String get optionsMaxQualityCoverSubtitle => - 'Download highest resolution cover art'; + String get optionsMaxQualityCoverSubtitle => 'تنزيل أعلى دقة لغلاف الأغنية'; @override - String get optionsReplayGain => 'ReplayGain'; + String get optionsReplayGain => 'ReplyGain'; @override String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; + 'مسح الصوت و تضمين علامات ReplayGain (EBU R128)'; @override - String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; + String get optionsReplayGainSubtitleOff => 'معطل: لا توجد علامات تطبيع للصوت'; @override - String get trackReplayGain => 'Rescan ReplayGain'; + String get trackReplayGain => 'إعادة مسح ReplyGain'; @override String get trackReplayGainSubtitle => - 'Analyze loudness and write ReplayGain tags'; + 'تحليل ارتفاع الصوت وكتابة وسوم ReplayGain'; @override - String get trackReplayGainScanning => 'Analyzing loudness...'; + String get trackReplayGainScanning => 'تحليل الصوت...'; @override - String get trackReplayGainSuccess => 'ReplayGain tags added'; + String get trackReplayGainSuccess => 'تم إضافة وسم ReplyGain'; @override - String get trackReplayGainFailed => 'Failed to add ReplayGain tags'; + String get trackReplayGainFailed => 'فشل في إضافة علامات ReplayGain'; @override String selectionReplayGainCount(int count) { - return 'ReplayGain ($count)'; + return 'ٌReplyGain ($count)'; } @override - String get replayGainBatchConfirmTitle => 'Add ReplayGain'; + String get replayGainBatchConfirmTitle => 'إضافة ReplyGain'; @override String replayGainBatchConfirmMessage(int count) { - return 'Analyze loudness and write ReplayGain tags to $count track(s)?'; + return 'تحليل الصوت وكتابة وسوم ReplayGain إلى مسار(مسارات) $count؟'; } @override - String get replayGainBatchAnalyzing => 'Analyzing ReplayGain...'; + String get replayGainBatchAnalyzing => 'تحليل ReplyGain...'; @override String replayGainBatchSuccess(int success, int total) { - return 'ReplayGain added to $success of $total tracks'; + return 'تمت إضافة وسوم ReplyGain ل $success أغنية من أصل $total'; } @override - String get optionsArtistTagMode => 'Artist Tag Mode'; + String get optionsArtistTagMode => 'وضع وسم الفنان'; @override String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; + 'اختر كيف يتم كتابة العديد من الفنانين في العلامات المضمنة.'; @override - String get optionsArtistTagModeJoined => 'Single joined value'; + String get optionsArtistTagModeJoined => 'قيمة مشتركة واحدة'; @override String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; + 'اكتب قيمة ARTIST واحدة مثل \"الفنان A، الفنان B\" لتحقيق التوافق الأقصى لمشغل الأغاني.'; @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; + String get optionsArtistTagModeSplitVorbis => 'تقسيم العلامات على FLAC/Opus'; @override String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; + 'اكتب علامة فنان لكل فنان لـ FLAC و Opus؛ تبقى MP3 و M4A منضمة.'; @override - String get optionsExtensionStore => 'Extension Repo'; + String get optionsExtensionStore => 'مستودع الإضافات'; @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; + String get optionsExtensionStoreSubtitle => + 'إظهار صفحة المستودع في شريط التنقل'; @override - String get optionsCheckUpdates => 'Check for Updates'; + String get optionsCheckUpdates => 'التحقق من وجود تحديثات'; @override - String get optionsCheckUpdatesSubtitle => - 'Notify when new version is available'; + String get optionsCheckUpdatesSubtitle => 'إعلام عند توفر إصدار جديد'; @override - String get optionsUpdateChannel => 'Update Channel'; + String get optionsUpdateChannel => 'قناة التحديث'; @override - String get optionsUpdateChannelStable => 'Stable releases only'; + String get optionsUpdateChannelStable => 'الإصدارات المستقرة فقط'; @override - String get optionsUpdateChannelPreview => 'Get preview releases'; + String get optionsUpdateChannelPreview => 'الحصول على إصدارات تجريبية'; @override String get optionsUpdateChannelWarning => - 'Preview may contain bugs or incomplete features'; + 'قد تحتوي الإصدارات التجريبية أخطاءً أو ميزات غير مكتملة'; @override - String get optionsClearHistory => 'Clear Download History'; + String get optionsClearHistory => 'مسح سجل التحميلات'; @override String get optionsClearHistorySubtitle => - 'Remove all downloaded tracks from history'; + 'إزالة جميع الأغاني التي تم تنزيلها من السجل'; @override - String get optionsDetailedLogging => 'Detailed Logging'; + String get optionsDetailedLogging => 'تسجيل تفصيلي'; @override - String get optionsDetailedLoggingOn => 'Detailed logs are being recorded'; + String get optionsDetailedLoggingOn => 'يتم تسجيل السجلات التفصيلية'; @override - String get optionsDetailedLoggingOff => 'Enable for bug reports'; + String get optionsDetailedLoggingOff => 'تمكين لتقارير الأخطاء'; @override - String get optionsSpotifyCredentials => 'Spotify Credentials'; + String get optionsSpotifyCredentials => 'بيانات اعتماد Spotify'; @override String optionsSpotifyCredentialsConfigured(String clientId) { - return 'Client ID: $clientId...'; + return 'معرف العميل: $clientId...'; } @override - String get optionsSpotifyCredentialsRequired => 'Required - tap to configure'; + String get optionsSpotifyCredentialsRequired => 'مطلوب - انقر للتهيئة'; @override String get optionsSpotifyWarning => - 'Spotify requires your own API credentials. Get them free from developer.spotify.com'; + 'Spotify يتطلب بيانات اعتماد API الخاصة بك. احصل عليها مجاناً من developer.spotify.com'; @override String get optionsSpotifyDeprecationWarning => - 'Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.'; + 'سيتم إلغاء البحث في Spotify في 3 مارس 2026 بسبب تغييرات API Spotify. الرجاء التبديل إلى Deezer.'; @override - String get extensionsTitle => 'Extensions'; + String get extensionsTitle => 'الإضافات'; @override - String get extensionsDisabled => 'Disabled'; + String get extensionsDisabled => 'معطَّل'; @override String extensionsVersion(String version) { - return 'Version $version'; + return 'الإصدار $version'; } @override String extensionsAuthor(String author) { - return 'by $author'; + return 'من قِبل $author'; } @override - String get extensionsUninstall => 'Uninstall'; + String get extensionsUninstall => 'إلغاء التثبيت'; @override - String get storeTitle => 'Extension Repo'; + String get storeTitle => 'مستودع الإضافات'; @override - String get storeSearch => 'Search extensions...'; + String get storeSearch => 'البحث في الإضافات...'; @override - String get storeInstall => 'Install'; + String get storeInstall => 'تثبيت'; @override - String get storeInstalled => 'Installed'; + String get storeInstalled => 'مثبت'; @override - String get storeUpdate => 'Update'; + String get storeUpdate => 'تحديث'; @override - String get aboutTitle => 'About'; + String get aboutTitle => 'حول'; @override - String get aboutContributors => 'Contributors'; + String get aboutContributors => 'المساهمون'; @override - String get aboutMobileDeveloper => 'Mobile version developer'; + String get aboutMobileDeveloper => 'مطور نسخة الهاتف'; @override - String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; + String get aboutOriginalCreator => 'منشئ SpotiFLAC'; @override - String get aboutLogoArtist => - 'The talented artist who created our beautiful app logo!'; + String get aboutLogoArtist => 'الفنان الموهوب الذي أنشأ شعار التطبيق الجميل!'; @override - String get aboutTranslators => 'Translators'; + String get aboutTranslators => 'المترجمون'; @override - String get aboutSpecialThanks => 'Special Thanks'; + String get aboutSpecialThanks => 'شكر خاص لِ'; @override - String get aboutLinks => 'Links'; + String get aboutLinks => 'روابط'; @override - String get aboutMobileSource => 'Mobile source code'; + String get aboutMobileSource => 'كود مصدر برنامج الهاتف'; @override - String get aboutPCSource => 'PC source code'; + String get aboutPCSource => 'كود مصدر برنامج الكمبيوتر'; @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; + String get aboutKeepAndroidOpen => 'ابقي اندرويد مفتوحا'; @override - String get aboutReportIssue => 'Report an issue'; + String get aboutReportIssue => 'الإبلاغ عن خطأ'; @override - String get aboutReportIssueSubtitle => 'Report any problems you encounter'; + String get aboutReportIssueSubtitle => 'الإبلاغ عن أي مشكلة تواجهك'; @override - String get aboutFeatureRequest => 'Feature request'; + String get aboutFeatureRequest => 'اقتراح ميزة'; @override - String get aboutFeatureRequestSubtitle => 'Suggest new features for the app'; + String get aboutFeatureRequestSubtitle => 'اقتراح ميزات جديدة للتطبيق'; @override - String get aboutTelegramChannel => 'Telegram Channel'; + String get aboutTelegramChannel => 'قناة تيليجرام'; @override - String get aboutTelegramChannelSubtitle => 'Announcements and updates'; + String get aboutTelegramChannelSubtitle => 'الإعلانات والتحديثات'; @override - String get aboutTelegramChat => 'Telegram Community'; + String get aboutTelegramChat => 'مجتمع تليجرام'; @override - String get aboutTelegramChatSubtitle => 'Chat with other users'; + String get aboutTelegramChatSubtitle => 'الدردشة مع المستخدمين الآخرين'; @override - String get aboutSocial => 'Social'; + String get aboutSocial => 'التواصل الإجتماعي'; @override - String get aboutApp => 'App'; + String get aboutApp => 'التطبيق'; @override - String get aboutVersion => 'Version'; + String get aboutVersion => 'الإصدار'; @override String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; + 'منشئ API QQDL و HiFi. ساعد هذا المشروع في تشكيل دعم تحميل غير فاقد للجودة.'; @override String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; + 'منشئ مشروع HiFi الأصلي. مؤسسة للتكامل بدون مصدر.'; @override String get aboutSjdonadoDesc => - 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + 'منشئ ل I Don\'t Have Spotify (IHDS). محلل الروابط الذي ينقذ اليوم!'; @override String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; + 'البحث عن بيانات التعريف الموسيقي، وإدارة الملحقات، وتنظيم مكتبتك.'; @override - String get artistAlbums => 'Albums'; + String get artistAlbums => 'الألبومات'; @override - String get artistSingles => 'Singles & EPs'; + String get artistSingles => 'الأغاني و ال EPs'; @override - String get artistCompilations => 'Compilations'; + String get artistCompilations => 'التجميع'; @override - String get artistPopular => 'Popular'; + String get artistPopular => 'الأكثر شعبية'; @override String artistMonthlyListeners(String count) { - return '$count monthly listeners'; + return '$count مستمع شهري'; } @override - String get trackMetadataService => 'Service'; + String get trackMetadataService => 'الخدمة'; @override - String get trackMetadataPlay => 'Play'; + String get trackMetadataPlay => 'تشغيل'; @override - String get trackMetadataShare => 'Share'; + String get trackMetadataShare => 'مشاركة'; @override - String get trackMetadataDelete => 'Delete'; + String get trackMetadataDelete => 'حذف'; @override - String get setupGrantPermission => 'Grant Permission'; + String get setupGrantPermission => 'منح الصلاحيات'; @override - String get setupSkip => 'Skip for now'; + String get setupSkip => 'التخطي الآن'; @override - String get setupStorageAccessRequired => 'Storage Access Required'; + String get setupStorageAccessRequired => 'إذن دخول وحدة التخزين مطلوب'; @override String get setupStorageAccessMessageAndroid11 => - 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + 'يتطلب أندرويد 11+ إذن \"الوصول إلى جميع الملفات\" لحفظ الملفات في مجلد التحميل الذي اخترته.'; @override - String get setupOpenSettings => 'Open Settings'; + String get setupOpenSettings => 'فتح الإعدادات'; @override String get setupPermissionDeniedMessage => - 'Permission denied. Please grant all permissions to continue.'; + 'تم رفض الإذن. الرجاء منح كافة الصلاحيات للمتابعة.'; @override String setupPermissionRequired(String permissionType) { - return '$permissionType Permission Required'; + return '$permissionType مطلوب الإذن'; } @override String setupPermissionRequiredMessage(String permissionType) { - return '$permissionType permission is required for the best experience. You can change this later in Settings.'; + return 'الإذن $permissionType مطلوب لأفضل التجربة. يمكنك تغيير هذا لاحقاً في الإعدادات.'; } @override - String get setupUseDefaultFolder => 'Use Default Folder?'; + String get setupUseDefaultFolder => 'استخدام المجلد الافتراضي؟'; @override String get setupNoFolderSelected => - 'No folder selected. Would you like to use the default Music folder?'; + 'لم يتم تحديد مجلد. هل ترغب في استخدام مجلد الموسيقى الافتراضي؟'; @override - String get setupUseDefault => 'Use Default'; + String get setupUseDefault => 'استخدم الافتراضي'; @override - String get setupDownloadLocationTitle => 'Download Location'; + String get setupDownloadLocationTitle => 'موقع حفظ التنزيلات'; @override String get setupDownloadLocationIosMessage => - 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + 'على iOS، يتم حفظ التحميلات إلى مجلد مستندات التطبيق. يمكنك الوصول إليها عبر تطبيق الملفات.'; @override - String get setupAppDocumentsFolder => 'App Documents Folder'; + String get setupAppDocumentsFolder => 'مجلد مستندات التطبيق'; @override String get setupAppDocumentsFolderSubtitle => - 'Recommended - accessible via Files app'; + 'موصى به - يمكن الوصول إليه عبر تطبيق الملفات'; @override - String get setupChooseFromFiles => 'Choose from Files'; + String get setupChooseFromFiles => 'اختر من الملفات'; @override - String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; + String get setupChooseFromFilesSubtitle => 'حدد iCloud أو موقع آخر'; @override String get setupIosEmptyFolderWarning => - 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + 'حدود iOS: لا يمكن تحديد مجلدات فارغة. اختر مجلدا مع ملف واحد على الأقل.'; @override String get setupIcloudNotSupported => - 'iCloud Drive is not supported. Please use the app Documents folder.'; + 'iCloud Drive غير مدعوم. الرجاء استخدام مجلد مستندات التطبيق.'; @override - String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; + String get setupDownloadInFlac => 'تحميل اغاني Spotify بصيغة FLAC'; @override - String get setupStorageGranted => 'Storage Permission Granted!'; + String get setupStorageGranted => 'تم منح إذن التخزين!'; @override - String get setupStorageRequired => 'Storage Permission Required'; + String get setupStorageRequired => 'الإذن مطلوب للتخزين'; @override String get setupStorageDescription => - 'SpotiFLAC needs storage permission to save your downloaded music files.'; + 'SpotiFLAC يحتاج إلى إذن تخزين لحفظ ملفات الموسيقى الخاصة بك التي تم تنزيلها.'; @override String get setupNotificationGranted => 'تم منح إذن الإشعارات!'; @override - String get setupNotificationEnable => 'Enable Notifications'; + String get setupNotificationEnable => 'تمكين الإشعارات'; @override - String get setupFolderChoose => 'Choose Download Folder'; + String get setupFolderChoose => 'اختر مجلد التحميل'; @override String get setupFolderDescription => - 'Select a folder where your downloaded music will be saved.'; + 'حدد مجلد حيث سيتم حفظ الموسيقى التي تم تنزيلها.'; @override - String get setupSelectFolder => 'Select Folder'; + String get setupSelectFolder => 'حدد الملف'; @override - String get setupEnableNotifications => 'Enable Notifications'; + String get setupEnableNotifications => 'تمكين الإشعارات'; @override String get setupNotificationBackgroundDescription => - 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + 'الحصول على إشعار حول تقدم التحميل وإكماله. هذا يساعدك على تتبع التنزيلات عندما يكون التطبيق في الخلفية.'; @override - String get setupSkipForNow => 'Skip for now'; + String get setupSkipForNow => 'التخطي الآن'; @override - String get setupNext => 'Next'; + String get setupNext => 'التالي'; @override - String get setupGetStarted => 'Get Started'; + String get setupGetStarted => 'إبدأ الآن'; @override String get setupAllowAccessToManageFiles => - 'Please enable \"Allow access to manage all files\" in the next screen.'; + 'الرجاء تمكين \"السماح بالوصول لإدارة جميع الملفات\" في الشاشة التالية.'; @override - String get setupLanguageTitle => 'Choose Language'; + String get setupLanguageTitle => 'اِختر اللغة'; @override String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; + 'حدد لغتك المفضلة للتطبيق. يمكنك تغيير هذا لاحقًا من الإعدادات.'; @override - String get setupLanguageSystemDefault => 'System Default'; + String get setupLanguageSystemDefault => 'الوضع الافتراضي للنظام'; @override - String get dialogCancel => 'Cancel'; + String get dialogCancel => 'إلغاء'; @override - String get dialogSave => 'Save'; + String get dialogSave => 'حفظ'; @override - String get dialogDelete => 'Delete'; + String get dialogDelete => 'حذف'; @override - String get dialogRetry => 'Retry'; + String get dialogRetry => 'إعادة المحاولة'; @override - String get dialogClear => 'Clear'; + String get dialogClear => 'محو'; @override - String get dialogDone => 'Done'; + String get dialogDone => 'تم'; @override - String get dialogImport => 'Import'; + String get dialogImport => 'استيراد'; @override - String get dialogDownload => 'Download'; + String get dialogDownload => 'تنزيل'; @override - String get previewPlay => 'Play preview'; + String get previewPlay => 'تشغيل المعاينة'; @override - String get previewStop => 'Stop preview'; + String get previewStop => 'إيقاف المعاينة'; @override - String get previewUnavailable => 'Preview unavailable'; + String get previewUnavailable => 'المعاينة غير متوفرة'; @override - String get dialogDiscard => 'Discard'; + String get dialogDiscard => 'تجاهل'; @override - String get dialogRemove => 'Remove'; + String get dialogRemove => 'إزالة'; @override - String get dialogUninstall => 'Uninstall'; + String get dialogUninstall => 'إلغاء التثبيت'; @override - String get dialogDiscardChanges => 'Discard Changes?'; + String get dialogDiscardChanges => 'تجاهل التغييرات؟'; @override String get dialogUnsavedChanges => - 'You have unsaved changes. Do you want to discard them?'; + 'لديك تغييرات غير محفوظة. هل تريد المتابعة دون حفظها؟'; @override - String get dialogClearAll => 'Clear All'; + String get dialogClearAll => 'مسح الكل'; @override - String get dialogRemoveExtension => 'Remove Extension'; + String get dialogRemoveExtension => 'إزالة إضافة'; @override String get dialogRemoveExtensionMessage => - 'Are you sure you want to remove this extension? This cannot be undone.'; + 'هل أنت متأكد من أنك تريد إزالة هذه الإضافة؟ لا يمكن التراجع عن ذلك.'; @override - String get dialogUninstallExtension => 'Uninstall Extension?'; + String get dialogUninstallExtension => 'إلغاء تثبيت الإضافة؟'; @override String dialogUninstallExtensionMessage(String extensionName) { - return 'Are you sure you want to remove $extensionName?'; + return 'هل أنت متأكد من أنك تريد إزالة $extensionName؟'; } @override - String get dialogClearHistoryTitle => 'Clear History'; + String get dialogClearHistoryTitle => 'مسح السجل'; @override String get dialogClearHistoryMessage => - 'Are you sure you want to clear all download history? This cannot be undone.'; + 'هل أنت متأكد من أنك تريد مسح كل سجل التنزيلات؟ لا يمكن التراجع عن هذا.'; @override - String get dialogDeleteSelectedTitle => 'Delete Selected'; + String get dialogDeleteSelectedTitle => 'حذف المحدد'; @override String dialogDeleteSelectedMessage(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'الأغاني', + one: 'أغنية', + many: 'أغنية', + few: 'أغانٍ', + two: 'أغنيتين', + zero: '', ); - return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; + return 'حذف $count $_temp0 من التاريخ؟\n\nسيؤدي هذا أيضا إلى حذف الملفات من وحدة التخزين.'; } @override - String get dialogImportPlaylistTitle => 'Import Playlist'; + String get dialogImportPlaylistTitle => 'استيراد قائمة تشغيل'; @override String dialogImportPlaylistMessage(int count) { - return 'Found $count tracks in CSV. Add them to download queue?'; + return 'تم العثور على $count مسارات في CSV. إضافتها إلى قائمة انتظار التنزيل؟'; } @override String csvImportTracks(int count) { - return '$count tracks from CSV'; + return '$count مسارات من CSV'; } @override String snackbarAddedToQueue(String trackName) { - return 'Added \"$trackName\" to queue'; + return 'تمت إضافة $trackName إلى قائمة الانتظار'; } @override String snackbarAddedTracksToQueue(int count) { - return 'Added $count tracks to queue'; + return 'تم إضافة $count أغانٍ إلى قائمة الانتظار'; } @override String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" already downloaded'; + return 'تم تنزيل $trackName بالفعل'; } @override String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" already exists in your library'; + return '$trackName موجود بالفعل في مكتبتك'; } @override - String get snackbarHistoryCleared => 'History cleared'; + String get snackbarHistoryCleared => 'تم مسح السجل.'; @override - String get snackbarCredentialsSaved => 'Credentials saved'; + String get snackbarCredentialsSaved => 'تم حفظ بيانات الاعتماد'; @override - String get snackbarCredentialsCleared => 'Credentials cleared'; + String get snackbarCredentialsCleared => 'تم مسح بيانات الاعتماد'; @override String snackbarDeletedTracks(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'أغانٍ', + one: 'أغنية', + many: 'أغنية', + few: 'أغانٍ', + two: 'أغنيتين', + zero: '', ); - return 'Deleted $count $_temp0'; + return 'تم حذف $count $_temp0'; } @override String snackbarCannotOpenFile(String error) { - return 'Cannot open file: $error'; + return 'تعذر فتح الملف: $error'; } @override - String get snackbarFillAllFields => 'Please fill all fields'; + String get snackbarFillAllFields => 'من فضلك قم بإدخال جميع البيانات'; @override - String get snackbarViewQueue => 'View Queue'; + String get snackbarViewQueue => 'عرض قائمة الانتظار'; @override String snackbarUrlCopied(String platform) { - return '$platform URL copied to clipboard'; + return 'رابط $platform تم نسخه إلى الحافظة'; } @override - String get snackbarFileNotFound => 'File not found'; + String get snackbarFileNotFound => 'لم يتم العثور على الملف'; @override - String get snackbarSelectExtFile => 'Please select a .spotiflac-ext file'; + String get snackbarSelectExtFile => 'الرجاء تحديد ملف .spotiflac-ext'; @override - String get snackbarProviderPrioritySaved => 'Provider priority saved'; + String get snackbarProviderPrioritySaved => 'تم حفظ أولوية المزود'; @override String get snackbarMetadataProviderSaved => - 'Metadata provider priority saved'; + 'تم حفظ أولوية مزود البيانات الوصفية (metadata)'; @override String snackbarExtensionInstalled(String extensionName) { - return '$extensionName installed.'; + return 'تم تثبيت $extensionName.'; } @override String snackbarExtensionUpdated(String extensionName) { - return '$extensionName updated.'; + return 'تم تحديث $extensionName.'; } @override - String get snackbarFailedToInstall => 'Failed to install extension'; + String get snackbarFailedToInstall => 'فشل تثبيت الإضافة'; @override - String get snackbarFailedToUpdate => 'Failed to update extension'; + String get snackbarFailedToUpdate => 'فشل تحديث الإضافة'; @override - String get errorRateLimited => 'Rate Limited'; + String get errorRateLimited => 'تم الوصول للحد الأقصى'; @override String get errorRateLimitedMessage => - 'Too many requests. Please wait a moment before searching again.'; + 'طلبات كثيرة جداً. الرجاء الانتظار قليلاً قبل البحث مرة أخرى.'; @override - String get errorNoTracksFound => 'No tracks found'; + String get errorNoTracksFound => 'لم يتم العثور على الأغنية'; @override - String get searchEmptyResultSubtitle => 'Try another keyword'; + String get searchEmptyResultSubtitle => 'جرّب كلمة مفتاحية أخرى'; @override - String get errorUrlNotRecognized => 'Link not recognized'; + String get errorUrlNotRecognized => 'رابط غير معروف'; @override String get errorUrlNotRecognizedMessage => - 'This link is not supported. Make sure the URL is correct and a compatible extension is installed.'; + 'هذا الرابط غير مدعوم. تأكد من أن الرابط صحيح وتثبيت إضافة متوافق.'; @override String get errorUrlFetchFailed => - 'Failed to load content from this link. Please try again.'; + 'فشل تحميل المحتوى من هذا الرابط. الرجاء المحاولة مرة أخرى.'; @override String errorMissingExtensionSource(String item) { - return 'Cannot load $item: missing extension source'; + return 'لا يمكن تحميل $item: مصدر الإضافة مفقود'; } @override - String get actionPause => 'Pause'; + String get actionPause => 'إيقاف مؤقت'; @override - String get actionResume => 'Resume'; + String get actionResume => 'استئناف'; @override - String get actionCancel => 'Cancel'; + String get actionCancel => 'إلغاء'; @override - String get actionSelectAll => 'Select All'; + String get actionSelectAll => 'تحديد الكل'; @override - String get actionDeselect => 'Deselect'; + String get actionDeselect => 'إلغاء التحديد'; @override - String get actionRemoveCredentials => 'Remove Credentials'; + String get actionRemoveCredentials => 'إزالة بيانات الاعتماد'; @override - String get actionSaveCredentials => 'Save Credentials'; + String get actionSaveCredentials => 'حفظ بيانات الاعتماد'; @override String selectionSelected(int count) { - return '$count selected'; + return 'تم تحديد $count'; } @override - String get selectionAllSelected => 'All tracks selected'; + String get selectionAllSelected => 'تم اختيار جميع الأغاني'; @override - String get selectionSelectToDelete => 'Select tracks to delete'; + String get selectionSelectToDelete => 'حدد الأغاني المراد حذفها'; @override String progressFetchingMetadata(int current, int total) { - return 'Fetching metadata... $current/$total'; + return 'جلب البيانات الوصفية (metadata)... $current/$total'; } @override - String get progressReadingCsv => 'Reading CSV...'; + String get progressReadingCsv => 'جاري قراءة CSV...'; @override - String get searchSongs => 'Songs'; + String get searchSongs => 'أغاني'; @override - String get searchArtists => 'Artists'; + String get searchArtists => 'فنانون'; @override - String get searchAlbums => 'Albums'; + String get searchAlbums => 'ألبومات'; @override - String get searchPlaylists => 'Playlists'; + String get searchPlaylists => 'قوائم التشغيل'; @override - String get searchSortTitle => 'Sort Results'; + String get searchSortTitle => 'فرز النتائج'; @override - String get searchSortDefault => 'Default'; + String get searchSortDefault => 'افتراضي'; @override - String get searchSortTitleAZ => 'Title (A-Z)'; + String get searchSortTitleAZ => 'العنوان (أ-ي)'; @override - String get searchSortTitleZA => 'Title (Z-A)'; + String get searchSortTitleZA => 'العنوان (ي-أ)'; @override - String get searchSortArtistAZ => 'Artist (A-Z)'; + String get searchSortArtistAZ => 'الفنان (أ-ي)'; @override - String get searchSortArtistZA => 'Artist (Z-A)'; + String get searchSortArtistZA => 'الفنان (ي-أ)'; @override - String get searchSortDurationShort => 'Duration (Shortest)'; + String get searchSortDurationShort => 'المدة (الأقصر)'; @override - String get searchSortDurationLong => 'Duration (Longest)'; + String get searchSortDurationLong => 'المدة (الأطول)'; @override - String get searchSortDateOldest => 'Release Date (Oldest)'; + String get searchSortDateOldest => 'تاريخ الإصدار (الأقدم)'; @override - String get searchSortDateNewest => 'Release Date (Newest)'; + String get searchSortDateNewest => 'تاريخ الإصدار (الأحدث)'; @override - String get tooltipPlay => 'Play'; + String get tooltipPlay => 'تشغيل'; @override - String get filenameFormat => 'Filename Format'; + String get filenameFormat => 'صيغة الملف'; @override - String get filenameShowAdvancedTags => 'Show advanced tags'; + String get filenameShowAdvancedTags => 'إظهار العلامات المتقدمة'; @override String get filenameShowAdvancedTagsDescription => - 'Enable formatted tags for track padding and date patterns'; + 'تمكين العلامات المنسقة لحشو المقطع الصوتي وأنماط التاريخ'; @override - String get folderOrganizationNone => 'No organization'; + String get folderOrganizationNone => 'لا توجد منظمة'; @override - String get folderOrganizationByPlaylist => 'By Playlist'; + String get folderOrganizationByPlaylist => 'حسب قائمة التشغيل'; @override String get folderOrganizationByPlaylistSubtitle => - 'Separate folder for each playlist'; + 'مجلد منفصل لكل قائمة تشغيل'; @override - String get folderOrganizationByArtist => 'By Artist'; + String get folderOrganizationByArtist => 'حسب الفنان'; @override - String get folderOrganizationByAlbum => 'By Album'; + String get folderOrganizationByAlbum => 'حسب الألبوم'; @override - String get folderOrganizationByArtistAlbum => 'Artist/Album'; + String get folderOrganizationByArtistAlbum => 'ألبوم/الفنان'; @override String get folderOrganizationDescription => - 'Organize downloaded files into folders'; + 'تنظيم الملفات التي تم تنزيلها في المجلدات'; @override - String get folderOrganizationNoneSubtitle => 'All files in download folder'; + String get folderOrganizationNoneSubtitle => 'جميع الملفات في مجلد التحميل'; @override - String get folderOrganizationByArtistSubtitle => - 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => 'مجلد منفصل لكل فنان'; @override - String get folderOrganizationByAlbumSubtitle => - 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => 'مجلد منفصل لكل قائمة تشغيل'; @override String get folderOrganizationByArtistAlbumSubtitle => - 'Nested folders for artist and album'; + 'مجلدات متداخلة للفنان و الألبوم'; @override - String get updateAvailable => 'Update Available'; + String get updateAvailable => 'هناك تحديث متاح'; @override - String get updateLater => 'Later'; + String get updateLater => 'ذكرني لاحقا'; @override - String get updateStartingDownload => 'Starting download...'; + String get updateStartingDownload => 'جاري بدء التنزيل...'; @override - String get updateDownloadFailed => 'Download failed'; + String get updateDownloadFailed => 'فشل التنزيل'; @override - String get updateFailedMessage => 'Failed to download update'; + String get updateFailedMessage => 'فشل تنزيل التحديث'; @override - String get updateNewVersionReady => 'A new version is ready'; + String get updateNewVersionReady => 'إصدار جديد جاهز'; @override - String get updateCurrent => 'Current'; + String get updateCurrent => 'الحالي'; @override - String get updateNew => 'New'; + String get updateNew => 'جديد'; @override - String get updateDownloading => 'Downloading...'; + String get updateDownloading => 'جاري التنزيل...'; @override - String get updateWhatsNew => 'What\'s New'; + String get updateWhatsNew => 'ما الجديد'; @override - String get updateDownloadInstall => 'Download & Install'; + String get updateDownloadInstall => 'تحميل وتثبيت'; @override - String get updateDontRemind => 'Don\'t remind'; + String get updateDontRemind => 'لا تذكّرني'; @override - String get providerPriorityTitle => 'Provider Priority'; + String get providerPriorityTitle => 'أولوية مقدم الخدمة'; @override String get providerPriorityDescription => - 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + 'اسحب لإعادة ترتيب مزودي التحميل. سيجرب التطبيق مزودي الخدمات من الأعلى إلى الأسفل عند تحميل المسار.'; @override String get providerPriorityInfo => - 'If a track is not available on the first provider, the app will automatically try the next one.'; + 'إذا كانت الأغنية غير متوفرة عند أول مزود، فإن التطبيق سيجرب تلقائياً المزود التالي.'; @override - String get providerPriorityFallbackExtensionsTitle => 'Extension Fallback'; + String get providerPriorityFallbackExtensionsTitle => + 'المكون الإضافي الاحتياطي'; @override String get providerPriorityFallbackExtensionsDescription => - 'Choose which installed download extensions can be used during automatic fallback.'; + 'اختر إضافات التحميل المثبتة التي يمكن استخدامها أثناء الرجوع التلقائي للمزود الاحتياطي.'; @override String get providerPriorityFallbackExtensionsHint => - 'Only enabled extensions with download-provider capability are listed here.'; + 'الإضافات المفعلة فقط مع قدرة توفير التنزيل مدرجة هنا.'; @override - String get providerBuiltIn => 'Legacy'; + String get providerBuiltIn => 'قديم'; @override - String get providerExtension => 'Extension'; + String get providerExtension => 'الإضافة'; @override - String get metadataProviderPriorityTitle => 'Metadata Priority'; + String get metadataProviderPriorityTitle => + 'أولوية البيانات الوصفية (metadata)'; @override String get metadataProviderPriorityDescription => - 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + 'اسحب لإعادة ترتيب موفري البيانات الوصفية (metadata). سيحاول التطبيق موفري البيانات الوصفية (metadata) من الأعلى إلى الأسفل عند البحث عن المسارات وجلب البيانات الوصفية (metadata).'; @override String get metadataProviderPriorityInfo => - 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + 'Deezer ليس لديه حدود للطلبات ومُوصى به كأساسي. Spotify لديه حد للطلبات وقد لا يعمل بعد عدة عمليات.'; @override - String get metadataNoRateLimits => 'No rate limits'; + String get metadataNoRateLimits => 'لا حدود للطلبات'; @override - String get metadataMayRateLimit => 'May rate limit'; + String get metadataMayRateLimit => 'قد يفرض حدودا للطلب'; @override - String get logTitle => 'Logs'; + String get logTitle => 'السجلات'; @override - String get logCopied => 'Logs copied to clipboard'; + String get logCopied => 'تم نسخ السجلات إلى الحافظة'; @override - String get logSearchHint => 'Search logs...'; + String get logSearchHint => 'البحث في السجلات...'; @override - String get logFilterLevel => 'Level'; + String get logFilterLevel => 'المستوى'; @override - String get logFilterSection => 'Filter'; + String get logFilterSection => 'فرز'; @override - String get logShareLogs => 'Share logs'; + String get logShareLogs => 'مشاركة السجلات'; @override - String get logClearLogs => 'Clear logs'; + String get logClearLogs => 'حذف السجل'; @override - String get logClearLogsTitle => 'Clear Logs'; + String get logClearLogsTitle => 'حذف السجل'; @override - String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; + String get logClearLogsMessage => + 'هل أنت متأكد من رغبتك في مسح جميع السجلات؟'; @override - String get logFilterBySeverity => 'Filter logs by severity'; + String get logFilterBySeverity => 'تصفية السجلات حسب الخطورة'; @override - String get logNoLogsYet => 'No logs yet'; + String get logNoLogsYet => 'لا توجد سجلات بعد'; @override - String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; + String get logNoLogsYetSubtitle => 'ستظهر السجلات هنا عند استخدام التطبيق'; @override String logEntriesFiltered(int count) { - return 'Entries ($count filtered)'; + return 'الإدخالات ($count تم تصفيتها)'; } @override String logEntries(int count) { - return 'Entries ($count)'; + return 'الإدخالات ($count)'; } @override - String get credentialsTitle => 'Spotify Credentials'; + String get credentialsTitle => 'بيانات اعتماد Spotify'; @override String get credentialsDescription => - 'Enter your Client ID and Secret to use your own Spotify application quota.'; + 'أدخل معرف العميل الخاص بك و الكود السري لاستخدام حصة تطبيق Spotify الخاصة بك.'; @override String get credentialsClientId => 'Client ID'; @override - String get credentialsClientIdHint => 'Paste Client ID'; + String get credentialsClientIdHint => 'لصق Client ID'; @override String get credentialsClientSecret => 'Client Secret'; @override - String get credentialsClientSecretHint => 'Paste Client Secret'; + String get credentialsClientSecretHint => 'لصق Client Secret'; @override - String get channelStable => 'Stable'; + String get channelStable => 'مستقر'; @override - String get channelPreview => 'Preview'; + String get channelPreview => 'تجريبي'; @override - String get sectionSearchSource => 'Search Source'; + String get sectionSearchSource => 'مصدر البحث'; @override - String get sectionDownload => 'Download'; + String get sectionDownload => 'التحميل'; @override - String get sectionPerformance => 'Performance'; + String get sectionPerformance => 'الأداء'; @override - String get sectionApp => 'App'; + String get sectionApp => 'التطبيق'; @override - String get sectionData => 'Data'; + String get sectionData => 'البيانات'; @override - String get sectionDebug => 'Debug'; + String get sectionDebug => 'تصحيح الأخطاء'; @override - String get sectionService => 'Service'; + String get sectionService => 'الخدمة'; @override - String get sectionAudioQuality => 'Audio Quality'; + String get sectionAudioQuality => 'جودة الصوت'; @override - String get sectionFileSettings => 'File Settings'; + String get sectionFileSettings => 'إعدادات الملف'; @override - String get sectionLyrics => 'Lyrics'; + String get sectionLyrics => 'كلمات الاغنية'; @override - String get lyricsMode => 'Lyrics Mode'; + String get lyricsMode => 'وضع كلمات الأغنية'; @override String get lyricsModeDescription => - 'Choose how lyrics are saved with your downloads'; + 'اختر كيفية حفظ كلمات الأغاني مع التنزيلات الخاصة بك'; @override - String get lyricsModeEmbed => 'Embed in file'; + String get lyricsModeEmbed => 'تضمين في الملف'; @override - String get lyricsModeEmbedSubtitle => 'Lyrics stored inside FLAC metadata'; + String get lyricsModeEmbedSubtitle => + 'كلمات الأغاني مخزنة داخل بيانات تعريف FLAC'; @override - String get lyricsModeExternal => 'External .lrc file'; + String get lyricsModeExternal => 'ملف .lrc منفصل'; @override String get lyricsModeExternalSubtitle => - 'Separate .lrc file for players like Samsung Music'; + 'فصل ملف .lrc لمشغلي الأغاني مثل Samsung Music'; @override - String get lyricsModeBoth => 'Both'; + String get lyricsModeBoth => 'كلاهما'; @override - String get lyricsModeBothSubtitle => 'Embed and save .lrc file'; + String get lyricsModeBothSubtitle => 'تضمين وحفظ ملف .lrc'; @override - String get sectionColor => 'Color'; + String get sectionColor => 'اللون'; @override - String get sectionTheme => 'Theme'; + String get sectionTheme => 'الثيم'; @override - String get sectionLayout => 'Layout'; + String get sectionLayout => 'التخطيط'; @override - String get sectionLanguage => 'Language'; + String get sectionLanguage => 'اللّغة'; @override - String get appearanceLanguage => 'App Language'; + String get appearanceLanguage => 'لغة التطبيق'; @override - String get settingsAppearanceSubtitle => 'Theme, colors, display'; + String get settingsAppearanceSubtitle => 'السمة والألوان والعرض'; @override - String get settingsDownloadSubtitle => 'Service, quality, fallback'; + String get settingsDownloadSubtitle => 'الخدمة والجودة الأحتياطات'; @override - String get settingsOptionsSubtitle => 'Fallback, metadata, lyrics, cover art'; + String get settingsOptionsSubtitle => + 'الإحتياطات، البيانات الوصفية (metadata)، كلمات الأغاني، غلاف الأغنية'; @override - String get settingsExtensionsSubtitle => 'Manage download providers'; + String get settingsExtensionsSubtitle => 'إدارة موفري التحميل'; @override - String get settingsLogsSubtitle => 'View app logs for debugging'; + String get settingsLogsSubtitle => 'عرض سجلات التطبيقات لتصحيح الأخطاء'; @override - String get loadingSharedLink => 'Loading shared link...'; + String get loadingSharedLink => 'تحميل الرابط المشترك...'; @override - String get pressBackAgainToExit => 'Press back again to exit'; + String get pressBackAgainToExit => 'اضغط رجوع مجددًا للخروج'; @override String downloadAllCount(int count) { - return 'Download All ($count)'; + return 'تنزيل الكل ($count)'; } @override @@ -1181,336 +1186,341 @@ class AppLocalizationsAr extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tracks', - one: '1 track', + other: '$count أغانٍ', + one: 'أغنية واحدة', + many: '$count أغانٍ', + few: '$count أغانٍ', + two: 'أغنيتين', + zero: 'لا توجد أغاني محددة', ); return '$_temp0'; } @override - String get trackCopyFilePath => 'Copy file path'; + String get trackCopyFilePath => 'نسخ مسار الملف'; @override - String get trackRemoveFromDevice => 'Remove from device'; + String get trackRemoveFromDevice => 'حذف من الجهاز'; @override - String get trackLoadLyrics => 'Load Lyrics'; + String get trackLoadLyrics => 'تحميل كلمات الأغاني'; @override - String get trackMetadata => 'Metadata'; + String get trackMetadata => 'البيانات الوصفية (Metadata)'; @override - String get trackFileInfo => 'File Info'; + String get trackFileInfo => 'معلومات الملف'; @override - String get trackLyrics => 'Lyrics'; + String get trackLyrics => 'كلمات الاغنية'; @override - String get trackFileNotFound => 'File not found'; + String get trackFileNotFound => 'لم يتم العثور على الملف'; @override - String get trackOpenInDeezer => 'Open in Deezer'; + String get trackOpenInDeezer => 'فتح في Deezer'; @override - String get trackOpenInSpotify => 'Open in Spotify'; + String get trackOpenInSpotify => 'فتح في Spotify'; @override - String get trackTrackName => 'Track name'; + String get trackTrackName => 'اسم الأغنية'; @override - String get trackArtist => 'Artist'; + String get trackArtist => 'الفنان'; @override - String get trackAlbumArtist => 'Album artist'; + String get trackAlbumArtist => 'فنان الألبوم'; @override - String get trackAlbum => 'Album'; + String get trackAlbum => 'الألبوم'; @override - String get trackTrackNumber => 'Track number'; + String get trackTrackNumber => 'رقم الأغنية'; @override - String get trackDiscNumber => 'Disc number'; + String get trackDiscNumber => 'رقم القرص'; @override - String get trackDuration => 'Duration'; + String get trackDuration => 'المدة'; @override - String get trackAudioQuality => 'Audio quality'; + String get trackAudioQuality => 'جودة الصوت'; @override - String get trackReleaseDate => 'Release date'; + String get trackReleaseDate => 'تاريخ الإصدار'; @override - String get trackGenre => 'Genre'; + String get trackGenre => 'النوع'; @override - String get trackLabel => 'Label'; + String get trackLabel => 'تصنيف'; @override - String get trackCopyright => 'Copyright'; + String get trackCopyright => 'حقوق الطبع و النشر'; @override - String get trackDownloaded => 'Downloaded'; + String get trackDownloaded => 'تم التنزيل'; @override - String get trackCopyLyrics => 'Copy lyrics'; + String get trackCopyLyrics => 'نسخ كلمات الأغنية'; @override String trackLyricsSource(String source) { - return 'Source: $source'; + return 'المصدر: $source'; } @override - String get trackLyricsNotAvailable => 'Lyrics not available for this track'; + String get trackLyricsNotAvailable => 'كلمات الأغنية غير متوفرة لهذه الأغنية'; @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; + String get trackLyricsNotInFile => + 'لم يتم العثور على كلمات الأغاني في هذا الملف'; @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; + String get trackFetchOnlineLyrics => 'جلب من الإنترنت'; @override - String get trackLyricsTimeout => 'Request timed out. Try again later.'; + String get trackLyricsTimeout => 'انتهت مهلة الطلب. حاول مرة أخرى لاحقاً.'; @override - String get trackLyricsLoadFailed => 'Failed to load lyrics'; + String get trackLyricsLoadFailed => 'فشل تحميل كلمات الأغاني'; @override - String get trackEmbedLyrics => 'Embed Lyrics'; + String get trackEmbedLyrics => 'تضمين كلمات الأغنية'; @override - String get trackLyricsEmbedded => 'Lyrics embedded successfully'; + String get trackLyricsEmbedded => 'تمت إضافة كلمات الأغنية بنجاح'; @override - String get trackInstrumental => 'Instrumental track'; + String get trackInstrumental => 'المسار الآلي'; @override - String get trackCopiedToClipboard => 'Copied to clipboard'; + String get trackCopiedToClipboard => 'تم النسخ إلى الحافظة'; @override - String get trackDeleteConfirmTitle => 'Remove from device?'; + String get trackDeleteConfirmTitle => 'حذف من الجهاز؟'; @override String get trackDeleteConfirmMessage => - 'This will permanently delete the downloaded file and remove it from your history.'; + 'سيؤدي هذا إلى حذف الملف الذي تم تنزيله وإزالته من السجل الخاص بك بشكل دائم.'; @override - String get dateToday => 'Today'; + String get dateToday => 'اليوم'; @override - String get dateYesterday => 'Yesterday'; + String get dateYesterday => 'الأمس'; @override String dateDaysAgo(int count) { - return '$count days ago'; + return 'قبل $count أيام'; } @override String dateWeeksAgo(int count) { - return '$count weeks ago'; + return 'قبل $count أسابيع'; } @override String dateMonthsAgo(int count) { - return '$count months ago'; + return 'منذ $count أشهر'; } @override - String get storeFilterAll => 'All'; + String get storeFilterAll => 'الكل'; @override - String get storeFilterMetadata => 'Metadata'; + String get storeFilterMetadata => 'البيانات الوصفية (Metadata)'; @override - String get storeFilterDownload => 'Download'; + String get storeFilterDownload => 'التحميل'; @override - String get storeFilterUtility => 'Utility'; + String get storeFilterUtility => 'الأدوات'; @override - String get storeFilterLyrics => 'Lyrics'; + String get storeFilterLyrics => 'كلمات الأغنية'; @override - String get storeFilterIntegration => 'Integration'; + String get storeFilterIntegration => 'التكامل'; @override - String get storeClearFilters => 'Clear filters'; + String get storeClearFilters => 'حذف الفلاتر'; @override - String get storeAddRepoTitle => 'Add Extension Repository'; + String get storeAddRepoTitle => 'إضافة مستودع إضافات'; @override String get storeAddRepoDescription => - 'Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.'; + 'أدخل عنوان مستودع GitHub الذي يحتوي على ملف registry.json لتصفح وتثبيت الإضافات.'; @override - String get storeRepoUrlLabel => 'Repository URL'; + String get storeRepoUrlLabel => 'رابط المستودع'; @override String get storeRepoUrlHint => 'https://github.com/user/repo'; @override String get storeRepoUrlHelper => - 'e.g. https://github.com/user/extensions-repo'; + 'مثال: https://github.com/user/extensions-repo'; @override - String get storeAddRepoButton => 'Add Repository'; + String get storeAddRepoButton => 'أضف مستودعًا'; @override - String get storeChangeRepoTooltip => 'Change repository'; + String get storeChangeRepoTooltip => 'تغيير المستودع'; @override - String get storeRepoDialogTitle => 'Extension Repository'; + String get storeRepoDialogTitle => 'مستودع الإضافات'; @override - String get storeRepoDialogCurrent => 'Current repository:'; + String get storeRepoDialogCurrent => 'المستودع الحالي:'; @override - String get storeNewRepoUrlLabel => 'New Repository URL'; + String get storeNewRepoUrlLabel => 'رابط المستودع'; @override - String get storeLoadError => 'Failed to load repository'; + String get storeLoadError => 'فشل تحميل المستودع'; @override - String get storeEmptyNoExtensions => 'No extensions available'; + String get storeEmptyNoExtensions => 'لا توجد إضافات متاحة'; @override - String get storeEmptyNoResults => 'No extensions found'; + String get storeEmptyNoResults => 'لم يتم العثور على إضافات'; @override - String get extensionDefaultProvider => 'Default Search'; + String get extensionDefaultProvider => 'البحث الافتراضي'; @override String get extensionDefaultProviderSubtitle => - 'Use the default metadata search'; + 'استخدام البحث الافتراضي عن البيانات الوصفية'; @override - String get extensionAuthor => 'Author'; + String get extensionAuthor => 'المؤلف'; @override String get extensionId => 'ID'; @override - String get extensionError => 'Error'; + String get extensionError => 'خطأ'; @override - String get extensionCapabilities => 'Capabilities'; + String get extensionCapabilities => 'الإمكانيات'; @override - String get extensionMetadataProvider => 'Metadata Provider'; + String get extensionMetadataProvider => 'مزود بيانات التعريف'; @override - String get extensionDownloadProvider => 'Download Provider'; + String get extensionDownloadProvider => 'مزود التحميل'; @override - String get extensionLyricsProvider => 'Lyrics Provider'; + String get extensionLyricsProvider => 'موفر كلمات الأغاني'; @override - String get extensionUrlHandler => 'URL Handler'; + String get extensionUrlHandler => 'معالج الروابط'; @override - String get extensionQualityOptions => 'Quality Options'; + String get extensionQualityOptions => 'خيارات الجودة'; @override - String get extensionPostProcessingHooks => 'Post-Processing Hooks'; + String get extensionPostProcessingHooks => 'روابط المعالجة اللاحقة'; @override - String get extensionPermissions => 'Permissions'; + String get extensionPermissions => 'الصلاحيات'; @override - String get extensionSettings => 'Settings'; + String get extensionSettings => 'الإعدادات'; @override - String get extensionRemoveButton => 'Remove Extension'; + String get extensionRemoveButton => 'حذف الإضافة'; @override - String get extensionUpdated => 'Updated'; + String get extensionUpdated => 'تاريخ التحديث'; @override - String get extensionMinAppVersion => 'Min App Version'; + String get extensionMinAppVersion => 'اصدار التطبيق الأدنى'; @override - String get extensionCustomTrackMatching => 'Custom Track Matching'; + String get extensionCustomTrackMatching => 'مطابقة المسار المخصص'; @override - String get extensionPostProcessing => 'Post-Processing'; + String get extensionPostProcessing => 'مرحلة ما بعد المعالجة'; @override String extensionHooksAvailable(int count) { - return '$count hook(s) available'; + return 'متاح $count روابط'; } @override String extensionPatternsCount(int count) { - return '$count pattern(s)'; + return '$count أنماط'; } @override String extensionStrategy(String strategy) { - return 'Strategy: $strategy'; + return 'الاستراتيجية: $strategy'; } @override - String get extensionsProviderPrioritySection => 'Provider Priority'; + String get extensionsProviderPrioritySection => 'أولوية مزود الخدمة'; @override - String get extensionsInstalledSection => 'Installed Extensions'; + String get extensionsInstalledSection => 'الإضافات المُثبّتة'; @override - String get extensionsNoExtensions => 'No extensions installed'; + String get extensionsNoExtensions => 'لا توجد إضافات مثبتة'; @override String get extensionsNoExtensionsSubtitle => - 'Install .spotiflac-ext files to add new providers'; + 'تثبيت ملفات .spotiflac-ext لإضافة موفرين جدد'; @override - String get extensionsInstallButton => 'Install Extension'; + String get extensionsInstallButton => 'تثبيت الإضافة'; @override String get extensionsInfoTip => - 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + 'يمكن للإضافات تزويدك بموفري بيانات التعريف الجديدة وتحميلها. ثبت الإضافات من مصادر موثوق بها فقط.'; @override - String get extensionsInstalledSuccess => 'Extension installed successfully'; + String get extensionsInstalledSuccess => 'تم تثبيت الإضافة بنجاح'; @override String extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; + return 'تم تثبيت $count إضافات بنجاح'; } @override String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; + return 'تم تثبيت $installed من أصل $attempted إضافات'; } @override - String get extensionsDownloadPriority => 'Download Priority'; + String get extensionsDownloadPriority => 'أولوية التحميل'; @override - String get extensionsDownloadPrioritySubtitle => 'Set download service order'; + String get extensionsDownloadPrioritySubtitle => 'تعيين ترتيب خدمة التحميل'; @override - String get extensionsFallbackTitle => 'Fallback Extensions'; + String get extensionsFallbackTitle => 'الإضافات الاحتياطية'; @override String get extensionsFallbackSubtitle => - 'Choose which installed download extensions can be used as fallback'; + 'اختر إضافات التحميل المثبتة التي يمكن استخدامها أثناء الرجوع التلقائي للمزود الاحتياطي'; @override String get extensionsNoDownloadProvider => - 'No extensions with download provider'; + 'لا توجد إضافات مع إمكانية مزود التحميل'; @override - String get extensionsMetadataPriority => 'Metadata Priority'; + String get extensionsMetadataPriority => 'أولوية البيانات الوصفية (metadata)'; @override String get extensionsMetadataPrioritySubtitle => - 'Set search & metadata source order'; + 'تعيين ترتيب مصدر البحث والبيانات الوصفية'; @override String get extensionsNoMetadataProvider => - 'No extensions with metadata provider'; + 'لا توجد إضافات مع إمكانية مزود البيانات الوصفية'; @override String get extensionsSearchProvider => 'Search Provider'; @@ -1538,125 +1548,124 @@ class AppLocalizationsAr extends AppLocalizations { String get qualityHiResFlac => 'Hi-Res FLAC'; @override - String get qualityHiResFlacSubtitle => '24-bit / up to 96kHz'; + String get qualityHiResFlacSubtitle => '24 بت / ما يصل إلى 96 كيلو هرتز'; @override String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; @override - String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; + String get qualityHiResFlacMaxSubtitle => '24 بت / ما يصل إلى 192 كيلو هرتز'; @override - String get downloadLossy320 => 'Lossy 320kbps'; + String get downloadLossy320 => '320kbps مضغوط'; @override - String get downloadLossyFormat => 'Lossy Format'; + String get downloadLossyFormat => 'تنسيق مضغوط'; @override - String get downloadLossy320Format => 'Lossy 320kbps Format'; + String get downloadLossy320Format => 'تنسيق 320kbps مضغوط'; @override String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; + 'اختر التنسيق النهائي للتنزيلات المضغوطة 320kbps. سيتم تحويل البث الأصلي إلى التنسيق المحدد عند الحاجة.'; @override String get downloadLossyMp3 => 'MP3 320kbps'; @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; + String get downloadLossyMp3Subtitle => 'أفضل توافق، ~10 ميغابايت لكل أغنية'; @override String get downloadLossyAac => 'AAC/M4A 320kbps'; @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; + String get downloadLossyAacSubtitle => 'أفضل توافق للجوال، صيغة M4A'; @override String get downloadLossyOpus256 => 'Opus 256kbps'; @override String get downloadLossyOpus256Subtitle => - 'Best quality Opus, ~8MB per track'; + 'أفضل جودة Opus, حوالي 8 ميغابايت لكل أغنية'; @override String get downloadLossyOpus128 => 'Opus 128kbps'; @override - String get downloadLossyOpus128Subtitle => 'Smallest size, ~4MB per track'; + String get downloadLossyOpus128Subtitle => 'أصغر حجم, ~4 ميغابايت لكل مسار'; @override - String get qualityNote => - 'Actual quality depends on track availability from the service'; + String get qualityNote => 'الجودة الفعلية تعتمد على المسار المتوفر من الخدمة'; @override - String get downloadAskBeforeDownload => 'Ask Before Download'; + String get downloadAskBeforeDownload => 'اسأل قبل التحميل'; @override - String get downloadDirectory => 'Download Directory'; + String get downloadDirectory => 'مسار التنزيل'; @override - String get downloadSeparateSinglesFolder => 'Separate Singles Folder'; + String get downloadSeparateSinglesFolder => 'فصل مجلد الفرديات'; @override - String get downloadAlbumFolderStructure => 'Album Folder Structure'; + String get downloadAlbumFolderStructure => 'هيكل مجلد الألبوم'; @override String get albumFolderStructureDescription => 'Choose how album folders are structured'; @override - String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; + String get downloadUseAlbumArtistForFolders => + 'استخدام فنان الألبوم للمجلدات'; @override - String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; + String get downloadUsePrimaryArtistOnly => 'الفنان الأساسي فقط للمجلدات'; @override String get downloadUsePrimaryArtistOnlyEnabled => - 'Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)'; + 'الفنانين المتميزين الذين تمت إزالتهم من اسم المجلد (على سبيل المثال جاستين بيبر، كويفو -> جاستين بيبر)'; @override String get downloadUsePrimaryArtistOnlyDisabled => - 'Full artist string used for folder name'; + 'اسم الفنان الكامل المستخدمة لاسم المجلد'; @override - String get downloadSelectQuality => 'Select Quality'; + String get downloadSelectQuality => 'تحديد الجودة'; @override - String get downloadFrom => 'Download From'; + String get downloadFrom => 'تحميل من'; @override - String get appearanceAmoledDark => 'AMOLED Dark'; + String get appearanceAmoledDark => 'الوضع الداكن AMOLED'; @override - String get appearanceAmoledDarkSubtitle => 'Pure black background'; + String get appearanceAmoledDarkSubtitle => 'خلفية سوداء تامة'; @override - String get queueClearAll => 'Clear All'; + String get queueClearAll => 'مسح الكل'; @override String get queueClearAllMessage => - 'Are you sure you want to clear all downloads?'; + 'هل أنت متأكد من أنك تريد مسح جميع التنزيلات؟'; @override - String get settingsAutoExportFailed => 'Auto-export failed downloads'; + String get settingsAutoExportFailed => 'فشل التصدير التلقائي للتنزيلات'; @override String get settingsAutoExportFailedSubtitle => - 'Save failed downloads to TXT file automatically'; + 'حفظ التنزيلات التي فشلت إلى ملف TXT تلقائيًا'; @override - String get settingsDownloadNetwork => 'Download Network'; + String get settingsDownloadNetwork => 'تحميل الشبكة'; @override - String get settingsDownloadNetworkAny => 'WiFi + Mobile Data'; + String get settingsDownloadNetworkAny => 'WiFi + بيانات الجوال'; @override - String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; + String get settingsDownloadNetworkWifiOnly => 'WiFi فقط'; @override String get settingsDownloadNetworkSubtitle => - 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + 'اختر الشبكة التي تريد استخدامها للتنزيلات. عند تعيين WiFi فقط، التنزيلات لن تعمل على بيانات الجوال.'; @override String get settingsConcurrentDownloads => 'Concurrent downloads'; @@ -1674,43 +1683,44 @@ class AppLocalizationsAr extends AppLocalizations { } @override - String get albumFolderArtistAlbum => 'Artist / Album'; + String get albumFolderArtistAlbum => 'ألبوم / الفنان'; @override - String get albumFolderArtistAlbumSubtitle => 'Albums/Artist Name/Album Name/'; + String get albumFolderArtistAlbumSubtitle => + 'الألبومات / اسم الفنان / اسم الألبوم'; @override - String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; + String get albumFolderArtistYearAlbum => 'الفنان / [Year] ألبوم'; @override String get albumFolderArtistYearAlbumSubtitle => - 'Albums/Artist Name/[2005] Album Name/'; + 'الألبومات/اسم الفنان /[2005] اسم الألبوم/'; @override - String get albumFolderAlbumOnly => 'Album Only'; + String get albumFolderAlbumOnly => 'الألبوم فقط'; @override - String get albumFolderAlbumOnlySubtitle => 'Albums/Album Name/'; + String get albumFolderAlbumOnlySubtitle => 'الألبومات/اسم الألبوم/'; @override - String get albumFolderYearAlbum => '[Year] Album'; + String get albumFolderYearAlbum => '[Year] الألبوم'; @override - String get albumFolderYearAlbumSubtitle => 'Albums/[2005] Album Name/'; + String get albumFolderYearAlbumSubtitle => 'الألبومات/[2005] اسم الألبوم/'; @override - String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; + String get albumFolderArtistAlbumSingles => 'الفنان / الألبوم + المفردات'; @override String get albumFolderArtistAlbumSinglesSubtitle => - 'Artist/Album/ and Artist/Singles/'; + 'الفنان/الألبوم و الفنان / المفردات'; @override - String get albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; + String get albumFolderArtistAlbumFlat => 'فنان / ألبوم (منفردات سطحية)'; @override String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; + 'الفنان / الألبوم والفنان / الأغنية.flac'; @override String get downloadedAlbumDeleteSelected => 'Delete Selected'; diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart index 5cf13fea..7228075b 100644 --- a/lib/l10n/app_localizations_de.dart +++ b/lib/l10n/app_localizations_de.dart @@ -1626,7 +1626,7 @@ class AppLocalizationsDe extends AppLocalizations { @override String get albumFolderStructureDescription => - 'Ordnerstruktur für Alben festlegen'; + 'Choose how album folders are structured'; @override String get downloadUseAlbumArtistForFolders => diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart index bc9af73e..a107cd74 100644 --- a/lib/l10n/app_localizations_es.dart +++ b/lib/l10n/app_localizations_es.dart @@ -4811,7 +4811,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { AppLocalizationsEsEs() : super('es_ES'); @override - String get appName => 'SpotiFLAC Mobile'; + String get appName => 'SpotiFLAC Móvil'; @override String get navHome => 'Inicio'; @@ -4832,14 +4832,14 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get homeSubtitle => 'Pega una URL compatible o busca por nombre'; @override - String get homeEmptyTitle => 'J'; + String get homeEmptyTitle => 'Aún no hay proveedores de búsqueda'; @override String get homeEmptySubtitle => 'Instalar una extensión para continuar.'; @override String get homeSupports => - 'Soporte de URL: pista, álbum, listas de reproducción, artistas'; + 'Compatible con: URL de pistas, álbumes, listas de reproducción y artistas'; @override String get homeRecent => 'Recientes'; @@ -4885,11 +4885,12 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get downloadFilenameFormat => 'Formato del nombre del archivo'; @override - String get downloadSingleFilenameFormat => 'Formato de título único'; + String get downloadSingleFilenameFormat => + 'Formato del nombre de archivo para pistas individuales'; @override String get downloadSingleFilenameFormatDescription => - 'Patrón de título para sencillos y mini-álbumes. Usa las mismas etiquetas que un álbum completo.'; + 'Patrón de nombre de archivo para sencillos y EP. Utiliza las mismas etiquetas que el formato para álbumes.'; @override String get downloadFolderOrganization => 'Organización de carpetas'; @@ -4907,14 +4908,14 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get appearanceThemeDark => 'Oscuro'; @override - String get appearanceDynamicColor => 'Color dinámico'; + String get appearanceDynamicColor => 'Color Dinámico'; @override String get appearanceDynamicColorSubtitle => 'Usar colores de tu fondo de pantalla'; @override - String get appearanceHistoryView => 'Vista de Historial'; + String get appearanceHistoryView => 'Vista del Historial'; @override String get appearanceHistoryViewList => 'Lista'; @@ -4926,11 +4927,11 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get optionsTitle => 'Opciones'; @override - String get optionsPrimaryProvider => 'Proveedor principal'; + String get optionsPrimaryProvider => 'Proveedor Principal'; @override String get optionsPrimaryProviderSubtitle => - 'Servicio usado para buscar por canción o nombre del álbum'; + 'Servicio utilizado para buscar por nombre de pista o álbum'; @override String optionsUsingExtension(String extensionName) { @@ -4938,89 +4939,128 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { } @override - String get optionsDefaultSearchTab => 'Pestaña de búsqueda por defecto'; + String get optionsDefaultSearchTab => 'Pestaña de búsqueda predeterminada'; @override String get optionsDefaultSearchTabSubtitle => - 'Escoger cuál pestaña se abre primero para nuevos resultados de búsqueda.'; + 'Elige qué pestaña se abre primero al mostrar nuevos resultados de búsqueda.'; @override String get optionsSwitchBack => - 'Choose the default search provider to switch back from an extension'; + 'Elija el proveedor de búsqueda por defecto para volver de una extensión'; @override - String get optionsAutoFallback => 'Alternativa automática'; + String get optionsAutoFallback => 'Cambio automático'; @override String get optionsAutoFallbackSubtitle => - 'Pruebe otros servicios si falla la descarga'; + 'Probar otros servicios si la descarga falla'; @override String get optionsUseExtensionProviders => 'Usar proveedores de extensiones'; @override String get optionsUseExtensionProvidersOn => - 'Extension providers are enabled'; + 'Proveedores de extensiones habilitados'; @override String get optionsUseExtensionProvidersOff => - 'Extension providers are required'; + 'Proveedores de extensiones habilitados'; @override String get optionsEmbedLyrics => 'Incrustar letras'; @override String get optionsEmbedLyricsSubtitle => - 'Guardar letras sincronizadas con las pistas descargadas'; + 'Guarda las letras sincronizadas junto a las pistas descargadas'; @override - String get optionsMaxQualityCover => 'Carátula de calidad máxima'; + String get optionsMaxQualityCover => 'Máxima calidad de portada'; @override String get optionsMaxQualityCoverSubtitle => - 'Descargar carátula de resolución máxima'; + 'Descargar la portada en la mayor resolución'; @override - String get optionsReplayGain => 'Nivelación de ganancia'; + String get optionsReplayGain => 'ReplayGain'; @override String get optionsReplayGainSubtitleOn => - 'Analizar volumen e incrustar etiquetas de RG (EBU-R128)'; + 'Analizar la sonoridad e incrustar etiquetas ReplayGain (EBU R128)'; @override String get optionsReplayGainSubtitleOff => - 'Desactivado: sin etiquetas de normalización de volumen'; + 'Desactivado: no hay etiquetas de normalización de sonoridad'; + + @override + String get trackReplayGain => 'Reescanear ReplayGain'; + + @override + String get trackReplayGainSubtitle => + 'Analizar el volumen y guardar las etiquetas ReplayGain'; + + @override + String get trackReplayGainScanning => 'Analizando el nivel de volumen...'; + + @override + String get trackReplayGainSuccess => 'Etiquetas ReplayGain agregadas'; + + @override + String get trackReplayGainFailed => + 'No se pudieron agregar las etiquetas ReplayGain'; + + @override + String selectionReplayGainCount(int count) { + return 'ReplayGain ($count)'; + } + + @override + String get replayGainBatchConfirmTitle => 'Agregar ReplayGain'; + + @override + String replayGainBatchConfirmMessage(int count) { + return '¿Analizar el volumen y escribir las etiquetas ReplayGain en $count pista(s)?'; + } + + @override + String get replayGainBatchAnalyzing => 'Analizando ReplayGain...'; + + @override + String replayGainBatchSuccess(int success, int total) { + return 'Se agregaron las etiquetas ReplayGain a $success de $total pistas'; + } @override String get optionsArtistTagMode => 'Modo de etiqueta de artista'; @override String get optionsArtistTagModeDescription => - 'Elija cómo se ingresan múltiples artistas en etiquetas incrustadas.'; + 'Elige cómo se escriben varios artistas en las etiquetas incrustadas.'; @override - String get optionsArtistTagModeJoined => 'Valor único ingresado'; + String get optionsArtistTagModeJoined => 'Valor único combinado'; @override String get optionsArtistTagModeJoinedSubtitle => - 'Escribe un valor ARTIST, como \"Artista A, Artista B\" para mejor compatibilidad en reproductores.'; + 'Escribir un solo valor de ARTISTA como «Artista A, Artista B» para máxima compatibilidad con reproductores.'; @override String get optionsArtistTagModeSplitVorbis => - 'Dividir etiquetas para FLAC/OPUS'; + 'Separar etiquetas para FLAC/Opus'; @override String get optionsArtistTagModeSplitVorbisSubtitle => - 'Escribe una etiqueta de artista por artista para FLAC y OPUS; MP3 y M4A se mantienen agrupados.'; + 'Escribe una etiqueta de artista por cada artista en FLAC y Opus; MP3 y M4A se mantienen combinados.'; @override - String get optionsExtensionStore => 'Extensión Repo'; + String get optionsExtensionStore => 'Repositorio de extensiones'; @override - String get optionsExtensionStoreSubtitle => 'Mostar barra de navegación repo'; + String get optionsExtensionStoreSubtitle => + 'Mostrar la pestaña del repositorio en la navegación'; @override - String get optionsCheckUpdates => 'Comprobar actualizaciones'; + String get optionsCheckUpdates => 'Buscar actualizaciones'; @override String get optionsCheckUpdatesSubtitle => @@ -5033,14 +5073,14 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get optionsUpdateChannelStable => 'Solo versiones estables'; @override - String get optionsUpdateChannelPreview => 'Versión preliminar'; + String get optionsUpdateChannelPreview => 'Obtener versiones preliminares'; @override String get optionsUpdateChannelWarning => - 'La Versión preliminar puede contener errores o características incompletas'; + 'La versión preliminar puede contener errores o funciones incompletas'; @override - String get optionsClearHistory => 'Borrar el historial de descargas'; + String get optionsClearHistory => 'Borrar historial de descargas'; @override String get optionsClearHistorySubtitle => @@ -5050,11 +5090,10 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get optionsDetailedLogging => 'Registro detallado'; @override - String get optionsDetailedLoggingOn => - 'Registros detallados están siendo registrados'; + String get optionsDetailedLoggingOn => 'Se están registrando logs detallados'; @override - String get optionsDetailedLoggingOff => 'Habilitar para informes de errores'; + String get optionsDetailedLoggingOff => 'Activar para informes de errores'; @override String get optionsSpotifyCredentials => 'Credenciales de Spotify'; @@ -5066,21 +5105,21 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get optionsSpotifyCredentialsRequired => - 'Requerido - toque para configurar'; + 'Requerido: toca para configurar'; @override String get optionsSpotifyWarning => - 'Spotify requiere tus propias credenciales API. Obténgalas gratis de developer.spotify.com'; + 'Spotify requiere tus propias credenciales de API. Consíguelas gratis en developer.spotify.com'; @override String get optionsSpotifyDeprecationWarning => - 'La función de búsqueda de Spotify dejará de estar disponible el 3 de marzo de 2026 debido a cambios en la API de Spotify. Te recomendamos que te pases a Deezer.'; + 'La búsqueda de Spotify quedará obsoleta el 3 de marzo de 2026 debido a cambios en la API de Spotify. Por favor, cambia a Deezer.'; @override String get extensionsTitle => 'Extensiones'; @override - String get extensionsDisabled => 'Deshabilitado'; + String get extensionsDisabled => 'Desactivado'; @override String extensionsVersion(String version) { @@ -5096,7 +5135,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get extensionsUninstall => 'Desinstalar'; @override - String get storeTitle => 'Extensión Repo'; + String get storeTitle => 'Repositorio de extensiones'; @override String get storeSearch => 'Buscar extensiones...'; @@ -5124,7 +5163,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get aboutLogoArtist => - '¡El talentoso artista que creó nuestro hermoso logo!'; + '¡El talentoso artista que creó el hermoso logo de nuestra app!'; @override String get aboutTranslators => 'Traductores'; @@ -5136,10 +5175,10 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get aboutLinks => 'Enlaces'; @override - String get aboutMobileSource => 'Código fuente móvil'; + String get aboutMobileSource => 'Código fuente de la versión móvil'; @override - String get aboutPCSource => 'Código fuente de PC'; + String get aboutPCSource => 'Código fuente de la versión para PC'; @override String get aboutKeepAndroidOpen => 'Mantener Android activo'; @@ -5181,11 +5220,11 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; + 'El creador de QQDL & HiFi API. Este proyecto ayudó a impulsar el soporte para descargas sin pérdida de calidad.'; @override String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; + 'El creador del proyecto HiFi original. Sentó las bases para la integración de fuentes de audio sin pérdida de calidad.'; @override String get aboutSjdonadoDesc => @@ -5377,6 +5416,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get dialogDownload => 'Descargar'; + @override + String get previewPlay => 'Reproducir vista previa'; + + @override + String get previewStop => 'Detener vista previa'; + + @override + String get previewUnavailable => 'Vista previa no disponible'; + @override String get dialogDiscard => 'Descartar'; @@ -5542,7 +5590,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get errorNoTracksFound => 'No se encontraron pistas'; @override - String get searchEmptyResultSubtitle => 'Try another keyword'; + String get searchEmptyResultSubtitle => 'Prueba con otra palabra clave'; @override String get errorUrlNotRecognized => 'Enlace no reconocido'; @@ -5753,7 +5801,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { 'Solo las extensiones activas con proveedor de descarga se listan aquí.'; @override - String get providerBuiltIn => 'Legacy'; + String get providerBuiltIn => 'Heredado'; @override String get providerExtension => 'Extensión'; @@ -6152,11 +6200,11 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get storeEmptyNoResults => 'No se encontraron extensiones'; @override - String get extensionDefaultProvider => 'Default Search'; + String get extensionDefaultProvider => 'Búsqueda predeterminada'; @override String get extensionDefaultProviderSubtitle => - 'Use the default metadata search'; + 'Usar la búsqueda de metadatos predeterminada'; @override String get extensionAuthor => 'Autor/a'; @@ -6333,7 +6381,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; + 'Elige el formato de salida para las descargas con pérdida de calidad a 320 kbps. Cuando sea necesario, el audio original se convertirá al formato seleccionado.'; @override String get downloadLossyMp3 => 'MP3 (320 kbps)'; @@ -6738,8 +6786,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'pistas', + one: 'pista', ); return '$_temp0'; } @@ -6749,8 +6797,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'files', - one: 'file', + other: 'archivos', + one: 'archivo', ); return '$_temp0'; } @@ -6916,7 +6964,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; + 'Obtén audio de calidad FLAC mediante las extensiones de descarga instaladas'; @override String get tutorialWelcomeTip3 => @@ -7299,10 +7347,10 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get trackConvertFailed => 'La conversión ha fallado'; @override - String get cueSplitTitle => 'Split CUE Sheet'; + String get cueSplitTitle => 'Dividir hoja CUE'; @override - String get cueSplitSubtitle => 'Split CUE+FLAC into individual tracks'; + String get cueSplitSubtitle => 'Dividir CUE + FLAC en pistas individuales'; @override String cueSplitAlbum(String album) { @@ -7320,28 +7368,29 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { } @override - String get cueSplitConfirmTitle => 'Split CUE Album'; + String get cueSplitConfirmTitle => 'Dividir álbum CUE'; @override String cueSplitConfirmMessage(String album, int count) { - return 'Split \"$album\" into $count individual FLAC files?\n\nFiles will be saved to the same directory.'; + return '¿Dividir \"$album\" en archivos FLAC individuales $count?\n\nLos archivos se guardarán en el mismo directorio.'; } @override String cueSplitSplitting(int current, int total) { - return 'Splitting CUE sheet... ($current/$total)'; + return 'Dividiendo hoja CUE... ($current/$total)'; } @override String cueSplitSuccess(int count) { - return 'Split into $count tracks successfully'; + return 'Se dividió correctamente en $count pistas'; } @override - String get cueSplitFailed => 'CUE split failed'; + String get cueSplitFailed => 'Fallo al dividir CUE'; @override - String get cueSplitNoAudioFile => 'Audio file not found for this CUE sheet'; + String get cueSplitNoAudioFile => + 'No se encontró el archivo de audio para esta hoja CUE'; @override String get cueSplitButton => 'Dividir en pistas'; @@ -7356,7 +7405,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get collectionWishlist => 'Lista de deseos'; @override - String get collectionLoved => 'Loved'; + String get collectionLoved => 'Me gusta'; @override String get collectionFavoriteArtists => 'Artistas favoritos'; @@ -7385,8 +7434,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tracks', - one: '1 track', + other: '$count pistas', + one: '1 pista', ); return '$_temp0'; } @@ -7396,8 +7445,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count artists', - one: '1 artist', + other: '$count artistas', + one: '1 artista', ); return '$_temp0'; } @@ -7419,7 +7468,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get collectionPlaylistNameHint => 'Nombre de la lista de reproducción'; @override - String get collectionPlaylistNameRequired => 'Playlist name is required'; + String get collectionPlaylistNameRequired => + 'El nombre de la lista de reproducción es obligatorio'; @override String get collectionRenamePlaylist => 'Renombrar lista de reproducción'; @@ -7429,28 +7479,28 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String collectionDeletePlaylistMessage(String playlistName) { - return 'Delete \"$playlistName\" and all tracks inside it?'; + return '¿Eliminar \"$playlistName\" y todas las pistas que contiene?'; } @override String get collectionPlaylistDeleted => 'Lista de reproducción eliminada'; @override - String get collectionPlaylistRenamed => 'Playlist renamed'; + String get collectionPlaylistRenamed => 'Lista de reproducción renombrada'; @override String get collectionWishlistEmptyTitle => 'La lista de deseos está vacía'; @override String get collectionWishlistEmptySubtitle => - 'Tap + on tracks to save what you want to download later'; + 'Toca el botón + en las pistas para guardar las que quieras descargar más tarde'; @override - String get collectionLovedEmptyTitle => 'Loved folder is empty'; + String get collectionLovedEmptyTitle => 'La carpeta «Me gusta» está vacía'; @override String get collectionLovedEmptySubtitle => - 'Tap love on tracks to keep your favorites'; + 'Toca «Me gusta» en las pistas para guardar tus favoritas.'; @override String get collectionFavoriteArtistsEmptyTitle => @@ -7458,7 +7508,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; + 'Toca el corazón en la página del artista para guardarlo aquí'; @override String get collectionPlaylistEmptyTitle => @@ -7466,7 +7516,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get collectionPlaylistEmptySubtitle => - 'Long-press + on any track to add it here'; + 'Mantén presionado el botón + en cualquier pista para añadirla aquí'; @override String get collectionRemoveFromPlaylist => @@ -7477,56 +7527,56 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String collectionRemoved(String trackName) { - return '\"$trackName\" removed'; + return 'Se eliminó \"$trackName\"'; } @override String collectionAddedToLoved(String trackName) { - return '\"$trackName\" added to Loved'; + return '\"$trackName\" se agregó a «Me gusta»'; } @override String collectionRemovedFromLoved(String trackName) { - return '\"$trackName\" removed from Loved'; + return '\"$trackName\" se eliminó de «Me gusta»'; } @override String collectionAddedToWishlist(String trackName) { - return '\"$trackName\" added to Wishlist'; + return '\"$trackName\" se agregó a la lista de deseos'; } @override String collectionRemovedFromWishlist(String trackName) { - return '\"$trackName\" removed from Wishlist'; + return '\"$trackName\" se eliminó de la lista de deseos'; } @override String collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; + return '\"$artistName\" se agregó a Artistas favoritos'; } @override String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; + return '\"$artistName\" se eliminó de Artistas favoritos'; } @override - String get trackOptionAddToLoved => 'Add to Loved'; + String get trackOptionAddToLoved => 'Agregar a «Me gusta»'; @override - String get trackOptionRemoveFromLoved => 'Remove from Loved'; + String get trackOptionRemoveFromLoved => 'Quitar de «Me gusta»'; @override String get trackOptionAddToWishlist => 'Añadir a la lista de deseos'; @override - String get trackOptionRemoveFromWishlist => 'Remove from Wishlist'; + String get trackOptionRemoveFromWishlist => 'Quitar de la lista de deseos'; @override String get artistOptionAddToFavorites => 'Añadir a artistas favoritos'; @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; + String get artistOptionRemoveFromFavorites => 'Quitar de Artistas favoritos'; @override String get collectionPlaylistChangeCover => 'Cambiar imagen de portada'; @@ -7539,28 +7589,30 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'pistas', + one: 'pista', ); - return 'Share $count $_temp0'; + return 'Compartir $count $_temp0'; } @override - String get selectionShareNoFiles => 'No shareable files found'; + String get selectionShareNoFiles => + 'No se encontraron archivos para compartir'; @override String selectionConvertCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'pistas', + one: 'pista', ); - return 'Convert $count $_temp0'; + return 'Convertir $count $_temp0'; } @override - String get selectionConvertNoConvertible => 'No convertible tracks selected'; + String get selectionConvertNoConvertible => + 'No se seleccionaron pistas que se puedan convertir'; @override String get selectionBatchConvertConfirmTitle => 'Conversión por lotes'; @@ -7574,10 +7626,10 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'pistas', + one: 'pista', ); - return 'Convert $count $_temp0 to $format at $bitrate?\n\nOriginal files will be deleted after conversion.'; + return '¿Convertir $count $_temp0 a $format con una tasa de bits de $bitrate?\n\nLos archivos originales se eliminarán después de la conversión.'; } @override @@ -7585,20 +7637,20 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'pistas', + one: 'pista', ); - return 'Convert $count $_temp0 to $format? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.'; + return '¿Convertir $count $_temp0 a $format? (Sin pérdida — no hay pérdida de calidad)\n\nLos archivos originales se eliminarán después de la conversión.'; } @override String selectionBatchConvertProgress(int current, int total) { - return 'Converting $current of $total...'; + return 'Convirtiendo $current de $total...'; } @override String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Converted $success of $total tracks to $format'; + return 'Se convirtieron $success de $total pistas a $format'; } @override @@ -7608,22 +7660,22 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Folder named after Album Artist tag'; + 'Carpeta nombrada según la etiqueta Artista del álbum'; @override String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Folder named after Track Artist tag'; + 'Carpeta nombrada según la etiqueta Artista de la pista'; @override String get lyricsProvidersTitle => 'Prioridad de proveedores de letras'; @override String get lyricsProvidersDescription => - 'Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.'; + 'Activa, desactiva y reordena las fuentes de letras. Los proveedores se prueban de arriba hacia abajo hasta encontrar letras.'; @override String get lyricsProvidersInfoText => - 'Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.'; + 'Los proveedores de letras de extensiones se ejecutan antes que los proveedores integrados. Debe permanecer habilitado al menos un proveedor.'; @override String lyricsProvidersEnabledSection(int count) { @@ -7637,50 +7689,58 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get lyricsProvidersAtLeastOne => - 'At least one provider must remain enabled'; + 'Debe permanecer habilitado al menos un proveedor'; @override - String get lyricsProvidersSaved => 'Lyrics provider priority saved'; + String get lyricsProvidersSaved => + 'Prioridad de proveedores de letras guardada'; @override String get lyricsProvidersDiscardContent => - 'You have unsaved changes that will be lost.'; + 'Tienes cambios sin guardar que se perderán.'; @override - String get lyricsProviderLrclibDesc => 'Open-source synced lyrics database'; + String get lyricsProviderLrclibDesc => + 'Base de datos de letras sincronizadas de código abierto'; @override String get lyricsProviderNeteaseDesc => - 'NetEase Cloud Music (good for Asian songs)'; + 'NetEase Cloud Music (buena para canciones asiáticas)'; @override String get lyricsProviderMusixmatchDesc => - 'Largest lyrics database (multi-language)'; + 'La base de datos de letras más grande (multilingüe)'; @override String get lyricsProviderAppleMusicDesc => - 'Word-by-word synced lyrics (via proxy)'; + 'Letras sincronizadas palabra por palabra (a través de proxy)'; @override String get lyricsProviderQqMusicDesc => - 'QQ Music (good for Chinese songs, via proxy)'; + 'QQ Music (buena para canciones chinas, a\ntravés de proxy)'; + + @override + String get lyricsProviderLyricsPlusDesc => + 'Letras tipo karaoke palabra por palabra (Apple/ Musixmatch/Spotify/QQ, a través de proxy)'; @override String get lyricsProviderExtensionDesc => 'Proveedor de extensiones'; @override - String get safMigrationTitle => 'Storage Update Required'; + String get safMigrationTitle => + 'Se requiere actualización del almacenamiento'; @override String get safMigrationMessage1 => - 'SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.'; + 'SpotiFLAC ahora utiliza el Android Storage Access Framework (SAF) para las descargas. Esto soluciona los errores de «permiso denegado» en Android 10 y versiones posteriores.'; @override String get safMigrationMessage2 => - 'Please select your download folder again to switch to the new storage system.'; + 'Por favor, vuelve a seleccionar la carpeta de descargas para cambiar al nuevo sistema de almacenamiento.'; @override - String get safMigrationSuccess => 'Download folder updated to SAF mode'; + String get safMigrationSuccess => + 'Carpeta de descargas actualizada al modo SAF'; @override String get settingsDonate => 'Apoya el desarrollo'; @@ -7689,19 +7749,178 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get settingsDonateSubtitle => 'Compra un café al desarrollador'; @override - String get tooltipLoveAll => 'Love All'; + String get settingsBackup => 'Copia de seguridad y Restauración'; + + @override + String get settingsBackupSubtitle => + 'Transfiere tu biblioteca, historial y configuración a un nuevo dispositivo'; + + @override + String get backupTitle => 'Copia de seguridad y Restauración'; + + @override + String get backupExportSectionTitle => 'Crear copia de seguridad'; + + @override + String get backupExportSectionDescription => + 'Guarda tu configuración, historial de descargas, pistas con «Me gusta», lista de deseos, artistas favoritos y listas de reproducción en un solo archivo que puedes conservar o transferir a otro teléfono.'; + + @override + String get backupExportButton => 'Crear archivo de copia de seguridad'; + + @override + String get backupImportSectionTitle => 'Restaurar copia de seguridad'; + + @override + String get backupImportSectionDescription => + 'Selecciona un archivo de copia de seguridad para restaurar tus datos. Esto reemplazará la configuración, el historial y la biblioteca actuales en este dispositivo.'; + + @override + String get backupImportButton => 'Elegir archivo de copia de seguridad'; + + @override + String get backupCreating => 'Creando copia de seguridad...'; + + @override + String get backupCreated => 'Copia de seguridad creada'; + + @override + String get backupCreateFailed => 'No se pudo crear la copia de seguridad'; + + @override + String get backupEmpty => 'Aún no hay nada que respaldar'; + + @override + String get backupRestoreConfirmTitle => '¿Restaurar esta copia de seguridad?'; + + @override + String get backupRestoreConfirmMessage => + 'Esto reemplazará tu configuración actual, historial de descargas, pistas con «Me gusta», lista de deseos y listas de reproducción con el contenido de la copia de seguridad. Esto no se puede deshacer.'; + + @override + String get backupRestoreConfirmButton => 'Restaurar'; + + @override + String get backupRestoring => 'Restaurando copia de seguridad...'; + + @override + String get backupRestored => 'Copia de seguridad restaurada correctamente'; + + @override + String get backupRestoreFailed => 'Fallo al restaurar la copia de seguridad'; + + @override + String get backupInvalidFile => + 'Este archivo no es una copia de seguridad válida de SpotiFLAC'; + + @override + String get backupRestoreRestartHint => + 'Reinicie la aplicación para asegurarse de que cada cambio se aplique.'; + + @override + String get backupContentsTitle => 'Contenido de la copia de seguridad'; + + @override + String get backupContentsSettings => 'Configuración de la aplicación'; + + @override + String backupContentsHistory(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'items', + one: 'item', + ); + return '$count historial $_temp0'; + } + + @override + String backupContentsLiked(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'pistas con «Me gusta»', + one: 'pista con «Me gusta»', + ); + return '$count $_temp0'; + } + + @override + String backupContentsWishlist(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'pistas en la lista de deseos', + one: 'pista en la lista de deseos', + ); + return '$count $_temp0'; + } + + @override + String backupContentsPlaylists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count listas de reproducción', + one: '1 lista de reproducción', + ); + return '$_temp0'; + } + + @override + String backupContentsArtists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count artistas favoritos', + one: '1 artista favorito', + ); + return '$_temp0'; + } + + @override + String backupContentsExtensions(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count extensiones', + one: '1 extensión', + ); + return '$_temp0'; + } + + @override + String get backupIncludeSecrets => 'Include extension credentials'; + + @override + String get backupIncludeSecretsDescription => + 'Los tokens y las claves API de las extensiones se guardarán en el archivo de copia de seguridad. Mantenga el archivo privado. Cuando está desactivado, volverá a introducirlos después de restaurar.'; + + @override + String backupExtensionsRestoreFailed(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'extensions', + one: 'extension', + ); + return '$count $_temp0 could not be reinstalled. Install them manually from the store.'; + } + + @override + String get tooltipLoveAll => 'Favoritos'; @override String get tooltipAddToPlaylist => 'Añadir a la lista de reproducción'; @override String snackbarRemovedTracksFromLoved(int count) { - return 'Removed $count tracks from Loved'; + return 'Eliminadas $count pistas de Favoritos'; } @override String snackbarAddedTracksToLoved(int count) { - return 'Added $count tracks to Loved'; + return 'Agregadas $count pistas de Favoritos'; } @override @@ -7709,29 +7928,31 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String dialogDownloadAllMessage(int count) { - return 'Download $count tracks?'; + return '¿Descargar $count pistas?'; } @override - String get homeSkipAlreadyDownloaded => 'Skip already downloaded songs'; + String get homeSkipAlreadyDownloaded => 'Omitir canciones ya descargadas'; @override String get homeGoToAlbum => 'Ir al álbum'; @override - String get homeAlbumInfoUnavailable => 'Album info not available'; + String get homeAlbumInfoUnavailable => + 'La información del álbum no está disponible'; @override - String get snackbarLoadingCueSheet => 'Loading CUE sheet...'; + String get snackbarLoadingCueSheet => 'Cargando hoja CUE...'; @override - String get snackbarMetadataSaved => 'Metadata saved successfully'; + String get snackbarMetadataSaved => 'Metadatos guardados correctamente'; @override - String get snackbarFailedToEmbedLyrics => 'Failed to embed lyrics'; + String get snackbarFailedToEmbedLyrics => 'Error al incrustar letras'; @override - String get snackbarFailedToWriteStorage => 'Failed to write back to storage'; + String get snackbarFailedToWriteStorage => + 'Error al escribir de vuelta al almacenamiento'; @override String snackbarError(String error) { @@ -7739,21 +7960,23 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { } @override - String get snackbarNoActionDefined => 'No action defined for this button'; + String get snackbarNoActionDefined => + 'Ninguna acción definida para este botón'; @override - String get noTracksFoundForAlbum => 'No tracks found for this album'; + String get noTracksFoundForAlbum => + 'No se encontraron pistas para este álbum'; @override String get downloadLocationSubtitle => - 'Choose where to save your downloaded tracks'; + 'Elige dónde guardar tus pistas descargadas'; @override - String get storageModeAppFolder => 'App Folder (Recommended)'; + String get storageModeAppFolder => 'Carpeta de la App (Recomendado)'; @override String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; + 'Guarda en Music/SpotiFLAC por defecto'; @override String get storageModeSaf => 'Carpeta personalizada (SAF)'; @@ -7776,18 +7999,18 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { } @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; + String get downloadFilenameInsertTag => 'Toca para insertar etiqueta:'; @override String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; + 'Sencillos y EPs guardados en una carpeta separada'; @override String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; + 'Sencillos y álbumes guardados en la misma carpeta'; @override - String get downloadArtistNameFilters => 'Artist Name Filters'; + String get downloadArtistNameFilters => 'Filtros de Nombre del Artista'; @override String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; @@ -7819,6 +8042,17 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get downloadNetworkCompatibilityModeDisabled => 'Utilizando ajustes de red estándar'; + @override + String get downloadAllowLocalNetwork => 'Allow Local Network Access'; + + @override + String get downloadAllowLocalNetworkEnabled => + 'Requests to local/private addresses are allowed (for local proxy or custom DNS)'; + + @override + String get downloadAllowLocalNetworkDisabled => + 'Local/private addresses are blocked for security'; + @override String get downloadSelectServiceToEnable => 'Select a provider with quality options to enable this option'; @@ -7903,21 +8137,21 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; + 'Introduce un código de idioma BCP-47 (por ejemplo, en, de, ja) para solicitar letras traducidas desde Musixmatch.'; @override - String get downloadMusixmatchAuto => 'Auto'; + String get downloadMusixmatchAuto => 'Automático'; @override String get downloadNetworkAnySubtitle => 'Usar Wi-Fi o datos móviles'; @override String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; + 'Las descargas se pausan con datos móviles'; @override String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; + 'Región usada al resolver enlaces de pistas mediante SongLink. Elige el país donde estén disponibles tus servicios de streaming.'; @override String get snackbarUnsupportedAudioFormat => 'Formato de audio no soportado'; @@ -7930,16 +8164,16 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( trackCount, locale: localeName, - other: 'tracks', - one: 'track', + other: 'pistas', + one: 'pista', ); String _temp1 = intl.Intl.pluralLogic( playlistCount, locale: localeName, - other: 'playlists', - one: 'playlist', + other: 'listas de reproducción', + one: 'lista de reproducción', ); - return 'Download $trackCount $_temp0 from $playlistCount $_temp1?'; + return '¿Descargar $trackCount $_temp0 de $playlistCount $_temp1?'; } @override @@ -7947,14 +8181,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'playlists', - one: 'playlist', + other: 'listas de reproducción', + one: 'lista de reproducción', ); - return 'Download $count $_temp0'; + return 'Descargar $count $_temp0'; } @override - String get bulkDownloadSelectPlaylists => 'Select playlists to download'; + String get bulkDownloadSelectPlaylists => + 'Selecciona listas de reproducción para descargar'; @override String get snackbarSelectedPlaylistsEmpty => @@ -7965,18 +8200,18 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count playlists', - one: '1 playlist', + other: '$count listas de reproducción', + one: '1 lista de reproducción', ); return '$_temp0'; } @override - String get editMetadataAutoFill => 'Auto-fill from online'; + String get editMetadataAutoFill => 'Autocompletar desde internet'; @override String get editMetadataAutoFillDesc => - 'Select fields to fill automatically from online metadata'; + 'Selecciona los campos para rellenar automáticamente con metadatos en línea'; @override String get editMetadataAutoFillFetch => 'Recuperar y llenar'; @@ -7993,15 +8228,15 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'fields', - one: 'field', + other: 'campos', + one: 'campo', ); - return 'Filled $count $_temp0 from online metadata'; + return 'Se completaron $count $_temp0 con metadatos en línea'; } @override String get editMetadataAutoFillNoneSelected => - 'Select at least one field to auto-fill'; + 'Selecciona al menos un campo para autocompletar'; @override String get editMetadataFieldTitle => 'Título'; @@ -8031,7 +8266,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String get editMetadataFieldIsrc => 'ISRC'; @override - String get editMetadataFieldLabel => 'Label'; + String get editMetadataFieldLabel => 'Discográfica'; @override String get editMetadataFieldCopyright => 'Derechos de autor'; @@ -8061,8 +8296,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tracks', - one: '1 track', + other: '$count pistas', + one: '1 pista', ); return '$_temp0'; } @@ -8072,8 +8307,8 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count albums', - one: '1 album', + other: '$count álbumes', + one: '1 álbum', ); return '$_temp0'; } @@ -8090,7 +8325,7 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { @override String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; + 'Las descargas de pistas individuales aparecerán aquí'; @override String get queueEmptyHistory => 'No hay historial de descargas'; @@ -9082,4 +9317,318 @@ class AppLocalizationsEsEs extends AppLocalizationsEs { String shareSheetLinkCopied(Object service) { return '$service link copied'; } + + @override + String get libraryPlayback => 'Playback'; + + @override + String get libraryExternalPlayer => 'External player'; + + @override + String get libraryExternalPlayerSubtitle => + 'Recommended for listening, best quality, gapless playback, EQ, and wider format support'; + + @override + String get libraryBuiltInPreviewPlayer => 'Built-in preview player'; + + @override + String get libraryBuiltInPreviewPlayerSubtitle => + 'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'; + + @override + String get libraryBuiltInPlayerInfo => + 'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'; + + @override + String get nowPlayingTitle => 'Now Playing'; + + @override + String get nowPlayingNothingPlaying => 'Nothing is playing'; + + @override + String get nowPlayingMinimize => 'Minimize'; + + @override + String get nowPlayingUpNext => 'Up next'; + + @override + String get nowPlayingDetails => 'Details'; + + @override + String get nowPlayingOpenInExternalPlayer => 'Open in external player'; + + @override + String get nowPlayingTabPlayer => 'Player'; + + @override + String get nowPlayingTabLyrics => 'Lyrics'; + + @override + String get nowPlayingNoLyrics => 'No lyrics in this file'; + + @override + String get nowPlayingLibraryEmpty => 'Your library is empty'; + + @override + String nowPlayingShuffleLibraryFailed(String error) { + return 'Could not shuffle library: $error'; + } + + @override + String get nowPlayingShuffleOn => 'Shuffle on'; + + @override + String get nowPlayingPlayInOrder => 'Play in order'; + + @override + String get nowPlayingShuffleLibrary => 'Shuffle library'; + + @override + String get nowPlayingQueueEmpty => 'Queue is empty'; + + @override + String get nowPlayingNoMetadata => 'No metadata available'; + + @override + String get announcementUnableToOpenLink => + 'Unable to open link. Please try again.'; + + @override + String trackConvertLosslessOutputWithCap(String quality) { + return 'Lossless output with $quality cap'; + } + + @override + String trackConvertConfirmMessageLosslessCapped( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '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.'; + } + + @override + String selectionBatchConvertConfirmMessageLosslessCapped( + int count, + String format, + String quality, + ) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return 'Convert $count $_temp0 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.'; + } + + @override + String trackConvertActionLabelLossless( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '$sourceFormat → $targetFormat ($quality)'; + } + + @override + String trackConvertActionLabelLossy( + String sourceFormat, + String targetFormat, + String bitrate, + ) { + return '$sourceFormat → $targetFormat @ $bitrate'; + } + + @override + String get aboutPaxsenixSubtitle => + 'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'; + + @override + String get snackbarPlayingNext => 'Playing next'; + + @override + String get snackbarAddedToQueueGeneric => 'Added to queue'; + + @override + String selectionDeletePlaylistsCount(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'playlists', + one: 'playlist', + ); + return 'Delete $count $_temp0'; + } + + @override + String get actionShuffle => 'Shuffle'; + + @override + String get downloadPrimaryArtistOnlyOn => 'Primary only: On'; + + @override + String get downloadPrimaryArtistOnlyOff => 'Primary only: Off'; + + @override + String get downloadAlbumArtistMetadataPrimaryOnly => + 'Album Artist metadata: Primary only'; + + @override + String get downloadAlbumArtistMetadataFull => 'Album Artist metadata: Full'; + + @override + String get trackConvertOriginal => 'Original'; + + @override + String get trackConvertOriginalQuality => 'Original quality'; + + @override + String get trackConvertLosslessSuffix => 'Lossless'; + + @override + String get trackConvertDithering => 'Dithering'; + + @override + String get trackConvertResampler => 'Resampler'; + + @override + String get trackConvertDitherNone => 'None'; + + @override + String get trackConvertDitherTriangular => 'TPDF'; + + @override + String get trackConvertDitherTriangularHp => 'Triangular HP'; + + @override + String get trackConvertResamplerSwr => 'SWR'; + + @override + String get trackConvertResamplerSoxr => 'SoXr'; + + @override + String get updateSeeReleaseNotes => 'See release notes for details.'; + + @override + String get unknownTitle => 'Unknown title'; + + @override + String get trackPlayNext => 'Play next'; + + @override + String get trackAddToQueue => 'Add to queue'; + + @override + String snackbarExtensionInstalledEnable(String extensionName) { + return '$extensionName installed. Enable it in Settings > Extensions'; + } + + @override + String snackbarExtensionUpdatedVersion(String extensionName, String version) { + return '$extensionName updated to v$version'; + } + + @override + String snackbarFailedToInstallNamed(String extensionName) { + return 'Failed to install $extensionName'; + } + + @override + String snackbarFailedToUpdateNamed(String extensionName) { + return 'Failed to update $extensionName'; + } + + @override + String get releaseTypeEp => 'EP'; + + @override + String get releaseTypeSingle => 'Single'; + + @override + String get trackCoverOnline => 'Online cover'; + + @override + String get regionCountryUS => 'United States'; + + @override + String get regionCountryGB => 'United Kingdom'; + + @override + String get regionCountryFR => 'France'; + + @override + String get regionCountryDE => 'Germany'; + + @override + String get regionCountryJP => 'Japan'; + + @override + String get regionCountryKR => 'South Korea'; + + @override + String get regionCountryIN => 'India'; + + @override + String get regionCountryID => 'Indonesia'; + + @override + String get regionCountryBR => 'Brazil'; + + @override + String get regionCountryMX => 'Mexico'; + + @override + String get regionCountryAU => 'Australia'; + + @override + String get regionCountryCA => 'Canada'; + + @override + String get regionCountryXK => 'Kosovo'; + + @override + String get extensionVerificationBrowserTitle => 'Verification browser'; + + @override + String get extensionVerificationBrowserSubtitleExternal => + 'Open challenges in the default browser first'; + + @override + String get extensionVerificationBrowserSubtitleInApp => + 'Open challenges in the in-app browser first'; + + @override + String get extensionVerificationBrowserExternal => 'External'; + + @override + String get extensionVerificationBrowserInApp => 'In-app'; + + @override + String get extensionVerificationHelpTitleManual => + 'Open verification manually'; + + @override + String get extensionVerificationHelpTitleWaiting => + 'Verification still waiting'; + + @override + String get extensionVerificationHelpMessageManual => + 'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'; + + @override + String get 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.'; + + @override + String get extensionVerificationClose => 'Close'; + + @override + String get extensionVerificationCopyLink => 'Copy link'; + + @override + String get extensionVerificationLinkCopied => 'Verification link copied'; + + @override + String get extensionVerificationOpenBrowser => 'Open browser'; } diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart index 3c27b45d..c2186530 100644 --- a/lib/l10n/app_localizations_fr.dart +++ b/lib/l10n/app_localizations_fr.dart @@ -145,7 +145,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get optionsSwitchBack => - 'Choose the default search provider to switch back from an extension'; + 'Choisissez le moteur de recherche par défaut pour revenir à la configuration d\'origine après avoir utilisé une extension'; @override String get optionsAutoFallback => 'Récupération automatique'; @@ -160,11 +160,11 @@ class AppLocalizationsFr extends AppLocalizations { @override String get optionsUseExtensionProvidersOn => - 'Extension providers are enabled'; + 'Les fournisseurs d\'extensions sont activés'; @override String get optionsUseExtensionProvidersOff => - 'Extension providers are required'; + 'Les fournisseurs d\'extensions sont requis'; @override String get optionsEmbedLyrics => 'Intégrer les paroles'; @@ -192,20 +192,21 @@ class AppLocalizationsFr extends AppLocalizations { 'Désactivé : aucune balise de normalisation du volume'; @override - String get trackReplayGain => 'Rescan ReplayGain'; + String get trackReplayGain => 'Réanalyser ReplayGain'; @override String get trackReplayGainSubtitle => - 'Analyze loudness and write ReplayGain tags'; + 'Analyser le niveau sonore et créer des balises ReplayGain'; @override - String get trackReplayGainScanning => 'Analyzing loudness...'; + String get trackReplayGainScanning => 'Analyse du volume sonore...'; @override - String get trackReplayGainSuccess => 'ReplayGain tags added'; + String get trackReplayGainSuccess => 'Ajout des balises ReplayGain'; @override - String get trackReplayGainFailed => 'Failed to add ReplayGain tags'; + String get trackReplayGainFailed => + 'Impossible d\'ajouter les balises ReplayGain'; @override String selectionReplayGainCount(int count) { @@ -213,19 +214,19 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get replayGainBatchConfirmTitle => 'Add ReplayGain'; + String get replayGainBatchConfirmTitle => 'Ajouter ReplayGain'; @override String replayGainBatchConfirmMessage(int count) { - return 'Analyze loudness and write ReplayGain tags to $count track(s)?'; + return 'Analyser le niveau sonore et ajouter des balises ReplayGain à $count piste(s) ?'; } @override - String get replayGainBatchAnalyzing => 'Analyzing ReplayGain...'; + String get replayGainBatchAnalyzing => 'Analyse de ReplayGain...'; @override String replayGainBatchSuccess(int success, int total) { - return 'ReplayGain added to $success of $total tracks'; + return 'ReplayGain ajouté à $success de $total pistes'; } @override @@ -422,11 +423,11 @@ class AppLocalizationsFr extends AppLocalizations { @override String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; + 'Créateur de QQDL et de l\'API HiFi. Ce projet a contribué à mettre en place la prise en charge des téléchargements sans perte.'; @override String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; + 'Le créateur du projet HiFi original. Une base pour l\'intégration de sources sans perte.'; @override String get aboutSjdonadoDesc => @@ -621,13 +622,13 @@ class AppLocalizationsFr extends AppLocalizations { String get dialogDownload => 'Télécharger'; @override - String get previewPlay => 'Play preview'; + String get previewPlay => 'Écouter un aperçu'; @override - String get previewStop => 'Stop preview'; + String get previewStop => 'Arrêter l\'aperçu'; @override - String get previewUnavailable => 'Preview unavailable'; + String get previewUnavailable => 'Aperçu indisponible'; @override String get dialogDiscard => 'Ignorer'; @@ -1009,7 +1010,7 @@ class AppLocalizationsFr extends AppLocalizations { 'Seules les extensions activées disposant de la fonctionnalité « fournisseur de téléchargement » sont répertoriées ici.'; @override - String get providerBuiltIn => 'Legacy'; + String get providerBuiltIn => 'Héritage'; @override String get providerExtension => 'Extension'; @@ -1415,17 +1416,17 @@ class AppLocalizationsFr extends AppLocalizations { String get storeEmptyNoResults => 'Aucune extension trouvée'; @override - String get extensionDefaultProvider => 'Default Search'; + String get extensionDefaultProvider => 'Recherche par défaut'; @override String get extensionDefaultProviderSubtitle => - 'Use the default metadata search'; + 'Utiliser la recherche par métadonnées par défaut'; @override String get extensionAuthor => 'Auteur'; @override - String get extensionId => 'ID'; + String get extensionId => 'Identifiant'; @override String get extensionError => 'Erreur'; @@ -1599,7 +1600,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; + 'Choisissez le format de sortie pour les téléchargements avec perte à 320 kbps. Le flux d\'origine sera converti au format que vous aurez sélectionné lorsque cela sera nécessaire.'; @override String get downloadLossyMp3 => 'MP3 320 kbps'; @@ -1648,7 +1649,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get albumFolderStructureDescription => - 'Choisir la structure des dossiers d\'album'; + 'Choisissez la structure des dossiers d\'albums'; @override String get downloadUseAlbumArtistForFolders => @@ -2203,7 +2204,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; + 'Obtenez un son de qualité FLAC grâce aux extensions de téléchargement installées'; @override String get tutorialWelcomeTip3 => @@ -2918,7 +2919,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get lyricsProvidersInfoText => - 'Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.'; + 'Les fournisseurs de paroles d\'extension s\'exécutent avant les fournisseurs de paroles intégrés. Au moins un fournisseur doit rester activé.'; @override String lyricsProvidersEnabledSection(int count) { @@ -2964,7 +2965,7 @@ class AppLocalizationsFr extends AppLocalizations { @override String get lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; + 'Paroles de karaoké mot à mot (Apple/Musixmatch/Spotify/QQ, via un proxy)'; @override String get lyricsProviderExtensionDesc => 'Fournisseur d\'extensions'; @@ -2991,88 +2992,89 @@ class AppLocalizationsFr extends AppLocalizations { String get settingsDonateSubtitle => 'Offrez un café au développeur'; @override - String get settingsBackup => 'Backup & Restore'; + String get settingsBackup => 'Sauvegarde & Restauration'; @override String get settingsBackupSubtitle => - 'Move your library, history and settings to a new device'; + 'Transférer votre bibliothèque, votre historique et vos paramètres vers un nouvel appareil'; @override - String get backupTitle => 'Backup & Restore'; + String get backupTitle => 'Sauvegarde & Restauration'; @override - String get backupExportSectionTitle => 'Create backup'; + String get backupExportSectionTitle => 'Créer une sauvegarde'; @override String get 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.'; + 'Enregistrez vos paramètres, votre historique de téléchargement, les titres que vous avez aimés, votre liste de souhaits, vos artistes préférés et vos playlists dans un seul fichier que vous pourrez conserver ou transférer vers un autre téléphone.'; @override - String get backupExportButton => 'Create backup file'; + String get backupExportButton => 'Créer un fichier de sauvegarde'; @override - String get backupImportSectionTitle => 'Restore backup'; + String get backupImportSectionTitle => 'Restaurer la sauvegarde'; @override String get backupImportSectionDescription => - 'Pick a backup file to restore your data. This replaces the current settings, history and library on this device.'; + 'Sélectionnez un fichier de sauvegarde pour restaurer vos données. Cette opération remplacera les réglages actuels, l\'historique et la bibliothèque de cet appareil.'; @override - String get backupImportButton => 'Choose backup file'; + String get backupImportButton => 'Choisissez un fichier de sauvegarde'; @override - String get backupCreating => 'Creating backup...'; + String get backupCreating => 'Création d\'une sauvegarde...'; @override - String get backupCreated => 'Backup created'; + String get backupCreated => 'Sauvegarde créée'; @override - String get backupCreateFailed => 'Failed to create backup'; + String get backupCreateFailed => 'Échec de la création de la sauvegarde'; @override - String get backupEmpty => 'There is nothing to back up yet'; + String get backupEmpty => 'Il n\'y a encore rien à sauvegarder'; @override - String get backupRestoreConfirmTitle => 'Restore this backup?'; + String get backupRestoreConfirmTitle => 'Restaurer cette sauvegarde ?'; @override String get backupRestoreConfirmMessage => - 'This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.'; + 'Cette opération remplacera vos paramètres actuels, votre historique de téléchargements, vos titres favoris, votre liste de souhaits et vos listes de lecture par le contenu de la sauvegarde. Cette opération est irréversible.'; @override - String get backupRestoreConfirmButton => 'Restore'; + String get backupRestoreConfirmButton => 'Restaurer'; @override - String get backupRestoring => 'Restoring backup...'; + String get backupRestoring => 'Restauration de la sauvegarde...'; @override - String get backupRestored => 'Backup restored successfully'; + String get backupRestored => 'La sauvegarde a été restaurée avec succès'; @override - String get backupRestoreFailed => 'Failed to restore backup'; + String get backupRestoreFailed => 'Échec de la restauration de la sauvegarde'; @override - String get backupInvalidFile => 'This file is not a valid SpotiFLAC backup'; + String get backupInvalidFile => + 'Ce fichier n\'est pas une sauvegarde SpotiFLAC valide'; @override String get backupRestoreRestartHint => - 'Restart the app to make sure every change is applied.'; + 'Redémarrez l\'application pour vous assurer que toutes les modifications ont bien été prises en compte.'; @override - String get backupContentsTitle => 'Backup contents'; + String get backupContentsTitle => 'Contenu de la sauvegarde'; @override - String get backupContentsSettings => 'App settings'; + String get backupContentsSettings => 'Paramètres de l\'application'; @override String backupContentsHistory(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'items', - one: 'item', + other: 'éléments', + one: 'élément', ); - return '$count history $_temp0'; + return '$count historique $_temp0'; } @override @@ -3080,10 +3082,10 @@ class AppLocalizationsFr extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'titres', + one: 'titre', ); - return '$count liked $_temp0'; + return '$count favoris $_temp0'; } @override @@ -3091,10 +3093,10 @@ class AppLocalizationsFr extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'titres', + one: 'titre', ); - return '$count wishlist $_temp0'; + return '$count liste de souhaits $_temp0'; } @override @@ -3113,8 +3115,8 @@ class AppLocalizationsFr extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count favorite artists', - one: '1 favorite artist', + other: '$count artistes préférés', + one: '1 artiste préféré', ); return '$_temp0'; } @@ -3131,11 +3133,12 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get backupIncludeSecrets => 'Include extension credentials'; + String get backupIncludeSecrets => + 'Inclure les informations d\'identification de l\'extension'; @override String get 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.'; + 'Les jetons et les clés API des extensions seront enregistrés dans le fichier de sauvegarde. Veillez à ne pas divulguer ce fichier. Si l\'extension est désactivée, vous devrez les saisir à nouveau après la restauration.'; @override String backupExtensionsRestoreFailed(int count) { @@ -3145,7 +3148,7 @@ class AppLocalizationsFr extends AppLocalizations { other: 'extensions', one: 'extension', ); - return '$count $_temp0 could not be reinstalled. Install them manually from the store.'; + return '$count $_temp0 n\'ont pas pu être réinstallées. Installez-les manuellement depuis la boutique.'; } @override @@ -3304,23 +3307,23 @@ class AppLocalizationsFr extends AppLocalizations { 'Utilisation des paramètres réseau par défaut'; @override - String get downloadAllowLocalNetwork => 'Allow Local Network Access'; + String get downloadAllowLocalNetwork => 'Autoriser l\'accès au réseau local'; @override String get downloadAllowLocalNetworkEnabled => - 'Requests to local/private addresses are allowed (for local proxy or custom DNS)'; + 'Les requêtes vers des adresses locales ou privées sont autorisées (pour un proxy local ou un DNS personnalisé)'; @override String get downloadAllowLocalNetworkDisabled => - 'Local/private addresses are blocked for security'; + 'Les adresses locales/privées sont bloquées pour des raisons de sécurité'; @override String get downloadSelectServiceToEnable => - 'Select a provider with quality options to enable this option'; + 'Choisissez un fournisseur proposant des options de qualité pour activer cette fonctionnalité'; @override String get downloadSelectTidalQobuz => - 'Select a provider with quality options to choose audio quality'; + 'Choisissez un fournisseur proposant différentes options pour sélectionner la qualité audio'; @override String get downloadEmbedLyricsDisabled => @@ -3706,7 +3709,7 @@ class AppLocalizationsFr extends AppLocalizations { 'Sélectionnez automatiquement la meilleure option disponible'; @override - String get extensionsHomeFeedOff => 'Off'; + String get extensionsHomeFeedOff => 'Désactivé'; @override String get extensionsHomeFeedOffSubtitle => @@ -4612,83 +4615,84 @@ class AppLocalizationsFr extends AppLocalizations { } @override - String get libraryPlayback => 'Playback'; + String get libraryPlayback => 'Lecture'; @override - String get libraryExternalPlayer => 'External player'; + String get libraryExternalPlayer => 'Lecteur externe'; @override String get libraryExternalPlayerSubtitle => - 'Recommended for listening, best quality, gapless playback, EQ, and wider format support'; + 'Recommandé pour l\'écoute, la meilleure qualité, la lecture en continu, l\'égaliseur et la prise en charge d\'un plus grand nombre de formats'; @override - String get libraryBuiltInPreviewPlayer => 'Built-in preview player'; + String get libraryBuiltInPreviewPlayer => + 'Lecteur de prévisualisation intégré'; @override String get libraryBuiltInPreviewPlayerSubtitle => - 'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'; + 'Uniquement pour des écoutes rapides et locales dans SpotiFLAC Mobile ; non recommandé pour une écoute régulière'; @override String get libraryBuiltInPlayerInfo => - 'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'; + 'Le lecteur intégré est un outil de prévisualisation permettant de vérifier rapidement les morceaux stockés localement. Utilisez un lecteur de musique externe pour les écouter.'; @override - String get nowPlayingTitle => 'Now Playing'; + String get nowPlayingTitle => 'En cours de lecture'; @override - String get nowPlayingNothingPlaying => 'Nothing is playing'; + String get nowPlayingNothingPlaying => 'Il n\'y a rien à l\'écran'; @override - String get nowPlayingMinimize => 'Minimize'; + String get nowPlayingMinimize => 'Réduire'; @override - String get nowPlayingUpNext => 'Up next'; + String get nowPlayingUpNext => 'À suivre'; @override - String get nowPlayingDetails => 'Details'; + String get nowPlayingDetails => 'Détails'; @override - String get nowPlayingOpenInExternalPlayer => 'Open in external player'; + String get nowPlayingOpenInExternalPlayer => 'Ouvrir dans un lecteur externe'; @override - String get nowPlayingTabPlayer => 'Player'; + String get nowPlayingTabPlayer => 'Lecteur'; @override - String get nowPlayingTabLyrics => 'Lyrics'; + String get nowPlayingTabLyrics => 'Paroles'; @override - String get nowPlayingNoLyrics => 'No lyrics in this file'; + String get nowPlayingNoLyrics => 'Ce fichier ne contient pas de paroles'; @override - String get nowPlayingLibraryEmpty => 'Your library is empty'; + String get nowPlayingLibraryEmpty => 'Votre bibliothèque est vide'; @override String nowPlayingShuffleLibraryFailed(String error) { - return 'Could not shuffle library: $error'; + return 'Impossible de lire aléatoirement la bibliothèque : $error'; } @override - String get nowPlayingShuffleOn => 'Shuffle on'; + String get nowPlayingShuffleOn => 'Lecture aléatoire activée'; @override - String get nowPlayingPlayInOrder => 'Play in order'; + String get nowPlayingPlayInOrder => 'Lire dans l\'ordre'; @override - String get nowPlayingShuffleLibrary => 'Shuffle library'; + String get nowPlayingShuffleLibrary => 'Lecture aléatoire de la bibliothèque'; @override - String get nowPlayingQueueEmpty => 'Queue is empty'; + String get nowPlayingQueueEmpty => 'La file d\'attente est vide'; @override - String get nowPlayingNoMetadata => 'No metadata available'; + String get nowPlayingNoMetadata => 'Aucune métadonnée disponible'; @override String get announcementUnableToOpenLink => - 'Unable to open link. Please try again.'; + 'Impossible d\'ouvrir le lien. Veuillez réessayer.'; @override String trackConvertLosslessOutputWithCap(String quality) { - return 'Lossless output with $quality cap'; + return 'Sortie sans perte avec une limite de $quality'; } @override @@ -4697,7 +4701,7 @@ class AppLocalizationsFr extends AppLocalizations { String targetFormat, String quality, ) { - return '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.'; + return 'Convertir du format $sourceFormat au format $targetFormat ($quality) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d\'échantillonnage seront limitées. Le fichier d\'origine sera supprimé après la conversion.'; } @override @@ -4709,10 +4713,10 @@ class AppLocalizationsFr extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: 'titres', + one: 'titre', ); - return 'Convert $count $_temp0 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.'; + return 'Convertir $count $_temp0 en $format ($quality) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d\'échantillonnage seront limitées. Les fichiers d\'origine seront supprimés après la conversion.'; } @override @@ -4735,13 +4739,13 @@ class AppLocalizationsFr extends AppLocalizations { @override String get aboutPaxsenixSubtitle => - 'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'; + 'Proxy de paroles pour Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou et Genius'; @override - String get snackbarPlayingNext => 'Playing next'; + String get snackbarPlayingNext => 'Prochainement'; @override - String get snackbarAddedToQueueGeneric => 'Added to queue'; + String get snackbarAddedToQueueGeneric => 'Ajouté à la file d\'attente'; @override String selectionDeletePlaylistsCount(int count) { @@ -4751,48 +4755,49 @@ class AppLocalizationsFr extends AppLocalizations { other: 'playlists', one: 'playlist', ); - return 'Delete $count $_temp0'; + return 'Supprimer $count $_temp0'; } @override - String get actionShuffle => 'Shuffle'; + String get actionShuffle => 'Lecture aléatoire'; @override - String get downloadPrimaryArtistOnlyOn => 'Primary only: On'; + String get downloadPrimaryArtistOnlyOn => 'Primaire uniquement : Activé'; @override - String get downloadPrimaryArtistOnlyOff => 'Primary only: Off'; + String get downloadPrimaryArtistOnlyOff => 'Primaire uniquement : Désactivé'; @override String get downloadAlbumArtistMetadataPrimaryOnly => - 'Album Artist metadata: Primary only'; + 'Métadonnées « Album » et « Artiste » : uniquement les données principales'; @override - String get downloadAlbumArtistMetadataFull => 'Album Artist metadata: Full'; + String get downloadAlbumArtistMetadataFull => + 'Métadonnées de l\'artiste de l\'album : complètes'; @override String get trackConvertOriginal => 'Original'; @override - String get trackConvertOriginalQuality => 'Original quality'; + String get trackConvertOriginalQuality => 'Qualité d\'origine'; @override - String get trackConvertLosslessSuffix => 'Lossless'; + String get trackConvertLosslessSuffix => 'Sans perte'; @override - String get trackConvertDithering => 'Dithering'; + String get trackConvertDithering => 'Hésitation'; @override - String get trackConvertResampler => 'Resampler'; + String get trackConvertResampler => 'Rééchantillonneur'; @override - String get trackConvertDitherNone => 'None'; + String get trackConvertDitherNone => 'Aucun'; @override String get trackConvertDitherTriangular => 'TPDF'; @override - String get trackConvertDitherTriangularHp => 'Triangular HP'; + String get trackConvertDitherTriangularHp => 'HP triangulaire'; @override String get trackConvertResamplerSwr => 'SWR'; @@ -4801,35 +4806,36 @@ class AppLocalizationsFr extends AppLocalizations { String get trackConvertResamplerSoxr => 'SoXr'; @override - String get updateSeeReleaseNotes => 'See release notes for details.'; + String get updateSeeReleaseNotes => + 'Pour plus de détails, consultez les notes de mise à jour.'; @override - String get unknownTitle => 'Unknown title'; + String get unknownTitle => 'Titre inconnu'; @override - String get trackPlayNext => 'Play next'; + String get trackPlayNext => 'Suivant'; @override - String get trackAddToQueue => 'Add to queue'; + String get trackAddToQueue => 'Ajouter à la file d\'attente'; @override String snackbarExtensionInstalledEnable(String extensionName) { - return '$extensionName installed. Enable it in Settings > Extensions'; + return '$extensionName est installée. Activez-la dans Paramètres > Extensions'; } @override String snackbarExtensionUpdatedVersion(String extensionName, String version) { - return '$extensionName updated to v$version'; + return '$extensionName a été mis à jour vers la version $version'; } @override String snackbarFailedToInstallNamed(String extensionName) { - return 'Failed to install $extensionName'; + return 'Échec de l\'installation de $extensionName'; } @override String snackbarFailedToUpdateNamed(String extensionName) { - return 'Failed to update $extensionName'; + return 'Échec de la mise à jour de $extensionName'; } @override @@ -4839,40 +4845,40 @@ class AppLocalizationsFr extends AppLocalizations { String get releaseTypeSingle => 'Single'; @override - String get trackCoverOnline => 'Online cover'; + String get trackCoverOnline => 'Pochette en ligne'; @override - String get regionCountryUS => 'United States'; + String get regionCountryUS => 'États-Unis'; @override - String get regionCountryGB => 'United Kingdom'; + String get regionCountryGB => 'Royaume-Uni'; @override String get regionCountryFR => 'France'; @override - String get regionCountryDE => 'Germany'; + String get regionCountryDE => 'Allemagne'; @override - String get regionCountryJP => 'Japan'; + String get regionCountryJP => 'Japon'; @override - String get regionCountryKR => 'South Korea'; + String get regionCountryKR => 'Corée du Sud'; @override - String get regionCountryIN => 'India'; + String get regionCountryIN => 'Inde'; @override - String get regionCountryID => 'Indonesia'; + String get regionCountryID => 'Indonésie'; @override - String get regionCountryBR => 'Brazil'; + String get regionCountryBR => 'Brésil'; @override - String get regionCountryMX => 'Mexico'; + String get regionCountryMX => 'Mexique'; @override - String get regionCountryAU => 'Australia'; + String get regionCountryAU => 'Australie'; @override String get regionCountryCA => 'Canada'; @@ -4881,47 +4887,47 @@ class AppLocalizationsFr extends AppLocalizations { String get regionCountryXK => 'Kosovo'; @override - String get extensionVerificationBrowserTitle => 'Verification browser'; + String get extensionVerificationBrowserTitle => 'Navigateur de vérification'; @override String get extensionVerificationBrowserSubtitleExternal => - 'Open challenges in the default browser first'; + 'Ouvrez d\'abord les défis dans le navigateur par défaut'; @override String get extensionVerificationBrowserSubtitleInApp => - 'Open challenges in the in-app browser first'; + 'Ouvrez d\'abord les défis dans le navigateur intégré à l\'application'; @override - String get extensionVerificationBrowserExternal => 'External'; + String get extensionVerificationBrowserExternal => 'Externe'; @override - String get extensionVerificationBrowserInApp => 'In-app'; + String get extensionVerificationBrowserInApp => 'Dans l\'application'; @override String get extensionVerificationHelpTitleManual => - 'Open verification manually'; + 'Lancer la vérification manuellement'; @override String get extensionVerificationHelpTitleWaiting => - 'Verification still waiting'; + 'La vérification est toujours en attente'; @override String get extensionVerificationHelpMessageManual => - 'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'; + 'SpotiFLAC Mobile n\'a pas pu ouvrir automatiquement le navigateur. Ouvrez ce lien dans votre navigateur ou copiez-le manuellement.'; @override String get 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.'; + 'Si le navigateur ne s\'est pas ouvert, ou si la vérification s\'est terminée sans que vous ne soyez redirigé vers SpotiFLAC Mobile, ouvrez à nouveau ce lien ou copiez-le manuellement.'; @override - String get extensionVerificationClose => 'Close'; + String get extensionVerificationClose => 'Fermer'; @override - String get extensionVerificationCopyLink => 'Copy link'; + String get extensionVerificationCopyLink => 'Copier le lien'; @override - String get extensionVerificationLinkCopied => 'Verification link copied'; + String get extensionVerificationLinkCopied => 'Lien de vérification copié'; @override - String get extensionVerificationOpenBrowser => 'Open browser'; + String get extensionVerificationOpenBrowser => 'Ouvrir le navigateur'; } diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart index 8a255c85..68de6340 100644 --- a/lib/l10n/app_localizations_id.dart +++ b/lib/l10n/app_localizations_id.dart @@ -27,7 +27,8 @@ class AppLocalizationsId extends AppLocalizations { String get homeTitle => 'Beranda'; @override - String get homeSubtitle => 'Paste a supported URL or search by name'; + String get homeSubtitle => + 'Tempel URL yang didukung atau cari berdasarkan nama'; @override String get homeEmptyTitle => 'Belum ada penyedia pencarian'; @@ -36,7 +37,8 @@ class AppLocalizationsId extends AppLocalizations { String get homeEmptySubtitle => 'Instal ekstensi untuk melanjutkan.'; @override - String get homeSupports => 'Mendukung: URL Track, Album, Playlist, Artis'; + String get homeSupports => + 'Mendukung: URL Lagu, Album, Daftar Putar, dan Artis'; @override String get homeRecent => 'Terbaru'; @@ -135,7 +137,7 @@ class AppLocalizationsId extends AppLocalizations { } @override - String get optionsDefaultSearchTab => 'Default Search Tab'; + String get optionsDefaultSearchTab => 'Tab Pencarian Default'; @override String get optionsDefaultSearchTabSubtitle => @@ -143,7 +145,7 @@ class AppLocalizationsId extends AppLocalizations { @override String get optionsSwitchBack => - 'Choose the default search provider to switch back from an extension'; + 'Pilih penyedia pencarian default untuk beralih kembali dari ekstensi'; @override String get optionsAutoFallback => 'Cadangan Otomatis'; @@ -156,12 +158,10 @@ class AppLocalizationsId extends AppLocalizations { String get optionsUseExtensionProviders => 'Gunakan Provider Ekstensi'; @override - String get optionsUseExtensionProvidersOn => - 'Extension providers are enabled'; + String get optionsUseExtensionProvidersOn => 'Penyedia ekstensi diaktifkan'; @override - String get optionsUseExtensionProvidersOff => - 'Extension providers are required'; + String get optionsUseExtensionProvidersOff => 'Penyedia ekstensi diwajibkan'; @override String get optionsEmbedLyrics => 'Sematkan Lirik'; @@ -189,20 +189,20 @@ class AppLocalizationsId extends AppLocalizations { 'Dinonaktifkan: tidak ada tag normalisasi kenyaringan'; @override - String get trackReplayGain => 'Rescan ReplayGain'; + String get trackReplayGain => 'Pindai ulang ReplayGain'; @override String get trackReplayGainSubtitle => - 'Analyze loudness and write ReplayGain tags'; + 'Analisis kenyaringan dan tulis tag ReplayGain'; @override - String get trackReplayGainScanning => 'Analyzing loudness...'; + String get trackReplayGainScanning => 'Menganalisis kenyaringan...'; @override - String get trackReplayGainSuccess => 'ReplayGain tags added'; + String get trackReplayGainSuccess => 'Tag ReplayGain ditambahkan'; @override - String get trackReplayGainFailed => 'Failed to add ReplayGain tags'; + String get trackReplayGainFailed => 'Gagal menambahkan tag ReplayGain'; @override String selectionReplayGainCount(int count) { @@ -210,19 +210,19 @@ class AppLocalizationsId extends AppLocalizations { } @override - String get replayGainBatchConfirmTitle => 'Add ReplayGain'; + String get replayGainBatchConfirmTitle => 'Tambah ReplayGain'; @override String replayGainBatchConfirmMessage(int count) { - return 'Analyze loudness and write ReplayGain tags to $count track(s)?'; + return 'Analisis kenyaringan dan tulis tag ReplayGain ke $count trek?'; } @override - String get replayGainBatchAnalyzing => 'Analyzing ReplayGain...'; + String get replayGainBatchAnalyzing => 'Menganalisis ReplayGain...'; @override String replayGainBatchSuccess(int success, int total) { - return 'ReplayGain added to $success of $total tracks'; + return 'ReplayGain ditambahkan ke $success dari $total trek'; } @override @@ -247,10 +247,10 @@ class AppLocalizationsId extends AppLocalizations { 'Tulis satu tag artis per artis untuk FLAC dan Opus; MP3 dan M4A tetap tergabung.'; @override - String get optionsExtensionStore => 'Extension Repo'; + String get optionsExtensionStore => 'Repositori Ekstensi'; @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; + String get optionsExtensionStoreSubtitle => 'Tampilkan tab Repo di navigasi'; @override String get optionsCheckUpdates => 'Periksa Pembaruan'; @@ -326,7 +326,7 @@ class AppLocalizationsId extends AppLocalizations { String get extensionsUninstall => 'Copot'; @override - String get storeTitle => 'Extension Repo'; + String get storeTitle => 'Repositori Ekstensi'; @override String get storeSearch => 'Cari ekstensi...'; @@ -350,7 +350,7 @@ class AppLocalizationsId extends AppLocalizations { String get aboutMobileDeveloper => 'Pengembang versi mobile'; @override - String get aboutOriginalCreator => 'Pembuat SpotiFLAC asli'; + String get aboutOriginalCreator => 'Pencipta SpotiFLAC asli'; @override String get aboutLogoArtist => @@ -372,7 +372,7 @@ class AppLocalizationsId extends AppLocalizations { String get aboutPCSource => 'Kode sumber PC'; @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; + String get aboutKeepAndroidOpen => 'Biarkan Android tetap terbuka'; @override String get aboutReportIssue => 'Laporkan masalah'; @@ -410,11 +410,11 @@ class AppLocalizationsId extends AppLocalizations { @override String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; + 'Pencipta QQDL & HiFi API. Proyek ini membantu membentuk dukungan unduhan lossless.'; @override String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; + 'Pencipta proyek HiFi asli. Sebuah fondasi untuk integrasi sumber lossless.'; @override String get aboutSjdonadoDesc => @@ -422,7 +422,7 @@ class AppLocalizationsId extends AppLocalizations { @override String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; + 'Cari metadata musik, kelola ekstensi, dan atur perpustakaan Anda.'; @override String get artistAlbums => 'Album'; @@ -571,14 +571,14 @@ class AppLocalizationsId extends AppLocalizations { 'Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.'; @override - String get setupLanguageTitle => 'Choose Language'; + String get setupLanguageTitle => 'Pilih Bahasa'; @override String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; + 'Pilih bahasa pilihan Anda untuk aplikasi ini. Anda dapat mengubahnya nanti di Pengaturan.'; @override - String get setupLanguageSystemDefault => 'System Default'; + String get setupLanguageSystemDefault => 'Bawaan Sistem'; @override String get dialogCancel => 'Batal'; @@ -602,16 +602,16 @@ class AppLocalizationsId extends AppLocalizations { String get dialogImport => 'Impor'; @override - String get dialogDownload => 'Download'; + String get dialogDownload => 'Unduh'; @override - String get previewPlay => 'Play preview'; + String get previewPlay => 'Putar pratinjau'; @override - String get previewStop => 'Stop preview'; + String get previewStop => 'Hentikan pratinjau'; @override - String get previewUnavailable => 'Preview unavailable'; + String get previewUnavailable => 'Pratinjau tidak tersedia'; @override String get dialogDiscard => 'Buang'; @@ -777,7 +777,7 @@ class AppLocalizationsId extends AppLocalizations { String get errorNoTracksFound => 'Tidak ada lagu ditemukan'; @override - String get searchEmptyResultSubtitle => 'Try another keyword'; + String get searchEmptyResultSubtitle => 'Coba kata kunci lain'; @override String get errorUrlNotRecognized => 'Tautan tidak dikenali'; @@ -848,34 +848,34 @@ class AppLocalizationsId extends AppLocalizations { String get searchPlaylists => 'Playlist'; @override - String get searchSortTitle => 'Sort Results'; + String get searchSortTitle => 'Urutkan hasil'; @override String get searchSortDefault => 'Default'; @override - String get searchSortTitleAZ => 'Title (A-Z)'; + String get searchSortTitleAZ => 'Judul (A-Z)'; @override - String get searchSortTitleZA => 'Title (Z-A)'; + String get searchSortTitleZA => 'Judul (Z-A)'; @override - String get searchSortArtistAZ => 'Artist (A-Z)'; + String get searchSortArtistAZ => 'Artis (A-Z)'; @override - String get searchSortArtistZA => 'Artist (Z-A)'; + String get searchSortArtistZA => 'Artis (Z-A)'; @override - String get searchSortDurationShort => 'Duration (Shortest)'; + String get searchSortDurationShort => 'Durasi (Terpendek)'; @override - String get searchSortDurationLong => 'Duration (Longest)'; + String get searchSortDurationLong => 'Durasi (Terpanjang)'; @override - String get searchSortDateOldest => 'Release Date (Oldest)'; + String get searchSortDateOldest => 'Tanggal rilis (Terlama)'; @override - String get searchSortDateNewest => 'Release Date (Newest)'; + String get searchSortDateNewest => 'Tanggal rilis (Terbaru)'; @override String get tooltipPlay => 'Putar'; @@ -956,7 +956,7 @@ class AppLocalizationsId extends AppLocalizations { String get updateDownloading => 'Mengunduh...'; @override - String get updateWhatsNew => 'Yang Baru'; + String get updateWhatsNew => 'Apa yang baru'; @override String get updateDownloadInstall => 'Unduh & Pasang'; @@ -976,18 +976,18 @@ class AppLocalizationsId extends AppLocalizations { 'Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.'; @override - String get providerPriorityFallbackExtensionsTitle => 'Extension Fallback'; + String get providerPriorityFallbackExtensionsTitle => 'Ekstensi Cadangan'; @override String get providerPriorityFallbackExtensionsDescription => - 'Choose which installed download extensions can be used during automatic fallback.'; + 'Pilih ekstensi unduhan terpasang mana yang dapat digunakan selama fallback otomatis.'; @override String get providerPriorityFallbackExtensionsHint => - 'Only enabled extensions with download-provider capability are listed here.'; + 'Hanya ekstensi yang diaktifkan dengan kemampuan penyedia unduhan yang tercantum di sini.'; @override - String get providerBuiltIn => 'Legacy'; + String get providerBuiltIn => 'Warisan'; @override String get providerExtension => 'Ekstensi'; @@ -1158,10 +1158,11 @@ class AppLocalizationsId extends AppLocalizations { String get settingsAppearanceSubtitle => 'Tema, warna, tampilan'; @override - String get settingsDownloadSubtitle => 'Service, quality, fallback'; + String get settingsDownloadSubtitle => 'Layanan, kualitas, cadangan'; @override - String get settingsOptionsSubtitle => 'Fallback, metadata, lyrics, cover art'; + String get settingsOptionsSubtitle => + 'Cadangan, metadata, lirik, sampul album'; @override String get settingsExtensionsSubtitle => 'Kelola provider unduhan'; @@ -1249,7 +1250,7 @@ class AppLocalizationsId extends AppLocalizations { String get trackGenre => 'Genre'; @override - String get trackLabel => 'Lebel'; + String get trackLabel => 'Label'; @override String get trackCopyright => 'Hak cipta'; @@ -1262,20 +1263,20 @@ class AppLocalizationsId extends AppLocalizations { @override String trackLyricsSource(String source) { - return 'Source: $source'; + return 'Sumber: $source'; } @override String get trackLyricsNotAvailable => 'Lirik tidak tersedia untuk lagu ini'; @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; + String get trackLyricsNotInFile => 'Tidak ditemukan lirik dalam file ini'; @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; + String get trackFetchOnlineLyrics => 'Ambil dari Online'; @override - String get trackLyricsTimeout => 'Permintaan timeout. Coba lagi nanti.'; + String get trackLyricsTimeout => 'Permintaan habis waktu. Coba lagi nanti.'; @override String get trackLyricsLoadFailed => 'Gagal memuat lirik'; @@ -1342,52 +1343,52 @@ class AppLocalizationsId extends AppLocalizations { String get storeClearFilters => 'Hapus filter'; @override - String get storeAddRepoTitle => 'Add Extension Repository'; + String get storeAddRepoTitle => 'Tambahkan Repositori Ekstensi'; @override String get storeAddRepoDescription => - 'Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.'; + 'Masukkan URL repositori GitHub yang berisi file registry.json untuk menelusuri dan memasang ekstensi.'; @override - String get storeRepoUrlLabel => 'Repository URL'; + String get storeRepoUrlLabel => 'Tautan Repositori'; @override String get storeRepoUrlHint => 'https://github.com/user/repo'; @override String get storeRepoUrlHelper => - 'e.g. https://github.com/user/extensions-repo'; + 'misalnya https://github.com/user/extensions-repo'; @override - String get storeAddRepoButton => 'Add Repository'; + String get storeAddRepoButton => 'Tambahkan Repositori'; @override - String get storeChangeRepoTooltip => 'Change repository'; + String get storeChangeRepoTooltip => 'Ubah repositori'; @override - String get storeRepoDialogTitle => 'Extension Repository'; + String get storeRepoDialogTitle => 'Repositori Ekstensi'; @override - String get storeRepoDialogCurrent => 'Current repository:'; + String get storeRepoDialogCurrent => 'Repositori saat ini:'; @override - String get storeNewRepoUrlLabel => 'New Repository URL'; + String get storeNewRepoUrlLabel => 'URL Repositori Baru'; @override - String get storeLoadError => 'Failed to load repository'; + String get storeLoadError => 'Gagal memuat repositori'; @override - String get storeEmptyNoExtensions => 'No extensions available'; + String get storeEmptyNoExtensions => 'Tidak ada ekstensi yang tersedia'; @override - String get storeEmptyNoResults => 'No extensions found'; + String get storeEmptyNoResults => 'Tidak ada ekstensi ditemukan'; @override - String get extensionDefaultProvider => 'Default Search'; + String get extensionDefaultProvider => 'Pencarian default'; @override String get extensionDefaultProviderSubtitle => - 'Use the default metadata search'; + 'Gunakan pencarian metadata default'; @override String get extensionAuthor => 'Pembuat'; @@ -1480,12 +1481,12 @@ class AppLocalizationsId extends AppLocalizations { @override String extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; + return '$count ekstensi berhasil terpasang'; } @override String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; + return 'Ekstensi yang terpasang berjumlah $installed dari $attempted'; } @override @@ -1496,11 +1497,11 @@ class AppLocalizationsId extends AppLocalizations { 'Atur urutan layanan unduhan'; @override - String get extensionsFallbackTitle => 'Fallback Extensions'; + String get extensionsFallbackTitle => 'Ekstensi Cadangan'; @override String get extensionsFallbackSubtitle => - 'Choose which installed download extensions can be used as fallback'; + 'Pilih ekstensi unduhan terpasang mana yang dapat digunakan sebagai cadangan'; @override String get extensionsNoDownloadProvider => @@ -1556,40 +1557,41 @@ class AppLocalizationsId extends AppLocalizations { String get downloadLossy320 => 'Lossy 320kbps'; @override - String get downloadLossyFormat => 'Lossy Format'; + String get downloadLossyFormat => 'Format Lossy'; @override - String get downloadLossy320Format => 'Lossy 320kbps Format'; + String get downloadLossy320Format => 'Format Lossy 320kbps'; @override String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; + 'Pilih format output untuk unduhan lossy 320kbps. Aliran data asli akan dikonversi ke format yang Anda pilih bila diperlukan.'; @override String get downloadLossyMp3 => 'MP3 320kbps'; @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; + String get downloadLossyMp3Subtitle => + 'Kompatibilitas terbaik, ~10MB per trek'; @override String get downloadLossyAac => 'AAC/M4A 320kbps'; @override String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; + 'Kompatibilitas seluler terbaik, kontainer M4A'; @override String get downloadLossyOpus256 => 'Opus 256kbps'; @override String get downloadLossyOpus256Subtitle => - 'Best quality Opus, ~8MB per track'; + 'Opus kualitas terbaik, ~8MB per trek'; @override String get downloadLossyOpus128 => 'Opus 128kbps'; @override - String get downloadLossyOpus128Subtitle => 'Smallest size, ~4MB per track'; + String get downloadLossyOpus128Subtitle => 'Ukuran terkecil, ~4MB per trek'; @override String get qualityNote => @@ -1608,7 +1610,8 @@ class AppLocalizationsId extends AppLocalizations { String get downloadAlbumFolderStructure => 'Struktur Folder Album'; @override - String get albumFolderStructureDescription => 'Pilih struktur folder album'; + String get albumFolderStructureDescription => + 'Pilih bagaimana struktur folder album akan dibuat'; @override String get downloadUseAlbumArtistForFolders => @@ -2920,93 +2923,110 @@ class AppLocalizationsId extends AppLocalizations { String get settingsDonateSubtitle => 'Buy the developer a coffee'; @override - String get settingsBackup => 'Cadangkan & Pulihkan'; + String get settingsBackup => 'Backup & Restore'; @override String get settingsBackupSubtitle => - 'Pindahkan pustaka, riwayat, dan pengaturan ke perangkat baru'; + 'Move your library, history and settings to a new device'; @override - String get backupTitle => 'Cadangkan & Pulihkan'; + String get backupTitle => 'Backup & Restore'; @override - String get backupExportSectionTitle => 'Buat cadangan'; + String get backupExportSectionTitle => 'Create backup'; @override String get backupExportSectionDescription => - 'Simpan pengaturan, riwayat unduhan, lagu disukai, wishlist, artis favorit, dan playlist ke dalam satu file yang bisa kamu simpan atau pindahkan ke ponsel lain.'; + 'Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.'; @override - String get backupExportButton => 'Buat file cadangan'; + String get backupExportButton => 'Create backup file'; @override - String get backupImportSectionTitle => 'Pulihkan cadangan'; + String get backupImportSectionTitle => 'Restore backup'; @override String get backupImportSectionDescription => - 'Pilih file cadangan untuk memulihkan data. Ini akan menggantikan pengaturan, riwayat, dan pustaka di perangkat ini.'; + 'Pick a backup file to restore your data. This replaces the current settings, history and library on this device.'; @override - String get backupImportButton => 'Pilih file cadangan'; + String get backupImportButton => 'Choose backup file'; @override - String get backupCreating => 'Membuat cadangan...'; + String get backupCreating => 'Creating backup...'; @override - String get backupCreated => 'Cadangan berhasil dibuat'; + String get backupCreated => 'Backup created'; @override - String get backupCreateFailed => 'Gagal membuat cadangan'; + String get backupCreateFailed => 'Failed to create backup'; @override - String get backupEmpty => 'Belum ada data untuk dicadangkan'; + String get backupEmpty => 'There is nothing to back up yet'; @override - String get backupRestoreConfirmTitle => 'Pulihkan cadangan ini?'; + String get backupRestoreConfirmTitle => 'Restore this backup?'; @override String get backupRestoreConfirmMessage => - 'Ini akan menggantikan pengaturan, riwayat unduhan, lagu disukai, wishlist, dan playlist saat ini dengan isi cadangan. Tindakan ini tidak bisa dibatalkan.'; + 'This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.'; @override - String get backupRestoreConfirmButton => 'Pulihkan'; + String get backupRestoreConfirmButton => 'Restore'; @override - String get backupRestoring => 'Memulihkan cadangan...'; + String get backupRestoring => 'Restoring backup...'; @override - String get backupRestored => 'Cadangan berhasil dipulihkan'; + String get backupRestored => 'Backup restored successfully'; @override - String get backupRestoreFailed => 'Gagal memulihkan cadangan'; + String get backupRestoreFailed => 'Failed to restore backup'; @override - String get backupInvalidFile => - 'File ini bukan cadangan SpotiFLAC yang valid'; + String get backupInvalidFile => 'This file is not a valid SpotiFLAC backup'; @override String get backupRestoreRestartHint => - 'Mulai ulang aplikasi untuk memastikan semua perubahan diterapkan.'; + 'Restart the app to make sure every change is applied.'; @override - String get backupContentsTitle => 'Isi cadangan'; + String get backupContentsTitle => 'Backup contents'; @override - String get backupContentsSettings => 'Pengaturan aplikasi'; + String get backupContentsSettings => 'App settings'; @override String backupContentsHistory(int count) { - return '$count item riwayat'; + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'items', + one: 'item', + ); + return '$count history $_temp0'; } @override String backupContentsLiked(int count) { - return '$count lagu disukai'; + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count liked $_temp0'; } @override String backupContentsWishlist(int count) { - return '$count lagu di wishlist'; + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count wishlist $_temp0'; } @override @@ -3014,7 +3034,7 @@ class AppLocalizationsId extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count playlist', + other: '$count playlists', one: '1 playlist', ); return '$_temp0'; @@ -3025,8 +3045,8 @@ class AppLocalizationsId extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count artis favorit', - one: '1 artis favorit', + other: '$count favorite artists', + one: '1 favorite artist', ); return '$_temp0'; } @@ -3036,22 +3056,28 @@ class AppLocalizationsId extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count extension', + other: '$count extensions', one: '1 extension', ); return '$_temp0'; } @override - String get backupIncludeSecrets => 'Sertakan kredensial extension'; + String get backupIncludeSecrets => 'Include extension credentials'; @override String get backupIncludeSecretsDescription => - 'Token dan API key dari extension akan ikut disimpan ke file cadangan. Jaga kerahasiaan file-nya. Jika dimatikan, kamu perlu memasukkannya lagi setelah pemulihan.'; + '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.'; @override String backupExtensionsRestoreFailed(int count) { - return '$count extension gagal dipasang ulang. Pasang manual dari store.'; + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'extensions', + one: 'extension', + ); + return '$count $_temp0 could not be reinstalled. Install them manually from the store.'; } @override @@ -3202,15 +3228,15 @@ class AppLocalizationsId extends AppLocalizations { 'Using standard network settings'; @override - String get downloadAllowLocalNetwork => 'Izinkan Akses Jaringan Lokal'; + String get downloadAllowLocalNetwork => 'Allow Local Network Access'; @override String get downloadAllowLocalNetworkEnabled => - 'Permintaan ke alamat lokal/privat diizinkan (untuk proxy lokal atau DNS kustom)'; + 'Requests to local/private addresses are allowed (for local proxy or custom DNS)'; @override String get downloadAllowLocalNetworkDisabled => - 'Alamat lokal/privat diblokir demi keamanan'; + 'Local/private addresses are blocked for security'; @override String get downloadSelectServiceToEnable => @@ -4481,83 +4507,83 @@ class AppLocalizationsId extends AppLocalizations { } @override - String get libraryPlayback => 'Pemutaran'; + String get libraryPlayback => 'Playback'; @override - String get libraryExternalPlayer => 'Pemutar eksternal'; + String get libraryExternalPlayer => 'External player'; @override String get libraryExternalPlayerSubtitle => - 'Disarankan untuk mendengarkan, kualitas terbaik, pemutaran tanpa jeda, EQ, dan dukungan format lebih luas'; + 'Recommended for listening, best quality, gapless playback, EQ, and wider format support'; @override - String get libraryBuiltInPreviewPlayer => 'Pemutar pratinjau bawaan'; + String get libraryBuiltInPreviewPlayer => 'Built-in preview player'; @override String get libraryBuiltInPreviewPlayerSubtitle => - 'Hanya untuk pratinjau lokal cepat di dalam SpotiFLAC Mobile, tidak disarankan untuk mendengarkan secara rutin'; + 'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'; @override String get libraryBuiltInPlayerInfo => - 'Pemutar bawaan adalah alat pratinjau untuk memeriksa trek lokal dengan cepat. Gunakan pemutar musik eksternal untuk mendengarkan sebenarnya.'; + 'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'; @override - String get nowPlayingTitle => 'Sedang Diputar'; + String get nowPlayingTitle => 'Now Playing'; @override - String get nowPlayingNothingPlaying => 'Tidak ada yang diputar'; + String get nowPlayingNothingPlaying => 'Nothing is playing'; @override - String get nowPlayingMinimize => 'Minimalkan'; + String get nowPlayingMinimize => 'Minimize'; @override - String get nowPlayingUpNext => 'Berikutnya'; + String get nowPlayingUpNext => 'Up next'; @override - String get nowPlayingDetails => 'Detail'; + String get nowPlayingDetails => 'Details'; @override - String get nowPlayingOpenInExternalPlayer => 'Buka di pemutar eksternal'; + String get nowPlayingOpenInExternalPlayer => 'Open in external player'; @override - String get nowPlayingTabPlayer => 'Pemutar'; + String get nowPlayingTabPlayer => 'Player'; @override - String get nowPlayingTabLyrics => 'Lirik'; + String get nowPlayingTabLyrics => 'Lyrics'; @override - String get nowPlayingNoLyrics => 'Tidak ada lirik di file ini'; + String get nowPlayingNoLyrics => 'No lyrics in this file'; @override - String get nowPlayingLibraryEmpty => 'Perpustakaan Anda kosong'; + String get nowPlayingLibraryEmpty => 'Your library is empty'; @override String nowPlayingShuffleLibraryFailed(String error) { - return 'Tidak dapat mengacak perpustakaan: $error'; + return 'Could not shuffle library: $error'; } @override - String get nowPlayingShuffleOn => 'Acak aktif'; + String get nowPlayingShuffleOn => 'Shuffle on'; @override - String get nowPlayingPlayInOrder => 'Putar berurutan'; + String get nowPlayingPlayInOrder => 'Play in order'; @override - String get nowPlayingShuffleLibrary => 'Acak perpustakaan'; + String get nowPlayingShuffleLibrary => 'Shuffle library'; @override - String get nowPlayingQueueEmpty => 'Antrean kosong'; + String get nowPlayingQueueEmpty => 'Queue is empty'; @override - String get nowPlayingNoMetadata => 'Metadata tidak tersedia'; + String get nowPlayingNoMetadata => 'No metadata available'; @override String get announcementUnableToOpenLink => - 'Tidak dapat membuka tautan. Silakan coba lagi.'; + 'Unable to open link. Please try again.'; @override String trackConvertLosslessOutputWithCap(String quality) { - return 'Output lossless dengan batas $quality'; + return 'Lossless output with $quality cap'; } @override @@ -4566,7 +4592,7 @@ class AppLocalizationsId extends AppLocalizations { String targetFormat, String quality, ) { - return 'Konversi dari $sourceFormat ke $targetFormat ($quality)?\n\nOutput tetap codec lossless, tetapi kedalaman bit/sample rate akan dibatasi. File asli akan dihapus setelah konversi.'; + return '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.'; } @override @@ -4578,10 +4604,10 @@ class AppLocalizationsId extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'trek', - one: 'trek', + other: 'tracks', + one: 'track', ); - return 'Konversi $count $_temp0 ke $format ($quality)?\n\nOutput tetap codec lossless, tetapi kedalaman bit/sample rate akan dibatasi. File asli akan dihapus setelah konversi.'; + return 'Convert $count $_temp0 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.'; } @override @@ -4604,47 +4630,46 @@ class AppLocalizationsId extends AppLocalizations { @override String get aboutPaxsenixSubtitle => - 'Proxy lirik untuk Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, dan Genius'; + 'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'; @override - String get snackbarPlayingNext => 'Memutar berikutnya'; + String get snackbarPlayingNext => 'Playing next'; @override - String get snackbarAddedToQueueGeneric => 'Ditambahkan ke antrean'; + String get snackbarAddedToQueueGeneric => 'Added to queue'; @override String selectionDeletePlaylistsCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'playlist', + other: 'playlists', one: 'playlist', ); - return 'Hapus $count $_temp0'; + return 'Delete $count $_temp0'; } @override - String get actionShuffle => 'Acak'; + String get actionShuffle => 'Shuffle'; @override - String get downloadPrimaryArtistOnlyOn => 'Hanya utama: Aktif'; + String get downloadPrimaryArtistOnlyOn => 'Primary only: On'; @override - String get downloadPrimaryArtistOnlyOff => 'Hanya utama: Nonaktif'; + String get downloadPrimaryArtistOnlyOff => 'Primary only: Off'; @override String get downloadAlbumArtistMetadataPrimaryOnly => - 'Metadata Album Artist: Hanya utama'; + 'Album Artist metadata: Primary only'; @override - String get downloadAlbumArtistMetadataFull => - 'Metadata Album Artist: Lengkap'; + String get downloadAlbumArtistMetadataFull => 'Album Artist metadata: Full'; @override - String get trackConvertOriginal => 'Asli'; + String get trackConvertOriginal => 'Original'; @override - String get trackConvertOriginalQuality => 'Kualitas asli'; + String get trackConvertOriginalQuality => 'Original quality'; @override String get trackConvertLosslessSuffix => 'Lossless'; @@ -4656,7 +4681,7 @@ class AppLocalizationsId extends AppLocalizations { String get trackConvertResampler => 'Resampler'; @override - String get trackConvertDitherNone => 'Tidak ada'; + String get trackConvertDitherNone => 'None'; @override String get trackConvertDitherTriangular => 'TPDF'; @@ -4671,35 +4696,35 @@ class AppLocalizationsId extends AppLocalizations { String get trackConvertResamplerSoxr => 'SoXr'; @override - String get updateSeeReleaseNotes => 'Lihat catatan rilis untuk detail.'; + String get updateSeeReleaseNotes => 'See release notes for details.'; @override - String get unknownTitle => 'Judul tidak diketahui'; + String get unknownTitle => 'Unknown title'; @override - String get trackPlayNext => 'Putar berikutnya'; + String get trackPlayNext => 'Play next'; @override - String get trackAddToQueue => 'Tambah ke antrean'; + String get trackAddToQueue => 'Add to queue'; @override String snackbarExtensionInstalledEnable(String extensionName) { - return '$extensionName terpasang. Aktifkan di Pengaturan > Ekstensi'; + return '$extensionName installed. Enable it in Settings > Extensions'; } @override String snackbarExtensionUpdatedVersion(String extensionName, String version) { - return '$extensionName diperbarui ke v$version'; + return '$extensionName updated to v$version'; } @override String snackbarFailedToInstallNamed(String extensionName) { - return 'Gagal memasang $extensionName'; + return 'Failed to install $extensionName'; } @override String snackbarFailedToUpdateNamed(String extensionName) { - return 'Gagal memperbarui $extensionName'; + return 'Failed to update $extensionName'; } @override @@ -4709,25 +4734,25 @@ class AppLocalizationsId extends AppLocalizations { String get releaseTypeSingle => 'Single'; @override - String get trackCoverOnline => 'Sampul daring'; + String get trackCoverOnline => 'Online cover'; @override - String get regionCountryUS => 'Amerika Serikat'; + String get regionCountryUS => 'United States'; @override - String get regionCountryGB => 'Britania Raya'; + String get regionCountryGB => 'United Kingdom'; @override - String get regionCountryFR => 'Prancis'; + String get regionCountryFR => 'France'; @override - String get regionCountryDE => 'Jerman'; + String get regionCountryDE => 'Germany'; @override - String get regionCountryJP => 'Jepang'; + String get regionCountryJP => 'Japan'; @override - String get regionCountryKR => 'Korea Selatan'; + String get regionCountryKR => 'South Korea'; @override String get regionCountryIN => 'India'; @@ -4736,62 +4761,62 @@ class AppLocalizationsId extends AppLocalizations { String get regionCountryID => 'Indonesia'; @override - String get regionCountryBR => 'Brasil'; + String get regionCountryBR => 'Brazil'; @override - String get regionCountryMX => 'Meksiko'; + String get regionCountryMX => 'Mexico'; @override String get regionCountryAU => 'Australia'; @override - String get regionCountryCA => 'Kanada'; + String get regionCountryCA => 'Canada'; @override String get regionCountryXK => 'Kosovo'; @override - String get extensionVerificationBrowserTitle => 'Browser verifikasi'; + String get extensionVerificationBrowserTitle => 'Verification browser'; @override String get extensionVerificationBrowserSubtitleExternal => - 'Buka tantangan di browser default terlebih dahulu'; + 'Open challenges in the default browser first'; @override String get extensionVerificationBrowserSubtitleInApp => - 'Buka tantangan di browser dalam aplikasi terlebih dahulu'; + 'Open challenges in the in-app browser first'; @override - String get extensionVerificationBrowserExternal => 'Eksternal'; + String get extensionVerificationBrowserExternal => 'External'; @override - String get extensionVerificationBrowserInApp => 'Dalam aplikasi'; + String get extensionVerificationBrowserInApp => 'In-app'; @override String get extensionVerificationHelpTitleManual => - 'Buka verifikasi secara manual'; + 'Open verification manually'; @override String get extensionVerificationHelpTitleWaiting => - 'Verifikasi masih menunggu'; + 'Verification still waiting'; @override String get extensionVerificationHelpMessageManual => - 'SpotiFLAC Mobile tidak dapat membuka browser secara otomatis. Buka tautan ini di browser Anda, atau salin secara manual.'; + 'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'; @override String get extensionVerificationHelpMessageWaiting => - 'Jika browser tidak terbuka, atau verifikasi selesai tetapi tidak kembali ke SpotiFLAC Mobile, buka tautan ini lagi atau salin secara manual.'; + 'If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.'; @override - String get extensionVerificationClose => 'Tutup'; + String get extensionVerificationClose => 'Close'; @override - String get extensionVerificationCopyLink => 'Salin tautan'; + String get extensionVerificationCopyLink => 'Copy link'; @override - String get extensionVerificationLinkCopied => 'Tautan verifikasi disalin'; + String get extensionVerificationLinkCopied => 'Verification link copied'; @override - String get extensionVerificationOpenBrowser => 'Buka browser'; + String get extensionVerificationOpenBrowser => 'Open browser'; } diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart index 51110a4f..a87ebf66 100644 --- a/lib/l10n/app_localizations_ja.dart +++ b/lib/l10n/app_localizations_ja.dart @@ -1592,7 +1592,8 @@ class AppLocalizationsJa extends AppLocalizations { String get downloadAlbumFolderStructure => 'アルバムフォルダの構造'; @override - String get albumFolderStructureDescription => 'アルバムフォルダの構成を選択'; + String get albumFolderStructureDescription => + 'Choose how album folders are structured'; @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart index 47a26a22..13a7f428 100644 --- a/lib/l10n/app_localizations_ko.dart +++ b/lib/l10n/app_localizations_ko.dart @@ -12,61 +12,61 @@ class AppLocalizationsKo extends AppLocalizations { String get appName => 'SpotiFLAC Mobile'; @override - String get navHome => 'Home'; + String get navHome => '홈'; @override - String get navLibrary => 'Library'; + String get navLibrary => '라이브러리'; @override - String get navSettings => 'Settings'; + String get navSettings => '설정'; @override - String get navStore => 'Repo'; + String get navStore => '리포'; @override - String get homeTitle => 'Home'; + String get homeTitle => '홈'; @override - String get homeSubtitle => '지원되는 URL을 붙여 넣거나, 이름을 검색'; + String get homeSubtitle => '지원되는 URL을 붙여넣거나, 이름으로 검색하세요'; @override - String get homeEmptyTitle => 'No search providers yet'; + String get homeEmptyTitle => '아직 검색 제공자가 없음'; @override - String get homeEmptySubtitle => 'Install an extension to continue.'; + String get homeEmptySubtitle => '계속하려면 확장 프로그램을 설치하세요'; @override - String get homeSupports => '지원 항목: 트랙, 앨범, 플레이리스트, 아티스트 URLs'; + String get homeSupports => '지원 항목: 트랙, 앨범, 재생목록, 아티스트 URL'; @override String get homeRecent => '최근 기록'; @override - String get historyFilterAll => 'All'; + String get historyFilterAll => '모두'; @override - String get historyFilterAlbums => 'Albums'; + String get historyFilterAlbums => '앨범'; @override - String get historyFilterSingles => 'Singles'; + String get historyFilterSingles => '싱글'; @override - String get historySearchHint => '검색 기록...'; + String get historySearchHint => '기록 검색...'; @override - String get settingsTitle => 'Settings'; + String get settingsTitle => '설정'; @override String get settingsDownload => '다운로드'; @override - String get settingsAppearance => '외관'; + String get settingsAppearance => '디자인'; @override String get settingsOptions => '옵션'; @override - String get settingsExtensions => '확장 기능'; + String get settingsExtensions => '확장 프로그램'; @override String get settingsAbout => '정보'; @@ -75,35 +75,35 @@ class AppLocalizationsKo extends AppLocalizations { String get downloadTitle => '다운로드'; @override - String get downloadAskQualitySubtitle => '다운로드를 할 때마다 품질을 선택하도록 합니다'; + String get downloadAskQualitySubtitle => '다운로드를 할 때마다 음질을 선택하도록 합니다'; @override String get downloadFilenameFormat => '파일 이름 형식'; @override - String get downloadSingleFilenameFormat => 'Single Filename Format'; + String get downloadSingleFilenameFormat => '싱글 파일 이름 형식'; @override String get downloadSingleFilenameFormatDescription => - 'Filename pattern for singles and EPs. Uses the same tags as the album format.'; + '싱글 및 EP용 파일 이름 패턴입니다. 앨범 형식과 동일한 태그를 사용합니다'; @override String get downloadFolderOrganization => '폴더 분류 형식'; @override - String get appearanceTitle => '외관'; + String get appearanceTitle => '디자인'; @override - String get appearanceThemeSystem => 'System'; + String get appearanceThemeSystem => '시스템'; @override String get appearanceThemeLight => '밝은'; @override - String get appearanceThemeDark => '다크'; + String get appearanceThemeDark => '어두운'; @override - String get appearanceDynamicColor => 'Dynamic Color'; + String get appearanceDynamicColor => '동적 색상'; @override String get appearanceDynamicColorSubtitle => '배경 화면을 참고하여 강조 색상이 지정됩니다'; @@ -112,10 +112,10 @@ class AppLocalizationsKo extends AppLocalizations { String get appearanceHistoryView => '기록 정렬 방식'; @override - String get appearanceHistoryViewList => 'List'; + String get appearanceHistoryViewList => '리스트'; @override - String get appearanceHistoryViewGrid => 'Grid'; + String get appearanceHistoryViewGrid => '그리드'; @override String get optionsTitle => '옵션'; @@ -124,153 +124,144 @@ class AppLocalizationsKo extends AppLocalizations { String get optionsPrimaryProvider => '기본 제공자'; @override - String get optionsPrimaryProviderSubtitle => - 'Service used for searching by track or album name'; + String get optionsPrimaryProviderSubtitle => '트랙 또는 앨범 이름으로 검색하는 데 사용되는 서비스'; @override String optionsUsingExtension(String extensionName) { - return '확장 기능을 사용: $extensionName'; + return '확장 프로그램 사용: $extensionName'; } @override - String get optionsDefaultSearchTab => 'Default Search Tab'; + String get optionsDefaultSearchTab => '기본 검색 탭'; @override - String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; + String get optionsDefaultSearchTabSubtitle => '새 검색 결과를 표시할 탭을 먼저 선택하세요'; @override - String get optionsSwitchBack => - 'Choose the default search provider to switch back from an extension'; + String get optionsSwitchBack => '확장 프로그램에서 기본 검색 제공자로 전환하려면 기본 검색 제공자를 선택하세요'; @override - String get optionsAutoFallback => '자동 재시도'; + String get optionsAutoFallback => '자동 대체'; @override - String get optionsAutoFallbackSubtitle => '다운로드가 실패한 경우, 다른 서비스로 재시도'; + String get optionsAutoFallbackSubtitle => '다운로드가 실패한 경우에 다른 서비스를 이용해 보세요'; @override - String get optionsUseExtensionProviders => '확장 기능 사용'; + String get optionsUseExtensionProviders => '확장 프로그램 사용'; @override - String get optionsUseExtensionProvidersOn => - 'Extension providers are enabled'; + String get optionsUseExtensionProvidersOn => '확장 프로그램 제공자가 활성화됨'; @override - String get optionsUseExtensionProvidersOff => - 'Extension providers are required'; + String get optionsUseExtensionProvidersOff => '확장 프로그램 제공자가 필요함'; @override String get optionsEmbedLyrics => '가사 삽입'; @override - String get optionsEmbedLyricsSubtitle => - 'Save synced lyrics alongside your downloaded tracks'; + String get optionsEmbedLyricsSubtitle => '다운로드한 트랙과 함께 동기화된 가사를 저장합니다'; @override - String get optionsMaxQualityCover => '고품질 커버 이미지'; + String get optionsMaxQualityCover => '고품질 표지 이미지'; @override - String get optionsMaxQualityCoverSubtitle => '최고 품질의 커버 이미지를 다운로드'; + String get optionsMaxQualityCoverSubtitle => '최고 해상도의 표지 이미지를 다운로드'; @override - String get optionsReplayGain => 'ReplayGain'; + String get optionsReplayGain => '리플레이게인'; @override - String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; + String get optionsReplayGainSubtitleOn => '음량 스캔 및 리플레이게인 태그 삽입 (EBU R128)'; @override - String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; + String get optionsReplayGainSubtitleOff => '비활성화됨: 음량 정규화 태그 없음'; @override - String get trackReplayGain => 'Rescan ReplayGain'; + String get trackReplayGain => '리플레이게인 다시 스캔'; @override - String get trackReplayGainSubtitle => - 'Analyze loudness and write ReplayGain tags'; + String get trackReplayGainSubtitle => '음량 분석 및 리플레이게인 태그 작성'; @override - String get trackReplayGainScanning => 'Analyzing loudness...'; + String get trackReplayGainScanning => '음량을 분석하는 중...'; @override - String get trackReplayGainSuccess => 'ReplayGain tags added'; + String get trackReplayGainSuccess => '리플레이게인 태그가 추가됨'; @override - String get trackReplayGainFailed => 'Failed to add ReplayGain tags'; + String get trackReplayGainFailed => '리플레이게인 태그 추가 실패'; @override String selectionReplayGainCount(int count) { - return 'ReplayGain ($count)'; + return '리플레이게인 ($count)'; } @override - String get replayGainBatchConfirmTitle => 'Add ReplayGain'; + String get replayGainBatchConfirmTitle => '리플레이게인 추가'; @override String replayGainBatchConfirmMessage(int count) { - return 'Analyze loudness and write ReplayGain tags to $count track(s)?'; + return '음량을 분석하고 $count 개의 트랙에 리플레이게인 태그를 추가하시겠습니까?'; } @override - String get replayGainBatchAnalyzing => 'Analyzing ReplayGain...'; + String get replayGainBatchAnalyzing => '리플레이게인을 분석하는 중...'; @override String replayGainBatchSuccess(int success, int total) { - return 'ReplayGain added to $success of $total tracks'; + return '$total 개의 트랙 중 $success 개에 리플레이게인이 추가됨'; } @override - String get optionsArtistTagMode => 'Artist Tag Mode'; + String get optionsArtistTagMode => '아티스트 태그 모드'; @override String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; + '여러 아티스트를 내장 태그에 작성하는 방법을 선택하세요'; @override - String get optionsArtistTagModeJoined => 'Single joined value'; + String get optionsArtistTagModeJoined => '단일 결합 값'; @override String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; + '플레이어 호환성을 최대화하려면 \'아티스트 A, 아티스트 B\'와 같이 하나의 아티스트 값을 입력하세요'; @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; + String get optionsArtistTagModeSplitVorbis => 'FLAC/Opus용 태그 분할'; @override String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; + 'FLAC 및 Opus의 경우 아티스트당 하나의 아티스트 태그를 작성하세요. MP3 및 M4A는 병합된 상태로 유지됩니다'; @override - String get optionsExtensionStore => 'Extension Repo'; + String get optionsExtensionStore => '확장 프로그램 리포'; @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; + String get optionsExtensionStoreSubtitle => '하단바에서 리포 탭 표시'; @override String get optionsCheckUpdates => '업데이트 확인'; @override - String get optionsCheckUpdatesSubtitle => '새로운 버전이 출시되면 알림'; + String get optionsCheckUpdatesSubtitle => '새 버전이 출시되면 알림'; @override String get optionsUpdateChannel => '업데이트 채널'; @override - String get optionsUpdateChannelStable => '안정적인 버전만 수령'; + String get optionsUpdateChannelStable => '안정 버전만 받기'; @override - String get optionsUpdateChannelPreview => '미리보기 버전을 수령'; + String get optionsUpdateChannelPreview => '베타 버전을 받기'; @override - String get optionsUpdateChannelWarning => '미리보기 버전은 불안정할 수 있습니다'; + String get optionsUpdateChannelWarning => '베타 버전은 불안정할 수 있습니다'; @override String get optionsClearHistory => '다운로드 기록 삭제'; @override - String get optionsClearHistorySubtitle => '기록에서 모든 다운로드 음반을 제거합니다'; + String get optionsClearHistorySubtitle => '기록에서 모든 다운로드한 트랙을 제거합니다'; @override String get optionsDetailedLogging => '상세 로깅'; @@ -279,51 +270,51 @@ class AppLocalizationsKo extends AppLocalizations { String get optionsDetailedLoggingOn => '상세한 로그가 기록되고 있습니다'; @override - String get optionsDetailedLoggingOff => '버그 신고를 위한 기능입니다'; + String get optionsDetailedLoggingOff => '버그 보고서 활성화'; @override String get optionsSpotifyCredentials => 'Spotify 자격 증명'; @override String optionsSpotifyCredentialsConfigured(String clientId) { - return 'Client ID: $clientId...'; + return '클라이언트 ID: $clientId...'; } @override - String get optionsSpotifyCredentialsRequired => '탭하여 설정'; + String get optionsSpotifyCredentialsRequired => '필수 - 탭하여 설정'; @override String get optionsSpotifyWarning => - 'Spotify는 사용자 고유의 API 자격 증명을 요구합니다. developer.spotify.com에서 무료로 발급받으세요'; + 'Spotify는 사용자 고유의 API 자격 증명을 요구합니다. \'developer.spotify.com\'에서 무료로 발급받으세요'; @override String get optionsSpotifyDeprecationWarning => 'Spotify API 변경으로 인해 Spotify 검색 기능은 2026년 3월 3일부터 더 이상 지원되지 않습니다. Deezer로 전환해 주세요'; @override - String get extensionsTitle => '확장 기능'; + String get extensionsTitle => '확장 프로그램'; @override - String get extensionsDisabled => '비활성화'; + String get extensionsDisabled => '비활성화됨'; @override String extensionsVersion(String version) { - return 'Version $version'; + return '버전 $version'; } @override String extensionsAuthor(String author) { - return 'by $author'; + return '작성자: $author'; } @override - String get extensionsUninstall => '삭제'; + String get extensionsUninstall => '제거'; @override - String get storeTitle => 'Extension Repo'; + String get storeTitle => '확장 프로그램 리포'; @override - String get storeSearch => '확장 기능 검색'; + String get storeSearch => '확장 프로그램 검색...'; @override String get storeInstall => '설치'; @@ -338,28 +329,28 @@ class AppLocalizationsKo extends AppLocalizations { String get aboutTitle => '정보'; @override - String get aboutContributors => '기여자'; + String get aboutContributors => '개발에 힘써주신 분들'; @override String get aboutMobileDeveloper => '모바일 버전 개발자'; @override - String get aboutOriginalCreator => '오리지널 SpotiFLAC 제작자'; + String get aboutOriginalCreator => 'SpotiFLAC 오리지널 개발자'; @override String get aboutLogoArtist => '아름다운 로고를 만들어주신 재능 있는 아티스트!'; @override - String get aboutTranslators => '번역가들'; + String get aboutTranslators => '번역에 도움주신 분들'; @override - String get aboutSpecialThanks => '특별 감사'; + String get aboutSpecialThanks => '특별히 감사드리는 분들'; @override - String get aboutLinks => '바로가기'; + String get aboutLinks => '링크'; @override - String get aboutMobileSource => 'Mobile source code'; + String get aboutMobileSource => '모바일 소스 코드'; @override String get aboutPCSource => 'PC 소스 코드'; @@ -371,42 +362,42 @@ class AppLocalizationsKo extends AppLocalizations { String get aboutReportIssue => '문제 신고'; @override - String get aboutReportIssueSubtitle => '발생하는 모든 문제를 신고하여 주세요.'; + String get aboutReportIssueSubtitle => '발생하는 모든 문제를 신고해 주세요'; @override String get aboutFeatureRequest => '기능 요청'; @override - String get aboutFeatureRequestSubtitle => '앱의 새로운 기능을 제안하여 주세요.'; + String get aboutFeatureRequestSubtitle => '앱의 새 기능을 제안해 주세요'; @override - String get aboutTelegramChannel => 'Telegram Channel'; + String get aboutTelegramChannel => '텔레그램 채널'; @override String get aboutTelegramChannelSubtitle => '공지 및 업데이트 안내'; @override - String get aboutTelegramChat => 'Telegram Community'; + String get aboutTelegramChat => '텔레그램 커뮤니티'; @override String get aboutTelegramChatSubtitle => '다른 이용자와 소통'; @override - String get aboutSocial => '소셜'; + String get aboutSocial => '소셜 네트워크'; @override - String get aboutApp => 'App'; + String get aboutApp => '앱 정보'; @override - String get aboutVersion => 'Version'; + String get aboutVersion => '버전'; @override String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; + 'QQDL 및 HiFi API 개발자입니다. 이 프로젝트는 무손실 다운로드 지원을 형성하는 데 도움을 주셨습니다'; @override String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; + 'HiFi 프로젝트의 원작자이자, 무손실 음원 소스 연동 기능의 토대를 구축한 개발자입니다'; @override String get aboutSjdonadoDesc => @@ -414,7 +405,7 @@ class AppLocalizationsKo extends AppLocalizations { @override String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; + '음악 메타데이터를 검색하고, 확장 프로그램을 관리하고, 라이브러리를 정리하세요'; @override String get artistAlbums => '앨범'; @@ -423,18 +414,18 @@ class AppLocalizationsKo extends AppLocalizations { String get artistSingles => '싱글 및 EP'; @override - String get artistCompilations => '편집'; + String get artistCompilations => '컴필레이션'; @override - String get artistPopular => '인기순'; + String get artistPopular => '인기'; @override String artistMonthlyListeners(String count) { - return '월간 청취자: $count'; + return '월별 청취자: $count'; } @override - String get trackMetadataService => '제공업체'; + String get trackMetadataService => '제공자'; @override String get trackMetadataPlay => '재생'; @@ -446,33 +437,33 @@ class AppLocalizationsKo extends AppLocalizations { String get trackMetadataDelete => '삭제'; @override - String get setupGrantPermission => '권한을 제공해 주세요.'; + String get setupGrantPermission => '권한을 부여해 주세요'; @override String get setupSkip => '다음에 할래요'; @override - String get setupStorageAccessRequired => '스토리지 접근 권한 필요'; + String get setupStorageAccessRequired => '저장소 접근 권한 필요'; @override String get setupStorageAccessMessageAndroid11 => - 'Android 11 이상 버전에서는 선택한 다운로드 폴더에 파일을 저장하려면 \"모든 파일 접근\" 권한이 필요합니다.'; + 'Android 11 이상 버전에서는 선택한 다운로드 폴더에 파일을 저장하려면 \'모든 파일 접근\' 권한이 필요합니다'; @override - String get setupOpenSettings => '설정으로 이동'; + String get setupOpenSettings => '설정 열기'; @override String get setupPermissionDeniedMessage => - '권한이 거부되었습니다. 계속하려면 모든 권한을 허용해 주세요.'; + '권한이 거부되었습니다. 계속하려면 모든 권한을 허용해 주세요'; @override String setupPermissionRequired(String permissionType) { - return '$permissionType 권한 필요'; + return '\'\'$permissionType\'\' 권한 필요'; } @override String setupPermissionRequiredMessage(String permissionType) { - return '최상의 사용 경험을 위해 $permissionType 권한이 필요합니다. 설정에서 나중에 변경할 수 있습니다.'; + return '최상의 사용 경험을 위해 \'\'$permissionType\'\' 권한이 필요합니다. 설정에서 나중에 변경할 수 있습니다'; } @override @@ -489,7 +480,7 @@ class AppLocalizationsKo extends AppLocalizations { @override String get setupDownloadLocationIosMessage => - 'iOS에서는 다운로드한 파일이 앱의 문서 폴더에 저장됩니다. 파일 앱을 통해 해당 파일에 접근할 수 있습니다.'; + 'iOS에서는 다운로드한 파일이 앱의 문서 폴더에 저장됩니다. 파일 앱을 통해 해당 파일에 접근할 수 있습니다'; @override String get setupAppDocumentsFolder => '앱 문서 폴더'; @@ -505,24 +496,24 @@ class AppLocalizationsKo extends AppLocalizations { @override String get setupIosEmptyFolderWarning => - 'iOS 제한 사항: 빈 폴더는 선택할 수 없습니다. 파일이 하나 이상 있는 폴더를 선택하세요.'; + 'iOS 제한 사항: 빈 폴더는 선택할 수 없습니다. 파일이 하나 이상 있는 폴더를 선택하세요'; @override String get setupIcloudNotSupported => - 'iCloud Drive는 지원되지 않습니다. 앱의 문서 폴더를 사용해 주세요.'; + 'iCloud Drive는 지원되지 않습니다. 앱의 문서 폴더를 사용해 주세요'; @override - String get setupDownloadInFlac => 'Spotify 음악을 FLAC 형식으로 다운로드하세요.'; + String get setupDownloadInFlac => 'Spotify 음악을 FLAC 형식으로 다운로드하세요'; @override String get setupStorageGranted => '저장소 접근 권한이 부여되었습니다!'; @override - String get setupStorageRequired => '저장소 접근 권한이 필요합니다.'; + String get setupStorageRequired => '저장소 접근 권한 필요'; @override String get setupStorageDescription => - 'SpotiFLAC은 다운로드한 음악 파일을 저장하기 위해 저장소 접근 권한이 필요합니다.'; + 'SpotiFLAC은 다운로드한 음악 파일을 저장하기 위해 저장소 접근 권한이 필요합니다'; @override String get setupNotificationGranted => '알림 권한이 부여되었습니다!'; @@ -534,7 +525,7 @@ class AppLocalizationsKo extends AppLocalizations { String get setupFolderChoose => '다운로드 폴더를 선택하세요'; @override - String get setupFolderDescription => '다운로드한 음악 파일이 저장될 폴더를 선택하세요.'; + String get setupFolderDescription => '다운로드한 음악 파일이 저장될 폴더를 선택하세요'; @override String get setupSelectFolder => '폴더 선택'; @@ -544,10 +535,10 @@ class AppLocalizationsKo extends AppLocalizations { @override String get setupNotificationBackgroundDescription => - '알림으로 다운로드 진행 상황을 확인하세요. 앱이 백그라운드에서 실행 중일 때 다운로드 상태와 완료 여부를 확인할 수 있습니다.'; + '알림으로 다운로드 진행 상황을 확인하세요. 앱이 백그라운드에서 실행 중일 때 다운로드 상태와 완료 여부를 확인할 수 있습니다'; @override - String get setupSkipForNow => '다음에 할래요.'; + String get setupSkipForNow => '다음에 할래요'; @override String get setupNext => '다음'; @@ -557,17 +548,17 @@ class AppLocalizationsKo extends AppLocalizations { @override String get setupAllowAccessToManageFiles => - '다음 화면에서 \"모든 파일 관리 권한 허용\"을 활성화해 주세요.'; + '다음 화면에서 \'모든 파일 관리 권한 허용\'을 활성화해 주세요'; @override - String get setupLanguageTitle => 'Choose Language'; + String get setupLanguageTitle => '언어 선택'; @override String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; + '앱에서 사용할 언어를 선택하세요. 나중에 설정에서 변경할 수 있습니다'; @override - String get setupLanguageSystemDefault => 'System Default'; + String get setupLanguageSystemDefault => '시스템 기본값'; @override String get dialogCancel => '취소'; @@ -579,7 +570,7 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogDelete => '삭제'; @override - String get dialogRetry => '재시도'; + String get dialogRetry => '다시 시도'; @override String get dialogClear => '지우기'; @@ -591,19 +582,19 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogImport => '불러오기'; @override - String get dialogDownload => 'Download'; + String get dialogDownload => '다운로드'; @override - String get previewPlay => 'Play preview'; + String get previewPlay => '미리듣기 재생'; @override - String get previewStop => 'Stop preview'; + String get previewStop => '미리듣기 중지'; @override - String get previewUnavailable => 'Preview unavailable'; + String get previewUnavailable => '미리듣기를 사용할 수 없음'; @override - String get dialogDiscard => '취소'; + String get dialogDiscard => '폐기'; @override String get dialogRemove => '제거'; @@ -612,56 +603,56 @@ class AppLocalizationsKo extends AppLocalizations { String get dialogUninstall => '삭제'; @override - String get dialogDiscardChanges => '변경사항 취소'; + String get dialogDiscardChanges => '변경 사항 폐기'; @override - String get dialogUnsavedChanges => '저장되지 않은 변경 사항이 있습니다. 삭제하시겠습니까?'; + String get dialogUnsavedChanges => '저장되지 않은 변경 사항이 있습니다. 폐기하시겠습니까?'; @override - String get dialogClearAll => '모두 제거:'; + String get dialogClearAll => '모두 지우기'; @override String get dialogRemoveExtension => '확장 프로그램 제거'; @override String get dialogRemoveExtensionMessage => - '이 확장 프로그램을 정말로 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다.'; + '이 확장 프로그램을 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다'; @override String get dialogUninstallExtension => '확장 프로그램을 제거하시겠습니까?'; @override String dialogUninstallExtensionMessage(String extensionName) { - return '$extensionName을 정말로 삭제하시겠습니까?'; + return '\'\'$extensionName\'\'을 제거하시겠습니까?'; } @override - String get dialogClearHistoryTitle => '기록 삭제'; + String get dialogClearHistoryTitle => '기록 지우기'; @override String get dialogClearHistoryMessage => - '다운로드 기록을 모두 삭제하시겠습니까? 이 작업은 되돌릴 수 없습니다.'; + '모든 다운로드 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다'; @override - String get dialogDeleteSelectedTitle => '선택한 항목 삭제'; + String get dialogDeleteSelectedTitle => '선택 항목 삭제'; @override String dialogDeleteSelectedMessage(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return '기록에서 $count $_temp0를 삭제하시겠습니까?'; + return '기록에서 $count 개의 $_temp0을 삭제하시겠습니까?\n\n저장소에서도 파일이 삭제됩니다'; } @override - String get dialogImportPlaylistTitle => '재생 목록 가져오기'; + String get dialogImportPlaylistTitle => '재생목록 가져오기'; @override String dialogImportPlaylistMessage(int count) { - return 'CSV 파일에서 $count개의 트랙을 찾았습니다. 다운로드 대기열에 추가하시겠습니까?'; + return 'CSV 파일에서 $count 개의 트랙을 찾았습니다. 다운로드 목록에 추가하시겠습니까?'; } @override @@ -671,54 +662,54 @@ class AppLocalizationsKo extends AppLocalizations { @override String snackbarAddedToQueue(String trackName) { - return '\"$trackName\"(을)를 대기열에 추가했습니다.'; + return '\'\'$trackName\'\'가 다운로드 목록에 추가됨'; } @override String snackbarAddedTracksToQueue(int count) { - return '대기열에 $count개의 트랙을 추가했습니다.'; + return '다운로드 목록에 $count 개의 트랙이 추가됨'; } @override String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\"(은)는 이미 다운로드되었습니다.'; + return '\'\'$trackName\'\'은 이미 다운로드되어 있음'; } @override String snackbarAlreadyInLibrary(String trackName) { - return '라이브러리에 \"$trackName\"(은)는 이미 존재합니다.'; + return '라이브러리에 \'\'$trackName\'\'이 이미 존재함'; } @override String get snackbarHistoryCleared => '기록 삭제됨'; @override - String get snackbarCredentialsSaved => '자격 증명이 저장되었습니다.'; + String get snackbarCredentialsSaved => '자격 증명이 저장됨'; @override - String get snackbarCredentialsCleared => '자격 증명이 제거되었습니다.'; + String get snackbarCredentialsCleared => '자격 증명이 삭제됨'; @override String snackbarDeletedTracks(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return '$count$_temp0 제거됨'; + return '$count 개의 $_temp0이 제거됨'; } @override String snackbarCannotOpenFile(String error) { - return '파일을 열 수 없습니다: $error'; + return '파일을 열 수 없음: $error'; } @override - String get snackbarFillAllFields => '모든 항목을 입력해 주세요.'; + String get snackbarFillAllFields => '모든 항목을 입력해 주세요'; @override - String get snackbarViewQueue => 'View Queue'; + String get snackbarViewQueue => '다운로드 목록 보기'; @override String snackbarUrlCopied(String platform) { @@ -729,22 +720,22 @@ class AppLocalizationsKo extends AppLocalizations { String get snackbarFileNotFound => '파일을 찾을 수 없음'; @override - String get snackbarSelectExtFile => '.spotiflac-ext 확장자 파일을 선택'; + String get snackbarSelectExtFile => '.spotiflac-ext 파일을 선택하세요'; @override - String get snackbarProviderPrioritySaved => '제공자 우선순위 저장됨'; + String get snackbarProviderPrioritySaved => '제공자 우선순위가 저장됨'; @override - String get snackbarMetadataProviderSaved => '메타데이터 제공자 우선순위 저장됨'; + String get snackbarMetadataProviderSaved => '메타데이터 제공자 우선순위가 저장됨'; @override String snackbarExtensionInstalled(String extensionName) { - return '$extensionName(이)가 설치됨'; + return '\'\'$extensionName\'\'이 설치됨'; } @override String snackbarExtensionUpdated(String extensionName) { - return '$extensionName(이)가 설치됨.'; + return '\'\'$extensionName\'\'이 설치됨'; } @override @@ -754,38 +745,37 @@ class AppLocalizationsKo extends AppLocalizations { String get snackbarFailedToUpdate => '확장 프로그램 업데이트 실패'; @override - String get errorRateLimited => 'Rate Limited'; + String get errorRateLimited => '사용 제한됨'; @override - String get errorRateLimitedMessage => '요청이 너무 많습니다. 잠시 후 다시 검색해 주세요.'; + String get errorRateLimitedMessage => '요청이 너무 많습니다. 잠시 후 다시 검색해 주세요'; @override - String get errorNoTracksFound => '트랙을 찾을 수 없습니다'; + String get errorNoTracksFound => '트랙을 찾을 수 없음'; @override - String get searchEmptyResultSubtitle => 'Try another keyword'; + String get searchEmptyResultSubtitle => '다른 키워드를 검색해 보세요'; @override - String get errorUrlNotRecognized => 'Link not recognized'; + String get errorUrlNotRecognized => '링크를 인식할 수 없음'; @override String get errorUrlNotRecognizedMessage => - 'This link is not supported. Make sure the URL is correct and a compatible extension is installed.'; + '이 링크는 지원되지 않습니다. URL이 올바른지, 호환되는 확장 프로그램이 설치되어 있는지 확인하세요'; @override - String get errorUrlFetchFailed => - 'Failed to load content from this link. Please try again.'; + String get errorUrlFetchFailed => '이 링크에서 콘텐츠를 불러오는 데 실패하였습니다. 다시 시도해 주세요'; @override String errorMissingExtensionSource(String item) { - return '확장 소스가 누락되어, $item(을)를 로드할 수 없습니다'; + return '\'\'$item\'\'을 불러올 수 없음: 확장 소스가 누락됨'; } @override - String get actionPause => '멈추기'; + String get actionPause => '일시 중지'; @override - String get actionResume => '재시작'; + String get actionResume => '계속'; @override String get actionCancel => '취소'; @@ -804,7 +794,7 @@ class AppLocalizationsKo extends AppLocalizations { @override String selectionSelected(int count) { - return '$count개 선택됨'; + return '$count 개 선택됨'; } @override @@ -815,209 +805,204 @@ class AppLocalizationsKo extends AppLocalizations { @override String progressFetchingMetadata(int current, int total) { - return '메타데이터 가져오는 중... $current/$total'; + return '메타데이터를 가져오는 중... $current/$total'; } @override String get progressReadingCsv => 'CSV 파일을 읽는 중...'; @override - String get searchSongs => '곡들'; + String get searchSongs => '노래'; @override - String get searchArtists => '아티스트들'; + String get searchArtists => '아티스트'; @override - String get searchAlbums => '앨범들'; + String get searchAlbums => '앨범'; @override - String get searchPlaylists => '재생목록들'; + String get searchPlaylists => '재생목록'; @override - String get searchSortTitle => 'Sort Results'; + String get searchSortTitle => '결과 정렬'; @override - String get searchSortDefault => 'Default'; + String get searchSortDefault => '기본값'; @override - String get searchSortTitleAZ => 'Title (A-Z)'; + String get searchSortTitleAZ => '제목 (오름차순)'; @override - String get searchSortTitleZA => 'Title (Z-A)'; + String get searchSortTitleZA => '제목 (내림차순)'; @override - String get searchSortArtistAZ => 'Artist (A-Z)'; + String get searchSortArtistAZ => '아티스트 (오름차순)'; @override - String get searchSortArtistZA => 'Artist (Z-A)'; + String get searchSortArtistZA => '아티스트 (내림차순)'; @override - String get searchSortDurationShort => 'Duration (Shortest)'; + String get searchSortDurationShort => '재생시간 (짧은순)'; @override - String get searchSortDurationLong => 'Duration (Longest)'; + String get searchSortDurationLong => '재생시간 (긴순)'; @override - String get searchSortDateOldest => 'Release Date (Oldest)'; + String get searchSortDateOldest => '발매일자 (오래된순)'; @override - String get searchSortDateNewest => 'Release Date (Newest)'; + String get searchSortDateNewest => '발매일자 (최신순)'; @override String get tooltipPlay => '재생'; @override - String get filenameFormat => 'Filename Format'; + String get filenameFormat => '파일 이름 형식'; @override String get filenameShowAdvancedTags => '고급 태그 표시'; @override String get filenameShowAdvancedTagsDescription => - '트랙 패딩 및 날짜 패턴에 대한 서식 있는 태그를 활성화합니다.'; + '트랙 패딩 및 날짜 패턴에 대한 서식 있는 태그를 활성화합니다'; @override String get folderOrganizationNone => '정리하지 않음'; @override - String get folderOrganizationByPlaylist => 'By Playlist'; + String get folderOrganizationByPlaylist => '재생목록별'; @override - String get folderOrganizationByPlaylistSubtitle => - 'Separate folder for each playlist'; + String get folderOrganizationByPlaylistSubtitle => '각 재생목록별 별도 폴더'; @override - String get folderOrganizationByArtist => 'By Artist'; + String get folderOrganizationByArtist => '아티스트별'; @override - String get folderOrganizationByAlbum => 'By Album'; + String get folderOrganizationByAlbum => '앨범별'; @override - String get folderOrganizationByArtistAlbum => 'Artist/Album'; + String get folderOrganizationByArtistAlbum => '아티스트/앨범'; @override - String get folderOrganizationDescription => - 'Organize downloaded files into folders'; + String get folderOrganizationDescription => '다운로드한 파일을 폴더로 정리'; @override - String get folderOrganizationNoneSubtitle => 'All files in download folder'; + String get folderOrganizationNoneSubtitle => '다운로드 폴더의 모든 파일'; @override - String get folderOrganizationByArtistSubtitle => - 'Separate folder for each artist'; + String get folderOrganizationByArtistSubtitle => '각 아티스트별 별도 폴더'; @override - String get folderOrganizationByAlbumSubtitle => - 'Separate folder for each album'; + String get folderOrganizationByAlbumSubtitle => '각 앨범별 별도 폴더'; @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Nested folders for artist and album'; + String get folderOrganizationByArtistAlbumSubtitle => '아티스트 및 앨범용 중첩 폴더'; @override - String get updateAvailable => 'Update Available'; + String get updateAvailable => '업데이트 사용 가능'; @override - String get updateLater => 'Later'; + String get updateLater => '나중에'; @override - String get updateStartingDownload => 'Starting download...'; + String get updateStartingDownload => '다운로드를 시작하는 중...'; @override - String get updateDownloadFailed => 'Download failed'; + String get updateDownloadFailed => '다운로드 실패'; @override - String get updateFailedMessage => 'Failed to download update'; + String get updateFailedMessage => '업데이트 다운로드 실패'; @override - String get updateNewVersionReady => 'A new version is ready'; + String get updateNewVersionReady => '새 버전이 준비되었습니다'; @override - String get updateCurrent => 'Current'; + String get updateCurrent => '현재 버전'; @override - String get updateNew => 'New'; + String get updateNew => '새 버전'; @override - String get updateDownloading => 'Downloading...'; + String get updateDownloading => '다운로드하는 중...'; @override - String get updateWhatsNew => 'What\'s New'; + String get updateWhatsNew => '새 기능'; @override - String get updateDownloadInstall => 'Download & Install'; + String get updateDownloadInstall => '다운로드 & 설치'; @override - String get updateDontRemind => 'Don\'t remind'; + String get updateDontRemind => '알림 안 함'; @override - String get providerPriorityTitle => 'Provider Priority'; + String get providerPriorityTitle => '제공자 우선순위'; @override String get providerPriorityDescription => - 'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'; + '드래그하여 다운로드 제공자 순서를 변경하세요. 앱은 트랙을 다운로드할 경우에 위에서 아래로 제공자를 차례로 시도합니다'; @override String get providerPriorityInfo => - 'If a track is not available on the first provider, the app will automatically try the next one.'; + '첫 ​​번째 제공자에서 트랙을 사용할 수 없는 경우에 앱은 자동으로 다음 제공자를 시도합니다'; @override - String get providerPriorityFallbackExtensionsTitle => 'Extension Fallback'; + String get providerPriorityFallbackExtensionsTitle => '확장 프로그램 대체'; @override String get providerPriorityFallbackExtensionsDescription => - 'Choose which installed download extensions can be used during automatic fallback.'; + '자동 대체 중에 사용할 수 있는 설치된 다운로드 확장 프로그램을 선택하세요'; @override String get providerPriorityFallbackExtensionsHint => - 'Only enabled extensions with download-provider capability are listed here.'; + '다운로드 공급자 기능이 활성화된 확장 프로그램만 여기에 나열됩니다'; @override - String get providerBuiltIn => 'Legacy'; + String get providerBuiltIn => '레거시'; @override - String get providerExtension => 'Extension'; + String get providerExtension => '확장 프로그램'; @override - String get metadataProviderPriorityTitle => 'Metadata Priority'; + String get metadataProviderPriorityTitle => '메타데이터 우선순위'; @override String get metadataProviderPriorityDescription => - 'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'; + '드래그하여 메타데이터 제공자 순서를 변경하세요. 앱은 트랙을 검색하고 메타데이터를 가져올 경우에 위에서 아래로 제공자를 시도합니다'; @override String get metadataProviderPriorityInfo => - 'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'; + 'Deezer는 요청 횟수 제한이 없으므로 기본 앱으로 사용하는 것이 좋습니다. Spotify는 요청 횟수가 많아지면 요청 횟수를 제한할 수 있습니다'; @override - String get metadataNoRateLimits => 'No rate limits'; + String get metadataNoRateLimits => '사용 제한 없음'; @override - String get metadataMayRateLimit => 'May rate limit'; + String get metadataMayRateLimit => '사용 제한이 있을 수 있음'; @override - String get logTitle => 'Logs'; + String get logTitle => '로그'; @override - String get logCopied => 'Logs copied to clipboard'; + String get logCopied => '로그가 클립보드에 복사됨'; @override - String get logSearchHint => 'Search logs...'; + String get logSearchHint => '로그를 검색하는 중...'; @override - String get logFilterLevel => 'Level'; + String get logFilterLevel => '레벨'; @override - String get logFilterSection => 'Filter'; + String get logFilterSection => '필터'; @override - String get logShareLogs => 'Share logs'; + String get logShareLogs => '로그 공유'; @override - String get logClearLogs => '로그 제거'; + String get logClearLogs => '로그 삭제'; @override - String get logClearLogsTitle => '로그 제거'; + String get logClearLogsTitle => '로그 삭제'; @override String get logClearLogsMessage => '모든 로그를 삭제하시겠습니까?'; @@ -1026,19 +1011,19 @@ class AppLocalizationsKo extends AppLocalizations { String get logFilterBySeverity => '심각성에 따라 로그 분류'; @override - String get logNoLogsYet => '어떠한 로그도 없음'; + String get logNoLogsYet => '아직 로그 없음'; @override - String get logNoLogsYetSubtitle => '앱을 사용하는 동안 로그가 여기에 표시됩니다.'; + String get logNoLogsYetSubtitle => '앱을 사용하는 동안에 로그가 여기에 표시됩니다'; @override String logEntriesFiltered(int count) { - return '($count filtered)개 항목 필터링'; + return '항목 ($count 개 필터됨)'; } @override String logEntries(int count) { - return '항목 수: ($count)'; + return '항목 ($count)'; } @override @@ -1046,19 +1031,19 @@ class AppLocalizationsKo extends AppLocalizations { @override String get credentialsDescription => - 'Spotify 애플리케이션 할당량을 사용하려면 클라이언트 ID와 비밀키를 입력하세요.'; + 'Spotify 애플리케이션 할당량을 사용하려면 클라이언트 ID와 비밀키를 입력하세요'; @override - String get credentialsClientId => 'Client ID'; + String get credentialsClientId => '클라이언트 ID'; @override - String get credentialsClientIdHint => 'Client ID를 붙여넣으세요'; + String get credentialsClientIdHint => '클라이언트 ID를 붙여넣으세요'; @override - String get credentialsClientSecret => '비밀키'; + String get credentialsClientSecret => '클라이언트 비밀키'; @override - String get credentialsClientSecretHint => '비밀키를 붙여넣으세요'; + String get credentialsClientSecretHint => '클라이언트 비밀키를 붙여넣으세요'; @override String get channelStable => '안정'; @@ -1067,7 +1052,7 @@ class AppLocalizationsKo extends AppLocalizations { String get channelPreview => '베타'; @override - String get sectionSearchSource => '검색 소스'; + String get sectionSearchSource => '검색 출처'; @override String get sectionDownload => '다운로드'; @@ -1082,7 +1067,7 @@ class AppLocalizationsKo extends AppLocalizations { String get sectionData => '데이터'; @override - String get sectionDebug => 'Debug'; + String get sectionDebug => '디버그'; @override String get sectionService => '서비스'; @@ -1100,13 +1085,13 @@ class AppLocalizationsKo extends AppLocalizations { String get lyricsMode => '가사 설정'; @override - String get lyricsModeDescription => '다운로드한 파일에 가사를 저장하는 방법을 선택하세요.'; + String get lyricsModeDescription => '다운로드한 파일에 가사를 저장하는 방법을 선택하세요'; @override String get lyricsModeEmbed => '파일에 포함'; @override - String get lyricsModeEmbedSubtitle => 'FLAC 메타데이터 내에 저장됩니다.'; + String get lyricsModeEmbedSubtitle => 'FLAC 메타데이터 내에 저장됩니다'; @override String get lyricsModeExternal => '외부 .lrc 파일'; @@ -1118,47 +1103,47 @@ class AppLocalizationsKo extends AppLocalizations { String get lyricsModeBoth => '둘 다'; @override - String get lyricsModeBothSubtitle => '.lrc 파일을 삽입하고 저장합니다.'; + String get lyricsModeBothSubtitle => '.lrc 파일을 삽입하고 저장합니다'; @override String get sectionColor => '색상'; @override - String get sectionTheme => 'Theme'; + String get sectionTheme => '테마'; @override - String get sectionLayout => 'Layout'; + String get sectionLayout => '레이아웃'; @override - String get sectionLanguage => 'Language'; + String get sectionLanguage => '언어'; @override - String get appearanceLanguage => 'App Language'; + String get appearanceLanguage => '앱 언어'; @override - String get settingsAppearanceSubtitle => 'Theme, colors, display'; + String get settingsAppearanceSubtitle => '테마, 색상, 디스플레이'; @override - String get settingsDownloadSubtitle => 'Service, quality, fallback'; + String get settingsDownloadSubtitle => '서비스, 음질, 대체'; @override - String get settingsOptionsSubtitle => 'Fallback, metadata, lyrics, cover art'; + String get settingsOptionsSubtitle => '대체, 메타데이터, 가사, 표지 이미지'; @override - String get settingsExtensionsSubtitle => 'Manage download providers'; + String get settingsExtensionsSubtitle => '다운로드 제공자 관리'; @override - String get settingsLogsSubtitle => 'View app logs for debugging'; + String get settingsLogsSubtitle => '디버깅을 위한 앱 로그 보기'; @override - String get loadingSharedLink => 'Loading shared link...'; + String get loadingSharedLink => '공유된 링크를 불러오는 중...'; @override - String get pressBackAgainToExit => 'Press back again to exit'; + String get pressBackAgainToExit => '종료하려면 뒤로가기 버튼을 다시 탭하세요'; @override String downloadAllCount(int count) { - return 'Download All ($count)'; + return '모두 다운로드 ($count)'; } @override @@ -1166,355 +1151,350 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tracks', - one: '1 track', + other: '$count 개의 트랙', + one: '1 개의 트랙', ); return '$_temp0'; } @override - String get trackCopyFilePath => 'Copy file path'; + String get trackCopyFilePath => '파일 경로 복사'; @override - String get trackRemoveFromDevice => 'Remove from device'; + String get trackRemoveFromDevice => '기기에서 제거'; @override - String get trackLoadLyrics => 'Load Lyrics'; + String get trackLoadLyrics => '가사 불러오기'; @override - String get trackMetadata => 'Metadata'; + String get trackMetadata => '메타데이터'; @override - String get trackFileInfo => 'File Info'; + String get trackFileInfo => '파일 정보'; @override - String get trackLyrics => 'Lyrics'; + String get trackLyrics => '가사'; @override - String get trackFileNotFound => 'File not found'; + String get trackFileNotFound => '파일을 찾을 수 없음'; @override - String get trackOpenInDeezer => 'Open in Deezer'; + String get trackOpenInDeezer => 'Deezer에서 열기'; @override - String get trackOpenInSpotify => 'Open in Spotify'; + String get trackOpenInSpotify => 'Spotify에서 열기'; @override - String get trackTrackName => 'Track name'; + String get trackTrackName => '트랙 이름'; @override - String get trackArtist => 'Artist'; + String get trackArtist => '아티스트'; @override - String get trackAlbumArtist => 'Album artist'; + String get trackAlbumArtist => '앨범 아티스트'; @override - String get trackAlbum => 'Album'; + String get trackAlbum => '앨범'; @override - String get trackTrackNumber => 'Track number'; + String get trackTrackNumber => '트랙 번호'; @override - String get trackDiscNumber => 'Disc number'; + String get trackDiscNumber => '디스크 번호'; @override - String get trackDuration => 'Duration'; + String get trackDuration => '재생시간'; @override - String get trackAudioQuality => 'Audio quality'; + String get trackAudioQuality => '오디오 음질'; @override - String get trackReleaseDate => 'Release date'; + String get trackReleaseDate => '발매일자'; @override - String get trackGenre => 'Genre'; + String get trackGenre => '장르'; @override - String get trackLabel => 'Label'; + String get trackLabel => '레이블'; @override - String get trackCopyright => 'Copyright'; + String get trackCopyright => '저작권'; @override - String get trackDownloaded => 'Downloaded'; + String get trackDownloaded => '다운로드됨'; @override - String get trackCopyLyrics => 'Copy lyrics'; + String get trackCopyLyrics => '가사 복사'; @override String trackLyricsSource(String source) { - return 'Source: $source'; + return '출처: $source'; } @override - String get trackLyricsNotAvailable => 'Lyrics not available for this track'; + String get trackLyricsNotAvailable => '이 트랙의 가사를 사용할 수 없습니다'; @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; + String get trackLyricsNotInFile => '이 파일에서 가사를 찾을 수 없습니다'; @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; + String get trackFetchOnlineLyrics => '온라인에서 가져오기'; @override - String get trackLyricsTimeout => 'Request timed out. Try again later.'; + String get trackLyricsTimeout => '요청 시간이 초과되었습니다. 나중에 다시 시도하세요'; @override - String get trackLyricsLoadFailed => 'Failed to load lyrics'; + String get trackLyricsLoadFailed => '가사 불러오기 실패'; @override - String get trackEmbedLyrics => 'Embed Lyrics'; + String get trackEmbedLyrics => '가사 삽입'; @override - String get trackLyricsEmbedded => 'Lyrics embedded successfully'; + String get trackLyricsEmbedded => '가사 삽입 성공'; @override - String get trackInstrumental => 'Instrumental track'; + String get trackInstrumental => '반주 트랙'; @override - String get trackCopiedToClipboard => 'Copied to clipboard'; + String get trackCopiedToClipboard => '클립보드에 복사됨'; @override - String get trackDeleteConfirmTitle => 'Remove from device?'; + String get trackDeleteConfirmTitle => '기기에서 제거하시겠습니까?'; @override String get trackDeleteConfirmMessage => - 'This will permanently delete the downloaded file and remove it from your history.'; + '이렇게 하면 다운로드한 파일이 영구적으로 삭제되고 기록에서 제거됩니다'; @override - String get dateToday => 'Today'; + String get dateToday => '오늘'; @override - String get dateYesterday => 'Yesterday'; + String get dateYesterday => '어제'; @override String dateDaysAgo(int count) { - return '$count days ago'; + return '$count 일 전'; } @override String dateWeeksAgo(int count) { - return '$count weeks ago'; + return '$count 주 전'; } @override String dateMonthsAgo(int count) { - return '$count months ago'; + return '$count 달 전'; } @override - String get storeFilterAll => 'All'; + String get storeFilterAll => '모두'; @override - String get storeFilterMetadata => 'Metadata'; + String get storeFilterMetadata => '메타데이터'; @override - String get storeFilterDownload => 'Download'; + String get storeFilterDownload => '다운로드'; @override - String get storeFilterUtility => 'Utility'; + String get storeFilterUtility => '유틸리티'; @override - String get storeFilterLyrics => 'Lyrics'; + String get storeFilterLyrics => '가사'; @override - String get storeFilterIntegration => 'Integration'; + String get storeFilterIntegration => '연동'; @override - String get storeClearFilters => 'Clear filters'; + String get storeClearFilters => '필터 지우기'; @override - String get storeAddRepoTitle => 'Add Extension Repository'; + String get storeAddRepoTitle => '확장 프로그램 리포지토리 추가'; @override String get storeAddRepoDescription => - 'Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.'; + '확장 프로그램을 찾아보고 설치하려면 registry.json 파일이 포함된 GitHub 리포지토리 URL을 입력하세요'; @override - String get storeRepoUrlLabel => 'Repository URL'; + String get storeRepoUrlLabel => '리포지토리 URL'; @override String get storeRepoUrlHint => 'https://github.com/user/repo'; @override String get storeRepoUrlHelper => - 'e.g. https://github.com/user/extensions-repo'; + '예시: https://github.com/user/extensions-repo'; @override - String get storeAddRepoButton => 'Add Repository'; + String get storeAddRepoButton => '리포지토리 추가'; @override - String get storeChangeRepoTooltip => 'Change repository'; + String get storeChangeRepoTooltip => '리포지토리 변경'; @override - String get storeRepoDialogTitle => 'Extension Repository'; + String get storeRepoDialogTitle => '확장 프로그램 리포지토리'; @override - String get storeRepoDialogCurrent => 'Current repository:'; + String get storeRepoDialogCurrent => '현재 리포지토리:'; @override - String get storeNewRepoUrlLabel => 'New Repository URL'; + String get storeNewRepoUrlLabel => '새 리포지토리 URL'; @override - String get storeLoadError => 'Failed to load repository'; + String get storeLoadError => '리포지토리 불러오기 실패'; @override - String get storeEmptyNoExtensions => 'No extensions available'; + String get storeEmptyNoExtensions => '사용 가능한 확장 프로그램이 없음'; @override - String get storeEmptyNoResults => 'No extensions found'; + String get storeEmptyNoResults => '확장 프로그램을 찾을 수 없음'; @override - String get extensionDefaultProvider => 'Default Search'; + String get extensionDefaultProvider => '기본 검색'; @override - String get extensionDefaultProviderSubtitle => - 'Use the default metadata search'; + String get extensionDefaultProviderSubtitle => '기본 메타데이터 검색 사용'; @override - String get extensionAuthor => 'Author'; + String get extensionAuthor => '작성자'; @override String get extensionId => 'ID'; @override - String get extensionError => 'Error'; + String get extensionError => '오류'; @override - String get extensionCapabilities => 'Capabilities'; + String get extensionCapabilities => '기능'; @override - String get extensionMetadataProvider => 'Metadata Provider'; + String get extensionMetadataProvider => '메타데이터 제공자'; @override - String get extensionDownloadProvider => 'Download Provider'; + String get extensionDownloadProvider => '다운로드 제공자'; @override - String get extensionLyricsProvider => 'Lyrics Provider'; + String get extensionLyricsProvider => '가사 제공자'; @override - String get extensionUrlHandler => 'URL Handler'; + String get extensionUrlHandler => 'URL 핸들러'; @override - String get extensionQualityOptions => 'Quality Options'; + String get extensionQualityOptions => '음질 옵션'; @override - String get extensionPostProcessingHooks => 'Post-Processing Hooks'; + String get extensionPostProcessingHooks => '후처리 후크'; @override - String get extensionPermissions => 'Permissions'; + String get extensionPermissions => '권한'; @override - String get extensionSettings => 'Settings'; + String get extensionSettings => '설정'; @override - String get extensionRemoveButton => 'Remove Extension'; + String get extensionRemoveButton => '확장 프로그램 제거'; @override - String get extensionUpdated => 'Updated'; + String get extensionUpdated => '업데이트됨'; @override - String get extensionMinAppVersion => 'Min App Version'; + String get extensionMinAppVersion => '최소 앱 버전'; @override - String get extensionCustomTrackMatching => 'Custom Track Matching'; + String get extensionCustomTrackMatching => '사용자 정의 트랙 매칭'; @override - String get extensionPostProcessing => 'Post-Processing'; + String get extensionPostProcessing => '후처리'; @override String extensionHooksAvailable(int count) { - return '$count hook(s) available'; + return '$count 개의 후크 사용 가능'; } @override String extensionPatternsCount(int count) { - return '$count pattern(s)'; + return '$count 개의 패턴'; } @override String extensionStrategy(String strategy) { - return 'Strategy: $strategy'; + return '전략: $strategy'; } @override - String get extensionsProviderPrioritySection => 'Provider Priority'; + String get extensionsProviderPrioritySection => '제공자 우선순위'; @override - String get extensionsInstalledSection => 'Installed Extensions'; + String get extensionsInstalledSection => '설치된 확장 프로그램'; @override - String get extensionsNoExtensions => 'No extensions installed'; + String get extensionsNoExtensions => '설치된 확장 프로그램이 없음'; @override String get extensionsNoExtensionsSubtitle => - 'Install .spotiflac-ext files to add new providers'; + '새 제공자를 추가하려면 .spotiflac-ext 파일을 설치하세요'; @override - String get extensionsInstallButton => 'Install Extension'; + String get extensionsInstallButton => '확장 프로그램 설치'; @override String get extensionsInfoTip => - 'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'; + '확장 프로그램은 새 메타데이터와 다운로드 제공자를 추가할 수 있습니다. 신뢰할 수 있는 출처에서만 확장 프로그램을 설치하세요'; @override - String get extensionsInstalledSuccess => 'Extension installed successfully'; + String get extensionsInstalledSuccess => '확장 프로그램 설치 성공'; @override String extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; + return '$count 개의 확장 프로그램 설치 성공'; } @override String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; + return '$attempted 개의 확장 프로그램 중 $installed 개가 설치됨'; } @override - String get extensionsDownloadPriority => 'Download Priority'; + String get extensionsDownloadPriority => '다운로드 우선순위'; @override - String get extensionsDownloadPrioritySubtitle => 'Set download service order'; + String get extensionsDownloadPrioritySubtitle => '다운로드 서비스 순서를 설정하세요'; @override - String get extensionsFallbackTitle => 'Fallback Extensions'; + String get extensionsFallbackTitle => '대체 확장 프로그램'; @override String get extensionsFallbackSubtitle => - 'Choose which installed download extensions can be used as fallback'; + '설치된 다운로드 확장 프로그램 중 대체 프로그램으로 사용할 항목을 선택하세요'; @override - String get extensionsNoDownloadProvider => - 'No extensions with download provider'; + String get extensionsNoDownloadProvider => '다운로드 제공자가 있는 확장 프로그램가 없음'; @override - String get extensionsMetadataPriority => 'Metadata Priority'; + String get extensionsMetadataPriority => '메타데이터 우선순위'; @override - String get extensionsMetadataPrioritySubtitle => - 'Set search & metadata source order'; + String get extensionsMetadataPrioritySubtitle => '검색 & 메타데이터 출처 순서 설정'; @override - String get extensionsNoMetadataProvider => - 'No extensions with metadata provider'; + String get extensionsNoMetadataProvider => '메타데이터 제공자가 있는 확장 프로그램이 없음'; @override - String get extensionsSearchProvider => 'Search Provider'; + String get extensionsSearchProvider => '검색 제공자'; @override - String get extensionsNoCustomSearch => 'No extensions with custom search'; + String get extensionsNoCustomSearch => '사용자 정의 검색이 있는 확장 프로그램이 없음'; @override - String get extensionsSearchProviderDescription => - 'Choose which service to use for searching tracks'; + String get extensionsSearchProviderDescription => '트랙 검색에 사용할 서비스를 선택하세요'; @override - String get extensionsCustomSearch => 'Custom search'; + String get extensionsCustomSearch => '사용자 정의 검색'; @override - String get extensionsErrorLoading => 'Error loading extension'; + String get extensionsErrorLoading => '확장 프로그램 불러오기 오류'; @override - String get qualityFlacLossless => 'FLAC Lossless'; + String get qualityFlacLossless => 'FLAC 무손실'; @override String get qualityFlacLosslessSubtitle => '16-bit / 44.1kHz'; @@ -1523,125 +1503,119 @@ class AppLocalizationsKo extends AppLocalizations { String get qualityHiResFlac => 'Hi-Res FLAC'; @override - String get qualityHiResFlacSubtitle => '24-bit / up to 96kHz'; + String get qualityHiResFlacSubtitle => '24-bit / 최대 96kHz'; @override String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; @override - String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz'; + String get qualityHiResFlacMaxSubtitle => '24-bit / 최대 192kHz'; @override - String get downloadLossy320 => 'Lossy 320kbps'; + String get downloadLossy320 => '손실 압축 320kbps'; @override - String get downloadLossyFormat => 'Lossy Format'; + String get downloadLossyFormat => '손실 압축 형식'; @override - String get downloadLossy320Format => 'Lossy 320kbps Format'; + String get downloadLossy320Format => '손실 압축 320kbps 형식'; @override String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; + '320kbps 손실 다운로드의 출력 형식을 선택하세요. 필요에 따라 원본 스트림이 선택한 형식으로 변환됩니다'; @override String get downloadLossyMp3 => 'MP3 320kbps'; @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; + String get downloadLossyMp3Subtitle => '최상의 호환성, 트랙당 약 10MB'; @override String get downloadLossyAac => 'AAC/M4A 320kbps'; @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; + String get downloadLossyAacSubtitle => '최상의 모바일 호환성, M4A 컨테이너'; @override String get downloadLossyOpus256 => 'Opus 256kbps'; @override - String get downloadLossyOpus256Subtitle => - 'Best quality Opus, ~8MB per track'; + String get downloadLossyOpus256Subtitle => '최고 음질 Opus, 트랙당 약 8MB'; @override String get downloadLossyOpus128 => 'Opus 128kbps'; @override - String get downloadLossyOpus128Subtitle => 'Smallest size, ~4MB per track'; + String get downloadLossyOpus128Subtitle => '트랙당 최소 크기, 약 4MB'; @override - String get qualityNote => - 'Actual quality depends on track availability from the service'; + String get qualityNote => '실제 음질은 서비스의 트랙 가용성에 따라 달라집니다'; @override - String get downloadAskBeforeDownload => 'Ask Before Download'; + String get downloadAskBeforeDownload => '다운로드 전 확인'; @override - String get downloadDirectory => 'Download Directory'; + String get downloadDirectory => '다운로드 디렉토리'; @override - String get downloadSeparateSinglesFolder => 'Separate Singles Folder'; + String get downloadSeparateSinglesFolder => '싱글 폴더 별도 다운로드'; @override - String get downloadAlbumFolderStructure => 'Album Folder Structure'; + String get downloadAlbumFolderStructure => '앨범 폴더 구조'; @override - String get albumFolderStructureDescription => - 'Choose how album folders are structured'; + String get albumFolderStructureDescription => '앨범 폴더 구조를 선택하세요'; @override - String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; + String get downloadUseAlbumArtistForFolders => '폴더에 앨범 아티스트 사용'; @override - String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders'; + String get downloadUsePrimaryArtistOnly => '폴더에 기본 아티스트만 사용'; @override String get downloadUsePrimaryArtistOnlyEnabled => - 'Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)'; + '폴더 이름에서 피처링 아티스트가 제거됩니다 (예: Justin Bieber, Quavo → Justin Bieber)'; @override String get downloadUsePrimaryArtistOnlyDisabled => - 'Full artist string used for folder name'; + '폴더 이름에 전체 아티스트 문자열이 사용됩니다'; @override - String get downloadSelectQuality => 'Select Quality'; + String get downloadSelectQuality => '음질 선택'; @override - String get downloadFrom => 'Download From'; + String get downloadFrom => '다운로드 출처'; @override - String get appearanceAmoledDark => 'AMOLED Dark'; + String get appearanceAmoledDark => '아몰레드 블랙'; @override - String get appearanceAmoledDarkSubtitle => 'Pure black background'; + String get appearanceAmoledDarkSubtitle => '순수 검정 배경화면'; @override - String get queueClearAll => 'Clear All'; + String get queueClearAll => '모두 지우기'; @override - String get queueClearAllMessage => - 'Are you sure you want to clear all downloads?'; + String get queueClearAllMessage => '모든 다운로드를 지우시겠습니까?'; @override - String get settingsAutoExportFailed => 'Auto-export failed downloads'; + String get settingsAutoExportFailed => '실패한 다운로드 자동 내보내기'; @override - String get settingsAutoExportFailedSubtitle => - 'Save failed downloads to TXT file automatically'; + String get settingsAutoExportFailedSubtitle => '실패한 다운로드를 TXT 파일으로 자동 저장합니다'; @override - String get settingsDownloadNetwork => 'Download Network'; + String get settingsDownloadNetwork => '다운로드 네트워크'; @override - String get settingsDownloadNetworkAny => 'WiFi + Mobile Data'; + String get settingsDownloadNetworkAny => 'WiFi + 모바일 네트워크'; @override - String get settingsDownloadNetworkWifiOnly => 'WiFi Only'; + String get settingsDownloadNetworkWifiOnly => 'WiFi 전용'; @override String get settingsDownloadNetworkSubtitle => - 'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'; + '다운로드에 사용할 네트워크를 선택하세요. Wi-Fi 전용으로 설정하면 모바일 데이터 사용 시 다운로드가 일시 중지됩니다'; @override String get settingsConcurrentDownloads => 'Concurrent downloads'; @@ -1659,304 +1633,297 @@ class AppLocalizationsKo extends AppLocalizations { } @override - String get albumFolderArtistAlbum => 'Artist / Album'; + String get albumFolderArtistAlbum => '아티스트 / 앨범'; @override - String get albumFolderArtistAlbumSubtitle => 'Albums/Artist Name/Album Name/'; + String get albumFolderArtistAlbumSubtitle => '앨범/아티스트 이름/앨범 이름/'; @override - String get albumFolderArtistYearAlbum => 'Artist / [Year] Album'; + String get albumFolderArtistYearAlbum => '아티스트 / [연도] 앨범'; @override - String get albumFolderArtistYearAlbumSubtitle => - 'Albums/Artist Name/[2005] Album Name/'; + String get albumFolderArtistYearAlbumSubtitle => '앨범/아티스트 이름/[2005] 앨범 이름/'; @override - String get albumFolderAlbumOnly => 'Album Only'; + String get albumFolderAlbumOnly => '앨범만'; @override - String get albumFolderAlbumOnlySubtitle => 'Albums/Album Name/'; + String get albumFolderAlbumOnlySubtitle => '앨범/앨범 이름/'; @override - String get albumFolderYearAlbum => '[Year] Album'; + String get albumFolderYearAlbum => '[연도] 앨범'; @override - String get albumFolderYearAlbumSubtitle => 'Albums/[2005] Album Name/'; + String get albumFolderYearAlbumSubtitle => '앨범/[2005] 앨범 이름/'; @override - String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles'; + String get albumFolderArtistAlbumSingles => '아티스트 / 앨범 + 싱글'; @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Artist/Album/ and Artist/Singles/'; + String get albumFolderArtistAlbumSinglesSubtitle => '아티스트/앨범/ 및 아티스트/싱글/'; @override - String get albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; + String get albumFolderArtistAlbumFlat => '아티스트 / 앨범 (싱글 플랫)'; @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; + String get albumFolderArtistAlbumFlatSubtitle => '아티스트/앨범/ 및 아티스트/song.flac'; @override - String get downloadedAlbumDeleteSelected => 'Delete Selected'; + String get downloadedAlbumDeleteSelected => '선택 항목 삭제'; @override String downloadedAlbumDeleteMessage(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; + return '앨범에서 $count 개의 $_temp0을 삭제하시겠습니까?\n\n저장소에서도 파일이 삭제됩니다'; } @override String downloadedAlbumSelectedCount(int count) { - return '$count selected'; + return '$count 개 선택됨'; } @override - String get downloadedAlbumAllSelected => 'All tracks selected'; + String get downloadedAlbumAllSelected => '모든 트랙 선택됨'; @override - String get downloadedAlbumTapToSelect => 'Tap tracks to select'; + String get downloadedAlbumTapToSelect => '트랙을 탭하여 선택하세요'; @override String downloadedAlbumDeleteCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Delete $count $_temp0'; + return '$count $_temp0 삭제'; } @override - String get downloadedAlbumSelectToDelete => 'Select tracks to delete'; + String get downloadedAlbumSelectToDelete => '삭제할 트랙 선택'; @override String downloadedAlbumDiscHeader(int discNumber) { - return 'Disc $discNumber'; + return '디스크 $discNumber'; } @override - String get recentTypeArtist => 'Artist'; + String get recentTypeArtist => '아티스트'; @override - String get recentTypeAlbum => 'Album'; + String get recentTypeAlbum => '앨범'; @override - String get recentTypeSong => 'Song'; + String get recentTypeSong => '노래'; @override - String get recentTypePlaylist => 'Playlist'; + String get recentTypePlaylist => '재생목록'; @override - String get recentEmpty => 'No recent items yet'; + String get recentEmpty => '최근 항목이 없음'; @override - String get recentShowAllDownloads => 'Show All Downloads'; + String get recentShowAllDownloads => '모든 다운로드 표시'; @override String recentPlaylistInfo(String name) { - return 'Playlist: $name'; + return '재생목록: $name'; } @override - String get discographyDownload => 'Download Discography'; + String get discographyDownload => '디스코그래피 다운로드'; @override - String get discographyDownloadAll => 'Download All'; + String get discographyDownloadAll => '모두 다운로드'; @override String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$count tracks from $albumCount releases'; + return '$albumCount 개의 릴리스에서 $count 개의 트랙'; } @override - String get discographyAlbumsOnly => 'Albums Only'; + String get discographyAlbumsOnly => '앨범만'; @override String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count tracks from $albumCount albums'; + return '$albumCount 개의 앨범에서 $count 개의 트랙'; } @override - String get discographySinglesOnly => 'Singles & EPs Only'; + String get discographySinglesOnly => '싱글 & EP만'; @override String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count tracks from $albumCount singles'; + return '$albumCount 개의 싱글에서 $count 개의 트랙'; } @override - String get discographySelectAlbums => 'Select Albums...'; + String get discographySelectAlbums => '앨범 검색...'; @override - String get discographySelectAlbumsSubtitle => - 'Choose specific albums or singles'; + String get discographySelectAlbumsSubtitle => '특정 앨범 또는 싱글을 선택하세요'; @override - String get discographyFetchingTracks => 'Fetching tracks...'; + String get discographyFetchingTracks => '트랙을 가져오는 중...'; @override String discographyFetchingAlbum(int current, int total) { - return 'Fetching $current of $total...'; + return '$total 개 중 $current 개를 가져오는 중...'; } @override String discographySelectedCount(int count) { - return '$count selected'; + return '$count 개 선택됨'; } @override - String get discographyDownloadSelected => 'Download Selected'; + String get discographyDownloadSelected => '선택 항목 다운로드'; @override String discographyAddedToQueue(int count) { - return 'Added $count tracks to queue'; + return '다운로드 목록에 $count 개의 트랙이 추가됨'; } @override String discographySkippedDownloaded(int added, int skipped) { - return '$added added, $skipped already downloaded'; + return '$added 개 추가됨, $skipped 개 이미 다운로드됨'; } @override - String get discographyNoAlbums => 'No albums available'; + String get discographyNoAlbums => '사용 가능한 앨범이 없음'; @override - String get discographyFailedToFetch => 'Failed to fetch some albums'; + String get discographyFailedToFetch => '일부 앨범 가져오기 실패'; @override - String get sectionStorageAccess => 'Storage Access'; + String get sectionStorageAccess => '저장소 접근'; @override - String get allFilesAccess => 'All Files Access'; + String get allFilesAccess => '모든 파일 접근'; @override - String get allFilesAccessEnabledSubtitle => 'Can write to any folder'; + String get allFilesAccessEnabledSubtitle => '모든 폴더에 쓰기 가능'; @override - String get allFilesAccessDisabledSubtitle => 'Limited to media folders only'; + String get allFilesAccessDisabledSubtitle => '미디어 폴더에만 제한됨'; @override String get allFilesAccessDescription => - 'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'; + '사용자 정의 폴더에 저장할 경우에 쓰기 오류가 발생하면 이 옵션을 활성화하세요. Android 13 이상에서는 기본적으로 특정 디렉터리에 대한 접근이 제한됩니다'; @override String get allFilesAccessDeniedMessage => - 'Permission was denied. Please enable \'All files access\' manually in system settings.'; + '권한이 거부되었습니다. 시스템 설정에서 \'모든 파일 접근\'를 수동으로 활성화하세요'; @override String get allFilesAccessDisabledMessage => - 'All Files Access disabled. The app will use limited storage access.'; + '모든 파일 접근을 비활성화하였습니다. 앱은 제한된 저장소 접근을 사용합니다'; @override - String get settingsLocalLibrary => 'Local Library'; + String get settingsLocalLibrary => '로컬 라이브러리'; @override - String get settingsLocalLibrarySubtitle => 'Scan music & detect duplicates'; + String get settingsLocalLibrarySubtitle => '음악 스캔 & 중복 감지'; @override - String get settingsCache => 'Storage & Cache'; + String get settingsCache => '저장소 & 캐시'; @override - String get settingsCacheSubtitle => 'View size and clear cached data'; + String get settingsCacheSubtitle => '크기 보기 및 캐시된 데이터 지우기'; @override - String get libraryTitle => 'Local Library'; + String get libraryTitle => '로컬 라이브러리'; @override - String get libraryScanSettings => 'Scan Settings'; + String get libraryScanSettings => '스캔 설정'; @override - String get libraryEnableLocalLibrary => 'Enable Local Library'; + String get libraryEnableLocalLibrary => '로컬 라이브러리 활성화'; @override - String get libraryEnableLocalLibrarySubtitle => - 'Scan and track your existing music'; + String get libraryEnableLocalLibrarySubtitle => '기존 음악을 스캔하고 추적하세요'; @override - String get libraryFolder => 'Library Folder'; + String get libraryFolder => '라이브러리 폴더'; @override - String get libraryFolderHint => 'Tap to select folder'; + String get libraryFolderHint => '탭하여 폴더를 선택하세요'; @override - String get libraryShowDuplicateIndicator => 'Show Duplicate Indicator'; + String get libraryShowDuplicateIndicator => '중복 표시기 표시'; @override - String get libraryShowDuplicateIndicatorSubtitle => - 'Show when searching for existing tracks'; + String get libraryShowDuplicateIndicatorSubtitle => '기존 트랙을 검색할 때 표시'; @override - String get libraryAutoScan => 'Auto Scan'; + String get libraryAutoScan => '자동 스캔'; @override - String get libraryAutoScanSubtitle => - 'Automatically scan your library for new files'; + String get libraryAutoScanSubtitle => '라이브러리에서 새 파일을 자동으로 스캔합니다'; @override - String get libraryAutoScanOff => 'Off'; + String get libraryAutoScanOff => '끄기'; @override - String get libraryAutoScanOnOpen => 'Every app open'; + String get libraryAutoScanOnOpen => '앱을 열 때마다'; @override - String get libraryAutoScanDaily => 'Daily'; + String get libraryAutoScanDaily => '매일'; @override - String get libraryAutoScanWeekly => 'Weekly'; + String get libraryAutoScanWeekly => '주간'; @override - String get libraryActions => 'Actions'; + String get libraryActions => '작업'; @override - String get libraryScan => 'Scan Library'; + String get libraryScan => '라이브러리 스캔'; @override - String get libraryScanSubtitle => 'Scan for audio files'; + String get libraryScanSubtitle => '오디오 파일 스캔'; @override - String get libraryScanSelectFolderFirst => 'Select a folder first'; + String get libraryScanSelectFolderFirst => '먼저 폴더를 선택하세요'; @override - String get libraryCleanupMissingFiles => 'Cleanup Missing Files'; + String get libraryCleanupMissingFiles => '누락된 파일 정리'; @override String get libraryCleanupMissingFilesSubtitle => - 'Remove entries for files that no longer exist'; + '더 이상 존재하지 않는 파일에 대한 항목을 제거합니다'; @override - String get libraryClear => 'Clear Library'; + String get libraryClear => '라이브러리 정리'; @override - String get libraryClearSubtitle => 'Remove all scanned tracks'; + String get libraryClearSubtitle => '스캔된 모든 트랙 제거'; @override - String get libraryClearConfirmTitle => 'Clear Library'; + String get libraryClearConfirmTitle => '라이브러리 정리'; @override String get libraryClearConfirmMessage => - 'This will remove all scanned tracks from your library. Your actual music files will not be deleted.'; + '이렇게 하면 라이브러리에서 스캔된 모든 트랙이 제거됩니다. 실제 음악 파일은 삭제되지 않습니다'; @override - String get libraryAbout => 'About Local Library'; + String get libraryAbout => '로컬 저장소에 대한 정보'; @override String get 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.'; + '기존 음악 라이브러리를 검사하여 다운로드 시 중복 곡을 감지합니다. FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF 및 APE 형식을 지원합니다. 가능한 경우 파일 태그의 메타데이터를 읽어 사용합니다'; @override String libraryTracksUnit(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); return '$_temp0'; } @@ -1966,81 +1933,81 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'files', - one: 'file', + other: '파일', + one: '파일', ); return '$_temp0'; } @override String libraryLastScanned(String time) { - return 'Last scanned: $time'; + return '마지막 스캔 시간: $time'; } @override - String get libraryLastScannedNever => 'Never'; + String get libraryLastScannedNever => '절대 안 함'; @override - String get libraryScanning => 'Scanning...'; + String get libraryScanning => '스캔하는 중...'; @override - String get libraryScanFinalizing => 'Finalizing library...'; + String get libraryScanFinalizing => '라이브러리를 마무리하는 중...'; @override String libraryScanProgress(String progress, int total) { - return '$progress% of $total files'; + return '$total 개의 파일 중 $progress%'; } @override - String get libraryInLibrary => 'In Library'; + String get libraryInLibrary => 'in 라이브러리'; @override String libraryRemovedMissingFiles(int count) { - return 'Removed $count missing files from library'; + return '라이브러리에서 누락된 파일 $count 개가 제거됨'; } @override - String get libraryCleared => 'Library cleared'; + String get libraryCleared => '라이브러리가 초기화됨'; @override - String get libraryStorageAccessRequired => 'Storage Access Required'; + String get libraryStorageAccessRequired => '저장소 접근 권한 필요'; @override String get libraryStorageAccessMessage => - 'SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.'; + 'SpotifyFLAC은 음악 라이브러리를 스캔하기 위해 저장소 접근 권한이 필요합니다. 설정에서 권한을 부여해 주세요'; @override - String get libraryFolderNotExist => 'Selected folder does not exist'; + String get libraryFolderNotExist => '선택한 폴더가 존재하지 않음'; @override - String get librarySourceDownloaded => 'Downloaded'; + String get librarySourceDownloaded => '다운로드됨'; @override - String get librarySourceLocal => 'Local'; + String get librarySourceLocal => '로컬'; @override - String get libraryFilterAll => 'All'; + String get libraryFilterAll => '모두'; @override - String get libraryFilterDownloaded => 'Downloaded'; + String get libraryFilterDownloaded => '다운로드됨'; @override - String get libraryFilterLocal => 'Local'; + String get libraryFilterLocal => '로컬'; @override - String get libraryFilterTitle => 'Filters'; + String get libraryFilterTitle => '필터'; @override - String get libraryFilterReset => 'Reset'; + String get libraryFilterReset => '초기화'; @override - String get libraryFilterApply => 'Apply'; + String get libraryFilterApply => '적용'; @override - String get libraryFilterSource => 'Source'; + String get libraryFilterSource => '출처'; @override - String get libraryFilterQuality => 'Quality'; + String get libraryFilterQuality => '음질'; @override String get libraryFilterQualityHiRes => 'Hi-Res (24bit)'; @@ -2049,60 +2016,60 @@ class AppLocalizationsKo extends AppLocalizations { String get libraryFilterQualityCD => 'CD (16bit)'; @override - String get libraryFilterQualityLossy => 'Lossy'; + String get libraryFilterQualityLossy => '손실 압축'; @override - String get libraryFilterFormat => 'Format'; + String get libraryFilterFormat => '형식'; @override - String get libraryFilterMetadata => 'Metadata'; + String get libraryFilterMetadata => '메타데이터'; @override - String get libraryFilterMetadataComplete => 'Complete metadata'; + String get libraryFilterMetadataComplete => '전체 메타데이터'; @override - String get libraryFilterMetadataMissingAny => 'Missing any metadata'; + String get libraryFilterMetadataMissingAny => '메타데이터 누락'; @override - String get libraryFilterMetadataMissingYear => 'Missing year'; + String get libraryFilterMetadataMissingYear => '연도 누락'; @override - String get libraryFilterMetadataMissingGenre => 'Missing genre'; + String get libraryFilterMetadataMissingGenre => '장르 누락'; @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; + String get libraryFilterMetadataMissingAlbumArtist => '앨범 아티스트 누락'; @override - String get libraryFilterSort => 'Sort'; + String get libraryFilterSort => '정렬'; @override - String get libraryFilterSortLatest => 'Latest'; + String get libraryFilterSortLatest => '최신순'; @override - String get libraryFilterSortOldest => 'Oldest'; + String get libraryFilterSortOldest => '오래된순'; @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; + String get libraryFilterSortAlbumAsc => '앨범 (오름차순)'; @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; + String get libraryFilterSortAlbumDesc => '앨범 (내림차순)'; @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; + String get libraryFilterSortGenreAsc => '장르 (오름차순)'; @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; + String get libraryFilterSortGenreDesc => '장르 (내림차순)'; @override - String get timeJustNow => 'Just now'; + String get timeJustNow => '방금 전'; @override String timeMinutesAgo(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count minutes ago', - one: '1 minute ago', + other: '$count 분 전', + one: '1 분 전', ); return '$_temp0'; } @@ -2112,199 +2079,179 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count hours ago', - one: '1 hour ago', + other: '$count 시간 전', + one: '1 시간 전', ); return '$_temp0'; } @override - String get tutorialWelcomeTitle => 'Welcome to SpotiFLAC!'; + String get tutorialWelcomeTitle => 'SpotiFLAC에 오신 것을 환영합니다!'; @override String get tutorialWelcomeDesc => - 'Let\'s learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.'; + '좋아하는 음악을 무손실 음질로 다운로드하는 방법을 알아보겠습니다. 이 간단한 튜토리얼은 기본 사항을 보여줍니다'; @override String get tutorialWelcomeTip1 => - 'Download music from Spotify, Deezer, or paste any supported URL'; + 'Spotify, Deezer에서 음악을 다운로드하거나 지원되는 URL을 붙여넣으세요'; @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; + String get tutorialWelcomeTip2 => '설치된 다운로드 확장 프로그램에서 FLAC 음질 오디오를 받으세요'; @override - String get tutorialWelcomeTip3 => - 'Automatic metadata, cover art, and lyrics embedding'; + String get tutorialWelcomeTip3 => '메타데이터, 표지 이미지 및 가사 자동 삽입'; @override - String get tutorialSearchTitle => 'Finding Music'; + String get tutorialSearchTitle => '음악 찾기'; @override - String get tutorialSearchDesc => - 'There are two easy ways to find music you want to download.'; + String get tutorialSearchDesc => '다운로드하고 싶은 음악을 찾는 두 가지 쉬운 방법이 있습니다'; @override - String get tutorialDownloadTitle => 'Downloading Music'; + String get tutorialDownloadTitle => '음악 다운로드'; @override - String get tutorialDownloadDesc => - 'Downloading music is simple and fast. Here\'s how it works.'; + String get tutorialDownloadDesc => '음악 다운로드는 간단하고 빠릅니다. 작동 방식은 다음과 같습니다'; @override - String get tutorialLibraryTitle => 'Your Library'; + String get tutorialLibraryTitle => '내 라이브러리'; @override - String get tutorialLibraryDesc => - 'All your downloaded music is organized in the Library tab.'; + String get tutorialLibraryDesc => '다운로드한 모든 음악은 라이브러리 탭에 정리되어 있습니다'; @override - String get tutorialLibraryTip1 => - 'View download progress and queue in the Library tab'; + String get tutorialLibraryTip1 => '라이브러리 탭에서 다운로드 진행 상황과 다운로드 목록을 확인하세요'; @override - String get tutorialLibraryTip2 => - 'Tap any track to play it with your music player'; + String get tutorialLibraryTip2 => '음악 플레이어로 재생하려면 아무 트랙이나 탭하세요'; @override - String get tutorialLibraryTip3 => - 'Switch between list and grid view for better browsing'; + String get tutorialLibraryTip3 => '더 나은 탐색을 위해 리스트 보기와 그리드 보기 사이를 전환하세요'; @override - String get tutorialExtensionsTitle => 'Extensions'; + String get tutorialExtensionsTitle => '확장 프로그램'; @override - String get tutorialExtensionsDesc => - 'Extend the app\'s capabilities with community extensions.'; + String get tutorialExtensionsDesc => '커뮤니티 확장 프로그램을 사용하여 앱의 기능을 확장하세요'; @override - String get tutorialExtensionsTip1 => - 'Browse the Repo tab to discover useful extensions'; + String get tutorialExtensionsTip1 => '유용한 확장 프로그램을 찾으려면 리포 탭을 탐색하세요'; @override - String get tutorialExtensionsTip2 => - 'Add new download providers or search sources'; + String get tutorialExtensionsTip2 => '새 다운로드 제공자 또는 검색 출처를 추가하세요'; @override - String get tutorialExtensionsTip3 => - 'Get lyrics, enhanced metadata, and more features'; + String get tutorialExtensionsTip3 => '가사, 향상된 메타데이터 및 더 많은 기능을 이용하세요'; @override - String get tutorialSettingsTitle => 'Customize Your Experience'; + String get tutorialSettingsTitle => '사용자 환경 맞춤 설정'; @override - String get tutorialSettingsDesc => - 'Personalize the app in Settings to match your preferences.'; + String get tutorialSettingsDesc => '설정에서 앱을 원하는 대로 맞춤 설정하세요'; @override - String get tutorialSettingsTip1 => - 'Change download location and folder organization'; + String get tutorialSettingsTip1 => '다운로드 위치 및 폴더 구성 변경'; @override - String get tutorialSettingsTip2 => - 'Set default audio quality and format preferences'; + String get tutorialSettingsTip2 => '기본 오디오 음질 및 형식 설정'; @override - String get tutorialSettingsTip3 => 'Customize app theme and appearance'; + String get tutorialSettingsTip3 => '앱 테마 및 디자인 사용자 정의'; @override - String get tutorialReadyMessage => - 'You\'re all set! Start downloading your favorite music now.'; + String get tutorialReadyMessage => '모든 준비가 완료되었습니다! 지금 바로 좋아하는 음악을 다운로드하세요'; @override - String get libraryForceFullScan => 'Force Full Scan'; + String get libraryForceFullScan => '전제 스캔 강제 실행'; @override - String get libraryForceFullScanSubtitle => 'Rescan all files, ignoring cache'; + String get libraryForceFullScanSubtitle => '캐시를 무시하고 모든 파일을 다시 스캔합니다'; @override - String get cleanupOrphanedDownloads => 'Cleanup Orphaned Downloads'; + String get cleanupOrphanedDownloads => '불필요한 다운로드 파일 정리'; @override String get cleanupOrphanedDownloadsSubtitle => - 'Remove history entries for files that no longer exist'; + '더 이상 존재하지 않는 파일의 기록 항목을 제거합니다'; @override String cleanupOrphanedDownloadsResult(int count) { - return 'Removed $count orphaned entries from history'; + return '기록에서 $count 개의 불필요한 항목이 제거됨'; } @override - String get cleanupOrphanedDownloadsNone => 'No orphaned entries found'; + String get cleanupOrphanedDownloadsNone => '불필요한 항목이 없습니다'; @override - String get cacheTitle => 'Storage & Cache'; + String get cacheTitle => '저장소 & 캐시'; @override - String get cacheSummaryTitle => 'Cache overview'; + String get cacheSummaryTitle => '캐시 요약'; @override - String get cacheSummarySubtitle => - 'Clearing cache will not remove downloaded music files.'; + String get cacheSummarySubtitle => '캐시를 지워도 다운로드한 음악 파일은 삭제되지 않습니다'; @override String cacheEstimatedTotal(String size) { - return 'Estimated cache usage: $size'; + return '예상 캐시 사용량: $size'; } @override - String get cacheSectionStorage => 'Cached Data'; + String get cacheSectionStorage => '캐시된 데이터'; @override - String get cacheSectionMaintenance => 'Maintenance'; + String get cacheSectionMaintenance => '유지 관리'; @override - String get cacheAppDirectory => 'App cache directory'; + String get cacheAppDirectory => '앱 캐시 디렉토리'; @override - String get cacheAppDirectoryDesc => - 'HTTP responses, WebView data, and other temporary app data.'; + String get cacheAppDirectoryDesc => 'HTTP 응답, WebView 데이터 및 기타 임시 앱 데이터'; @override - String get cacheTempDirectory => 'Temporary directory'; + String get cacheTempDirectory => '임시 디렉토리'; @override - String get cacheTempDirectoryDesc => - 'Temporary files from downloads and audio conversion.'; + String get cacheTempDirectoryDesc => '다운로드 및 오디오 변환으로 생성된 임시 파일'; @override - String get cacheCoverImage => 'Cover image cache'; + String get cacheCoverImage => '표지 이미지 캐시'; @override - String get cacheCoverImageDesc => - 'Downloaded album and track cover art. Will re-download when viewed.'; + String get cacheCoverImageDesc => '다운로드된 앨범 및 트랙 표지 이미지입니다. 볼 때 다시 다운로드됩니다'; @override - String get cacheLibraryCover => 'Library cover cache'; + String get cacheLibraryCover => '라이브러리 표지 캐시'; @override String get cacheLibraryCoverDesc => - 'Cover art extracted from local music files. Will re-extract on next scan.'; + '로컬 음악 파일에서 표지 이미지를 추출하였습니다. 다음 스캔 시 다시 추출합니다'; @override - String get cacheExploreFeed => 'Explore feed cache'; + String get cacheExploreFeed => '탐색 피드 캐시'; @override String get cacheExploreFeedDesc => - 'Explore tab content (new releases, trending). Will refresh on next visit.'; + '탐색 탭 콘텐츠(신규 발매, 인기 콘텐츠)는 다음 방문 시 새로 고쳐집니다'; @override - String get cacheTrackLookup => 'Track lookup cache'; + String get cacheTrackLookup => '트랙 조회 캐시'; @override String get cacheTrackLookupDesc => - 'Spotify/Deezer track ID lookups. Clearing may slow next few searches.'; + 'Spotify/Deezer 트랙 ID을 조회합니다. 지우면 속도가 느려질 수 있습니다'; @override String get cacheCleanupUnusedDesc => - 'Remove orphaned download history and library entries for missing files.'; + '누락된 파일에 대한 불필요한 다운로드 기록 및 라이브러리 항목을 제거합니다'; @override - String get cacheNoData => 'No cached data'; + String get cacheNoData => '캐시된 데이터가 없음'; @override String cacheSizeWithFiles(String size, int count) { - return '$size in $count files'; + return '$count 개의 파일에 $size 사용'; } @override @@ -2314,166 +2261,164 @@ class AppLocalizationsKo extends AppLocalizations { @override String cacheEntries(int count) { - return '$count entries'; + return '$count 개의 항목'; } @override String cacheClearSuccess(String target) { - return 'Cleared: $target'; + return '지워짐: $target'; } @override - String get cacheClearConfirmTitle => 'Clear cache?'; + String get cacheClearConfirmTitle => '캐시를 지우시겠습니까?'; @override String cacheClearConfirmMessage(String target) { - return 'This will clear cached data for $target. Downloaded music files will not be deleted.'; + return '\'\'$target\'\'의 캐시된 데이터를 지웁니다. 다운로드한 음악 파일은 삭제되지 않습니다'; } @override - String get cacheClearAllConfirmTitle => 'Clear all cache?'; + String get cacheClearAllConfirmTitle => '모든 캐시를 지우시겠습니까?'; @override String get cacheClearAllConfirmMessage => - 'This will clear all cache categories on this page. Downloaded music files will not be deleted.'; + '이 페이지의 모든 캐시 카테고리가 지워집니다. 다운로드한 음악 파일은 삭제되지 않습니다'; @override - String get cacheClearAll => 'Clear all cache'; + String get cacheClearAll => '모든 캐시 지우기'; @override - String get cacheCleanupUnused => 'Cleanup unused data'; + String get cacheCleanupUnused => '사용되지 않는 데이터 정리'; @override - String get cacheCleanupUnusedSubtitle => - 'Remove orphaned download history and missing library entries'; + String get cacheCleanupUnusedSubtitle => '불필요한 다운로드 기록 및 누락된 라이브러리 항목을 제거합니다'; @override String cacheCleanupResult(int downloadCount, int libraryCount) { - return 'Cleanup completed: $downloadCount orphaned downloads, $libraryCount missing library entries'; + return '정리 완료: $downloadCount 개의 사용되지 않는 다운로드, $libraryCount 개의 누락된 라이브러리 항목'; } @override - String get cacheRefreshStats => 'Refresh stats'; + String get cacheRefreshStats => '통계 새로고침'; @override - String get trackSaveCoverArt => 'Save Cover Art'; + String get trackSaveCoverArt => '표지 이미지 저장'; @override - String get trackSaveCoverArtSubtitle => 'Save album art as .jpg file'; + String get trackSaveCoverArtSubtitle => '표지 이미지를 .jpg 파일로 저장'; @override - String get trackSaveLyrics => 'Save Lyrics (.lrc)'; + String get trackSaveLyrics => '가사 (.lrc) 저장'; @override - String get trackSaveLyricsSubtitle => 'Fetch and save lyrics as .lrc file'; + String get trackSaveLyricsSubtitle => '가사를 .Irc 파일로 가져와서 저장'; @override - String get trackSaveLyricsProgress => 'Saving lyrics...'; + String get trackSaveLyricsProgress => '가사를 저장하는 중...'; @override - String get trackReEnrich => 'Re-enrich'; + String get trackReEnrich => '보강'; @override - String get trackReEnrichOnlineSubtitle => - 'Search metadata online and embed into file'; + String get trackReEnrichOnlineSubtitle => '온라인에서 메타데이터를 검색하고 파일에 삽입'; @override - String get trackReEnrichFieldsTitle => 'Fields to update'; + String get trackReEnrichFieldsTitle => '업데이트할 필드'; @override - String get trackReEnrichFieldCover => 'Cover Art'; + String get trackReEnrichFieldCover => '표지 이미지'; @override - String get trackReEnrichFieldLyrics => 'Lyrics'; + String get trackReEnrichFieldLyrics => '가사'; @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; + String get trackReEnrichFieldBasicTags => '앨범, 앨범 아티스트'; @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; + String get trackReEnrichFieldTrackInfo => '트랙 & 디스크 번호'; @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; + String get trackReEnrichFieldReleaseInfo => '데이터 & ISRC'; @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; + String get trackReEnrichFieldExtra => '장르, 레이블, 저작권'; @override - String get trackReEnrichSelectAll => 'Select All'; + String get trackReEnrichSelectAll => '모두 선택'; @override - String get trackEditMetadata => 'Edit Metadata'; + String get trackEditMetadata => '메타데이터 편집'; @override String trackCoverSaved(String fileName) { - return 'Cover art saved to $fileName'; + return '표지 이미지가 \'\'$fileName\'\'에 저장됨'; } @override - String get trackCoverNoSource => 'No cover art source available'; + String get trackCoverNoSource => '사용할 수 있는 표지 출처가 없음'; @override String trackLyricsSaved(String fileName) { - return 'Lyrics saved to $fileName'; + return '가사가 \'\'$fileName\'\'에 저장됨'; } @override - String get trackReEnrichProgress => 'Re-enriching metadata...'; + String get trackReEnrichProgress => '메타데이터를 다시 구성하는 중...'; @override - String get trackReEnrichSearching => 'Searching metadata online...'; + String get trackReEnrichSearching => '온라인에서 메타데이터를 검색하는 중...'; @override - String get trackReEnrichSuccess => 'Metadata re-enriched successfully'; + String get trackReEnrichSuccess => '메타데이터 재구성 성공'; @override - String get trackReEnrichFfmpegFailed => 'FFmpeg metadata embed failed'; + String get trackReEnrichFfmpegFailed => 'FFmpeg 메타데이터 삽입 실패'; @override - String get queueFlacAction => 'Queue FLAC'; + String get queueFlacAction => 'FLAC 다운로드 목록'; @override String queueFlacConfirmMessage(int count) { - return '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'; + return '선택한 트랙에 대한 온라인 일치 항목을 검색하고 FLAC을 다운로드 목록에 추가합니다\n\n기존 파일은 수정되거나 삭제되지 않습니다\n\n신뢰도가 높은 일치 항목만 자동으로 대기열에 추가됩니다\n\n$count 개가 선택되었습니다'; } @override String queueFlacFindingProgress(int current, int total) { - return 'Finding FLAC matches... ($current/$total)'; + return 'FLAC 일치 항목을 찾는 중... ($current/$total)'; } @override String get queueFlacNoReliableMatches => - 'No reliable online matches found for the selection'; + '선택한 항목에 대한 신뢰할 수 있는 온라인 일치 항목을 찾을 수 없음'; @override String queueFlacQueuedWithSkipped(int addedCount, int skippedCount) { - return 'Added $addedCount tracks to queue, skipped $skippedCount'; + return '다운로드 목록에 $addedCount 개의 트랙을 추가하고, $skippedCount 개의 트랙을 건너뜀'; } @override String trackSaveFailed(String error) { - return 'Failed: $error'; + return '실패: $error'; } @override - String get trackConvertFormat => 'Convert Format'; + String get trackConvertFormat => '형식 변환'; @override String get trackConvertFormatSubtitle => - 'Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC'; + 'AAC/M4A, MP3, Opus, ALAC 또는 FLAC으로 변환'; @override - String get trackConvertTitle => 'Convert Audio'; + String get trackConvertTitle => '오디오 변환'; @override - String get trackConvertTargetFormat => 'Target Format'; + String get trackConvertTargetFormat => '변경될 형식'; @override - String get trackConvertBitrate => 'Bitrate'; + String get trackConvertBitrate => '비트레이트'; @override - String get trackConvertConfirmTitle => 'Confirm Conversion'; + String get trackConvertConfirmTitle => '변환 확인'; @override String trackConvertConfirmMessage( @@ -2481,7 +2426,7 @@ class AppLocalizationsKo extends AppLocalizations { String targetFormat, String bitrate, ) { - return 'Convert from $sourceFormat to $targetFormat at $bitrate?\n\nThe original file will be deleted after conversion.'; + return '$bitrate 비트레이트로 $sourceFormat에서 $targetFormat으로 변환하시겠습니까?\n\n변환 후 원본 파일이 삭제됩니다'; } @override @@ -2489,113 +2434,111 @@ class AppLocalizationsKo extends AppLocalizations { String sourceFormat, String targetFormat, ) { - return 'Convert from $sourceFormat to $targetFormat? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.'; + return '$sourceFormat에서 $targetFormat으로 변환하시겠습니까? (무손실 — 음질 손실 없음)\n\n변환 후에 원본 파일이 삭제됩니다'; } @override - String get trackConvertLosslessHint => - 'Lossless conversion — no quality loss'; + String get trackConvertLosslessHint => '무손실 변환 — 음질 손실 없음'; @override - String get trackConvertConverting => 'Converting audio...'; + String get trackConvertConverting => '오디오를 변환하는 중...'; @override String trackConvertSuccess(String format) { - return 'Converted to $format successfully'; + return '$format으로 변환 성공'; } @override - String get trackConvertFailed => 'Conversion failed'; + String get trackConvertFailed => '변환 실패'; @override - String get cueSplitTitle => 'Split CUE Sheet'; + String get cueSplitTitle => 'CUE 시트 분할'; @override - String get cueSplitSubtitle => 'Split CUE+FLAC into individual tracks'; + String get cueSplitSubtitle => 'CUE+FLAC을 개별 트랙으로 분할'; @override String cueSplitAlbum(String album) { - return 'Album: $album'; + return '앨범: $album'; } @override String cueSplitArtist(String artist) { - return 'Artist: $artist'; + return '아티스트: $artist'; } @override String cueSplitTrackCount(int count) { - return '$count tracks'; + return '$count 개의 트랙'; } @override - String get cueSplitConfirmTitle => 'Split CUE Album'; + String get cueSplitConfirmTitle => 'CUE 앨범 분할'; @override String cueSplitConfirmMessage(String album, int count) { - return 'Split \"$album\" into $count individual FLAC files?\n\nFiles will be saved to the same directory.'; + return '\'\'$album\'\'을 $count 개의 개별 FLAC 파일로 분할하시겠습니까?\n\n파일은 동일한 디렉토리에 저장됩니다'; } @override String cueSplitSplitting(int current, int total) { - return 'Splitting CUE sheet... ($current/$total)'; + return 'CUE 시트를 분할하는 중... ($current/$total)'; } @override String cueSplitSuccess(int count) { - return 'Split into $count tracks successfully'; + return '$count 개의 트랙 분할 성공'; } @override - String get cueSplitFailed => 'CUE split failed'; + String get cueSplitFailed => 'CUE 분할 실패'; @override - String get cueSplitNoAudioFile => 'Audio file not found for this CUE sheet'; + String get cueSplitNoAudioFile => '이 CUE 시트에 대한 오디오 파일을 찾을 수 없습니다'; @override - String get cueSplitButton => 'Split into Tracks'; + String get cueSplitButton => '트랙으로 분할'; @override - String get actionCreate => 'Create'; + String get actionCreate => '생성'; @override - String get collectionFoldersTitle => 'My folders'; + String get collectionFoldersTitle => '내 폴더'; @override - String get collectionWishlist => 'Wishlist'; + String get collectionWishlist => '위시리스트'; @override - String get collectionLoved => 'Loved'; + String get collectionLoved => '좋아요 표시한 트랙'; @override - String get collectionFavoriteArtists => 'Favorite Artists'; + String get collectionFavoriteArtists => '좋아하는 아티스트'; @override - String get collectionPlaylists => 'Playlists'; + String get collectionPlaylists => '재생목록'; @override - String get collectionPlaylist => 'Playlist'; + String get collectionPlaylist => '재생목록'; @override - String get collectionAddToPlaylist => 'Add to playlist'; + String get collectionAddToPlaylist => '재생목록에 추가'; @override - String get collectionCreatePlaylist => 'Create playlist'; + String get collectionCreatePlaylist => '재생목록 생성'; @override - String get collectionNoPlaylistsYet => 'No playlists yet'; + String get collectionNoPlaylistsYet => '아직 재생목록이 없음'; @override - String get collectionNoPlaylistsSubtitle => - 'Create a playlist to start categorizing tracks'; + String get collectionNoPlaylistsSubtitle => '트랙 분류를 시작하려면 재생목록을 만드세요'; @override String collectionPlaylistTracks(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tracks', - one: '1 track', + other: '$count 개의 트랙', + one: '1 개의 트랙', ); return '$_temp0'; } @@ -2605,171 +2548,169 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count artists', - one: '1 artist', + other: '$count 명의 아티스트', + one: '1 명의 아티스트', ); return '$_temp0'; } @override String collectionAddedToPlaylist(String playlistName) { - return 'Added to \"$playlistName\"'; + return '\'\'$playlistName\'\'에 추가됨'; } @override String collectionAlreadyInPlaylist(String playlistName) { - return 'Already in \"$playlistName\"'; + return '이미 \'\'$playlistName\'\'에 있음'; } @override - String get collectionPlaylistCreated => 'Playlist created'; + String get collectionPlaylistCreated => '재생목록 생성 완료'; @override - String get collectionPlaylistNameHint => 'Playlist name'; + String get collectionPlaylistNameHint => '재생목록 이름'; @override - String get collectionPlaylistNameRequired => 'Playlist name is required'; + String get collectionPlaylistNameRequired => '재생목록 이름은 필수입니다'; @override - String get collectionRenamePlaylist => 'Rename playlist'; + String get collectionRenamePlaylist => '재생목록 이름 변경'; @override - String get collectionDeletePlaylist => 'Delete playlist'; + String get collectionDeletePlaylist => '재생목록 삭제'; @override String collectionDeletePlaylistMessage(String playlistName) { - return 'Delete \"$playlistName\" and all tracks inside it?'; + return '\'\'$playlistName\'\'과 그 안에 있는 모든 트랙을 삭제하시겠습니까?'; } @override - String get collectionPlaylistDeleted => 'Playlist deleted'; + String get collectionPlaylistDeleted => '재생목록 삭제 완료'; @override - String get collectionPlaylistRenamed => 'Playlist renamed'; + String get collectionPlaylistRenamed => '재생목록 이름 변경 완료'; @override - String get collectionWishlistEmptyTitle => 'Wishlist is empty'; + String get collectionWishlistEmptyTitle => '위시리스트가 비어 있음'; @override String get collectionWishlistEmptySubtitle => - 'Tap + on tracks to save what you want to download later'; + '나중에 다운로드할 트랙을 저장하려면 트랙에서 +를 탭하세요'; @override - String get collectionLovedEmptyTitle => 'Loved folder is empty'; + String get collectionLovedEmptyTitle => '\'좋아요 표시한 트랙\' 폴더가 비어 있음'; @override - String get collectionLovedEmptySubtitle => - 'Tap love on tracks to keep your favorites'; + String get collectionLovedEmptySubtitle => '트랙에 하트를 탭하여 \'좋아요\'를 유지하세요'; @override - String get collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; + String get collectionFavoriteArtistsEmptyTitle => '아직 좋아하는 아티스트가 없음'; @override String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; + '아티스트 페이지에서 하트를 탭하여 여기에 추가하세요'; @override - String get collectionPlaylistEmptyTitle => 'Playlist is empty'; + String get collectionPlaylistEmptyTitle => '재생목록이 비어 있음'; @override - String get collectionPlaylistEmptySubtitle => - 'Long-press + on any track to add it here'; + String get collectionPlaylistEmptySubtitle => '아무 트랙에서 +를 길게 탭하여 여기에 추가하세요'; @override - String get collectionRemoveFromPlaylist => 'Remove from playlist'; + String get collectionRemoveFromPlaylist => '재생목록에서 제거'; @override - String get collectionRemoveFromFolder => 'Remove from folder'; + String get collectionRemoveFromFolder => '폴더에서 제거'; @override String collectionRemoved(String trackName) { - return '\"$trackName\" removed'; + return '\'\'$trackName\'\' 제거 완료'; } @override String collectionAddedToLoved(String trackName) { - return '\"$trackName\" added to Loved'; + return '\'\'$trackName\'\'이 \'좋아요 표시한 트랙\'에 추가됨'; } @override String collectionRemovedFromLoved(String trackName) { - return '\"$trackName\" removed from Loved'; + return '\'\'$trackName\'\'이 \'좋아요 표시한 트랙\'에서 제거됨'; } @override String collectionAddedToWishlist(String trackName) { - return '\"$trackName\" added to Wishlist'; + return '\'\'$trackName\'\'가 위시리스트에 추가됨'; } @override String collectionRemovedFromWishlist(String trackName) { - return '\"$trackName\" removed from Wishlist'; + return '\'\'$trackName\'\'가 위시리스트에서 제거됨'; } @override String collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; + return '\'\'$artistName\'\'가 좋아하는 아티스트에 추가됨'; } @override String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; + return '\'\'$artistName\'\'가 좋아하는 아티스트에서 제거됨'; } @override - String get trackOptionAddToLoved => 'Add to Loved'; + String get trackOptionAddToLoved => '좋아요 표시한 트랙에 추가'; @override - String get trackOptionRemoveFromLoved => 'Remove from Loved'; + String get trackOptionRemoveFromLoved => '좋아요 표시한 트랙에서 제거'; @override - String get trackOptionAddToWishlist => 'Add to Wishlist'; + String get trackOptionAddToWishlist => '위시리스트에 추가'; @override - String get trackOptionRemoveFromWishlist => 'Remove from Wishlist'; + String get trackOptionRemoveFromWishlist => '위시리스트에서 제거'; @override - String get artistOptionAddToFavorites => 'Add to Favorite Artists'; + String get artistOptionAddToFavorites => '즐겨찾는 아티스트에 추가'; @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; + String get artistOptionRemoveFromFavorites => '즐겨찾는 아티스트에서 제거'; @override - String get collectionPlaylistChangeCover => 'Change cover image'; + String get collectionPlaylistChangeCover => '표지 이미지 변경'; @override - String get collectionPlaylistRemoveCover => 'Remove cover image'; + String get collectionPlaylistRemoveCover => '표지 이미지 제거'; @override String selectionShareCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Share $count $_temp0'; + return '$count $_temp0 공유'; } @override - String get selectionShareNoFiles => 'No shareable files found'; + String get selectionShareNoFiles => '공유할 수 있는 파일을 찾을 수 없음'; @override String selectionConvertCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Convert $count $_temp0'; + return '$count $_temp0 변환'; } @override - String get selectionConvertNoConvertible => 'No convertible tracks selected'; + String get selectionConvertNoConvertible => '선택된 변환할 수 있는 트랙이 없음'; @override - String get selectionBatchConvertConfirmTitle => 'Batch Convert'; + String get selectionBatchConvertConfirmTitle => '일괄 변환'; @override String selectionBatchConvertConfirmMessage( @@ -2780,10 +2721,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Convert $count $_temp0 to $format at $bitrate?\n\nOriginal files will be deleted after conversion.'; + return '$count 개의 $_temp0을 $bitrate 비트레이트로 $format으로 변환하시겠습니까?\n\n변환 후 원본 파일이 삭제됩니다'; } @override @@ -2791,196 +2732,187 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Convert $count $_temp0 to $format? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.'; + return '$count 개의 $_temp0을 $format으로 변환하시겠습니까? (무손실 — 음질 손실 없음)\n\n변환 후 원본 파일이 삭제됩니다'; } @override String selectionBatchConvertProgress(int current, int total) { - return 'Converting $current of $total...'; + return '$total 개 중 $current 개를 변환하는 중...'; } @override String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Converted $success of $total tracks to $format'; + return '$total 개 중 $success 개를 $format로 변환 완료'; } @override String downloadedAlbumDownloadedCount(int count) { - return '$count downloaded'; + return '$count 개 다운로드됨'; } @override String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Folder named after Album Artist tag'; + '앨범 아티스트 태그로 이름이 지정된 폴더'; @override String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Folder named after Track Artist tag'; + '트랙 아티스트 태그로 이름이 지정된 폴더'; @override - String get lyricsProvidersTitle => 'Lyrics Provider Priority'; + String get lyricsProvidersTitle => '가사 제공자 우선순위'; @override String get lyricsProvidersDescription => - 'Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.'; + '가사 출처를 활성화, 비활성화 및 재정렬합니다. 가사가 발견될 때까지 위에서 아래로 제공자를 시도합니다'; @override String get lyricsProvidersInfoText => - 'Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.'; + '확장 프로그램 가사 제공자는 내장 가사 제공자보다 먼저 실행됩니다. 하나 이상의 제공자가 활성화되어 있어야 합니다'; @override String lyricsProvidersEnabledSection(int count) { - return 'Enabled ($count)'; + return '활성화됨 ($count)'; } @override String lyricsProvidersDisabledSection(int count) { - return 'Disabled ($count)'; + return '비활성화됨 ($count)'; } @override - String get lyricsProvidersAtLeastOne => - 'At least one provider must remain enabled'; + String get lyricsProvidersAtLeastOne => '최소 한 명의 제공자가 활성화된 상태로 유지되어야 합니다'; @override - String get lyricsProvidersSaved => 'Lyrics provider priority saved'; + String get lyricsProvidersSaved => '가사 제공자 우선순위가 저장됨'; @override - String get lyricsProvidersDiscardContent => - 'You have unsaved changes that will be lost.'; + String get lyricsProvidersDiscardContent => '저장되지 않은 변경 사항이 손실됩니다'; @override - String get lyricsProviderLrclibDesc => 'Open-source synced lyrics database'; + String get lyricsProviderLrclibDesc => '오픈 소스 동기화 가사 데이터베이스'; @override - String get lyricsProviderNeteaseDesc => - 'NetEase Cloud Music (good for Asian songs)'; + String get lyricsProviderNeteaseDesc => 'NetEase Cloud Music (아시아 노래에 적합)'; @override - String get lyricsProviderMusixmatchDesc => - 'Largest lyrics database (multi-language)'; + String get lyricsProviderMusixmatchDesc => '최대 규모의 가사 데이터베이스 (다국어 지원)'; @override - String get lyricsProviderAppleMusicDesc => - 'Word-by-word synced lyrics (via proxy)'; + String get lyricsProviderAppleMusicDesc => '단어별 동기화 가사 (프록시 경유)'; @override - String get lyricsProviderQqMusicDesc => - 'QQ Music (good for Chinese songs, via proxy)'; + String get lyricsProviderQqMusicDesc => 'QQ Music (중국 노래에 적합, 프록시 경유)'; @override String get lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; + '단어별 노래방 가사 (Apple/Musixmatch/Spotify/QQ, 프록시 이용)'; @override - String get lyricsProviderExtensionDesc => 'Extension provider'; + String get lyricsProviderExtensionDesc => '확장 프로그램 제공자'; @override - String get safMigrationTitle => 'Storage Update Required'; + String get safMigrationTitle => '저장소 업데이트 필요'; @override String get safMigrationMessage1 => - 'SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.'; + 'SpotiFLAC은 이제 다운로드에 Android 저장소 접근 프레임워크(SAF)를 사용합니다. 이로써 Android 10 이상에서 \'권한 거부\' 오류가 해결됩니다'; @override - String get safMigrationMessage2 => - 'Please select your download folder again to switch to the new storage system.'; + String get safMigrationMessage2 => '새 저장소 시스템으로 전환하려면 다운로드 폴더를 다시 선택하세요'; @override - String get safMigrationSuccess => 'Download folder updated to SAF mode'; + String get safMigrationSuccess => '다운로드 폴더가 SAF 모드로 업데이트됨'; @override - String get settingsDonate => 'Support Development'; + String get settingsDonate => '개발 지원'; @override - String get settingsDonateSubtitle => 'Buy the developer a coffee'; + String get settingsDonateSubtitle => '개발자에게 커피 한 잔 사주세요'; @override - String get settingsBackup => 'Backup & Restore'; + String get settingsBackup => '백업 & 복원'; @override - String get settingsBackupSubtitle => - 'Move your library, history and settings to a new device'; + String get settingsBackupSubtitle => '라이브러리, 기록 및 설정을 새 기기로 옮겨보세요'; @override - String get backupTitle => 'Backup & Restore'; + String get backupTitle => '백업 & 복원'; @override - String get backupExportSectionTitle => 'Create backup'; + String get backupExportSectionTitle => '백업 생성'; @override String get 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.'; + '설정, 다운로드 기록, 좋아요 표시한 트랙, 위시리스트, 즐겨찾는 아티스트 및 재생목록을 하나의 파일로 저장하여 보관하거나 다른 휴대전화로 옮길 수 있습니다'; @override - String get backupExportButton => 'Create backup file'; + String get backupExportButton => '백업 파일 생성'; @override - String get backupImportSectionTitle => 'Restore backup'; + String get backupImportSectionTitle => '백업 복원'; @override String get backupImportSectionDescription => - 'Pick a backup file to restore your data. This replaces the current settings, history and library on this device.'; + '데이터를 복원할 백업 파일을 선택하세요. 이 작업을 수행하면 현재 기기에 저장된 설정, 기록 및 라이브러리가 백업 파일의 내용으로 대체됩니다'; @override - String get backupImportButton => 'Choose backup file'; + String get backupImportButton => '백업 파일 선택'; @override - String get backupCreating => 'Creating backup...'; + String get backupCreating => '백업을 생성하는 중...'; @override - String get backupCreated => 'Backup created'; + String get backupCreated => '백업 생성 완료'; @override - String get backupCreateFailed => 'Failed to create backup'; + String get backupCreateFailed => '백업 생성 실패'; @override - String get backupEmpty => 'There is nothing to back up yet'; + String get backupEmpty => '아직 백업할 내용이 없습니다'; @override - String get backupRestoreConfirmTitle => 'Restore this backup?'; + String get backupRestoreConfirmTitle => '이 백업을 복원하시겠습니까?'; @override String get backupRestoreConfirmMessage => - 'This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.'; + '현재 설정, 다운로드 기록, 좋아요 표시한 트랙, 위시리스트 및 재생목록이 백업 파일의 내용으로 대체됩니다. 이 작업은 되돌릴 수 없습니다'; @override - String get backupRestoreConfirmButton => 'Restore'; + String get backupRestoreConfirmButton => '복원'; @override - String get backupRestoring => 'Restoring backup...'; + String get backupRestoring => '백업을 복원하는 중...'; @override - String get backupRestored => 'Backup restored successfully'; + String get backupRestored => '백업 복원 성공'; @override - String get backupRestoreFailed => 'Failed to restore backup'; + String get backupRestoreFailed => '백업 복원 실패'; @override - String get backupInvalidFile => 'This file is not a valid SpotiFLAC backup'; + String get backupInvalidFile => '이 파일은 유효한 SpotiFLAC 백업이 아닙니다'; @override - String get backupRestoreRestartHint => - 'Restart the app to make sure every change is applied.'; + String get backupRestoreRestartHint => '모든 변경 사항을 적용하려면 앱을 다시 시작하세요'; @override - String get backupContentsTitle => 'Backup contents'; + String get backupContentsTitle => '백업 콘텐츠'; @override - String get backupContentsSettings => 'App settings'; + String get backupContentsSettings => '앱 설정'; @override String backupContentsHistory(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'items', - one: 'item', + other: '항목', + one: '항목', ); - return '$count history $_temp0'; + return '$count 개의 기록 $_temp0'; } @override @@ -2988,10 +2920,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return '$count liked $_temp0'; + return '$count 개의 좋아요 표시한 $_temp0'; } @override @@ -2999,10 +2931,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return '$count wishlist $_temp0'; + return '$count 개의 위시리스트 $_temp0'; } @override @@ -3010,8 +2942,8 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count playlists', - one: '1 playlist', + other: '$count 개의 재생목록', + one: '1 개의 재생목록', ); return '$_temp0'; } @@ -3021,8 +2953,8 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count favorite artists', - one: '1 favorite artist', + other: '$count 명의 좋아하는 아티스트', + one: '1 명의 좋아하는 아티스트', ); return '$_temp0'; } @@ -3032,102 +2964,100 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count extensions', - one: '1 extension', + other: '$count 개의 확장 프로그램', + one: '1 개의 확장 프로그램', ); return '$_temp0'; } @override - String get backupIncludeSecrets => 'Include extension credentials'; + String get backupIncludeSecrets => '확장 프로그램 자격 증명 포함'; @override String get 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.'; + '확장 프로그램의 토큰과 API 키가 백업 파일에 함께 저장됩니다. 백업 파일은 안전하게 보관하세요. 비활성화하면 복원 후 다시 입력해야 합니다'; @override String backupExtensionsRestoreFailed(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'extensions', - one: 'extension', + other: '확장 프로그램', + one: '확장 프로그램', ); - return '$count $_temp0 could not be reinstalled. Install them manually from the store.'; + return '$count 개의 $_temp0을 다시 설치할 수 없습니다. 스토어에서 수동으로 설치하세요'; } @override - String get tooltipLoveAll => 'Love All'; + String get tooltipLoveAll => '모두 좋아요 표시'; @override - String get tooltipAddToPlaylist => 'Add to Playlist'; + String get tooltipAddToPlaylist => '재생목록에 추가'; @override String snackbarRemovedTracksFromLoved(int count) { - return 'Removed $count tracks from Loved'; + return '\'좋아요 표시한 트랙\'에서 $count 개의 트랙이 제거됨'; } @override String snackbarAddedTracksToLoved(int count) { - return 'Added $count tracks to Loved'; + return '\'좋아요 표시한 트랙\'에 $count 개의 트랙이 추가됨'; } @override - String get dialogDownloadAllTitle => 'Download All'; + String get dialogDownloadAllTitle => '모두 다운로드'; @override String dialogDownloadAllMessage(int count) { - return 'Download $count tracks?'; + return '$count 개의 트랙을 다운로드하시겠습니까?'; } @override - String get homeSkipAlreadyDownloaded => 'Skip already downloaded songs'; + String get homeSkipAlreadyDownloaded => '이미 다운로드한 노래 건너뛰기'; @override - String get homeGoToAlbum => 'Go to Album'; + String get homeGoToAlbum => '앨범으로 이동'; @override - String get homeAlbumInfoUnavailable => 'Album info not available'; + String get homeAlbumInfoUnavailable => '앨범 정보를 사용할 수 없음'; @override - String get snackbarLoadingCueSheet => 'Loading CUE sheet...'; + String get snackbarLoadingCueSheet => 'CUE 시트를 불러오는 중...'; @override - String get snackbarMetadataSaved => 'Metadata saved successfully'; + String get snackbarMetadataSaved => '메타데이터 저장 성공'; @override - String get snackbarFailedToEmbedLyrics => 'Failed to embed lyrics'; + String get snackbarFailedToEmbedLyrics => '가사 삽입 실패'; @override - String get snackbarFailedToWriteStorage => 'Failed to write back to storage'; + String get snackbarFailedToWriteStorage => '저장소 다시 쓰기 실패'; @override String snackbarError(String error) { - return 'Error: $error'; + return '오류: $error'; } @override - String get snackbarNoActionDefined => 'No action defined for this button'; + String get snackbarNoActionDefined => '이 버튼에 대해 정의된 작업이 없음'; @override - String get noTracksFoundForAlbum => 'No tracks found for this album'; + String get noTracksFoundForAlbum => '이 앨범에서 트랙을 찾을 수 없음'; @override - String get downloadLocationSubtitle => - 'Choose where to save your downloaded tracks'; + String get downloadLocationSubtitle => '다운로드한 트랙을 저장할 위치를 선택하세요'; @override - String get storageModeAppFolder => 'App Folder (Recommended)'; + String get storageModeAppFolder => '앱 폴더 (추천)'; @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; + String get storageModeAppFolderSubtitle => '기본적으로 Music/SpotiFLAC에 저장'; @override - String get storageModeSaf => 'Custom Folder (SAF)'; + String get storageModeSaf => '사용자 정의 폴더 (SAF)'; @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; + String get storageModeSafSubtitle => 'SD 카드를 포함한 아무 폴더나 선택하세요'; @override String get downloadFolderAccessLostTitle => 'Download folder access lost'; @@ -3157,184 +3087,166 @@ class AppLocalizationsKo extends AppLocalizations { Object track, Object year, ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; + return '\'\'$artist\'\', \'\'$title\'\', \'\'$album\'\', \'\'$track\'\', \'\'$year\'\', \'\'$date\'\', \'\'$disc\'\'를 자리표시자로 사용하세요'; } @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; + String get downloadFilenameInsertTag => '태그를 삽입하려면 탭하세요:'; @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; + String get downloadSeparateSinglesEnabled => '싱글과 EP를 별도의 폴더에 저장합니다'; @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; + String get downloadSeparateSinglesDisabled => '싱글과 앨범을 같은 폴더에 저장합니다'; @override - String get downloadArtistNameFilters => 'Artist Name Filters'; + String get downloadArtistNameFilters => '아티스트 이름 필터'; @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; + String get downloadCreatePlaylistSourceFolder => '재생목록 소스 폴더'; @override String get downloadCreatePlaylistSourceFolderEnabled => - 'A subfolder is created for each playlist'; + '각 재생 목록에 대한 하위 폴더를 만듭니다'; @override String get downloadCreatePlaylistSourceFolderDisabled => - 'All tracks saved directly to download folder'; + '모든 트랙을 다운로드 폴더에 직접 저장합니다'; @override - String get downloadCreatePlaylistSourceFolderRedundant => - 'Handled by folder organization setting'; + String get downloadCreatePlaylistSourceFolderRedundant => '폴더 구성 설정에 의해 처리됨'; @override - String get downloadSongLinkRegion => 'SongLink Region'; + String get downloadSongLinkRegion => 'SongLink 지역'; @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; + String get downloadNetworkCompatibilityMode => '네트워크 호환 모드'; @override String get downloadNetworkCompatibilityModeEnabled => - 'Using legacy TLS settings for older networks'; + '이전 네트워크에 대한 레거시 TLS 설정 사용'; @override - String get downloadNetworkCompatibilityModeDisabled => - 'Using standard network settings'; + String get downloadNetworkCompatibilityModeDisabled => '표준 ​​네트워크 설정 사용'; @override - String get downloadAllowLocalNetwork => 'Allow Local Network Access'; + String get downloadAllowLocalNetwork => '로컬 네트워크 접근 허용'; @override String get downloadAllowLocalNetworkEnabled => - 'Requests to local/private addresses are allowed (for local proxy or custom DNS)'; + '로컬/사설 주소에 대한 요청이 허용됨 (로컬 프록시 또는 사용자 지정 DNS용)'; @override - String get downloadAllowLocalNetworkDisabled => - 'Local/private addresses are blocked for security'; + String get downloadAllowLocalNetworkDisabled => '보안을 위해 로컬/사설 주소가 차단됨'; @override String get downloadSelectServiceToEnable => - 'Select a provider with quality options to enable this option'; + '이 옵션을 활성화하려면 음질 옵션이 있는 공급자를 선택하세요'; @override - String get downloadSelectTidalQobuz => - 'Select a provider with quality options to choose audio quality'; + String get downloadSelectTidalQobuz => '음질을 선택하려면 음질 옵션이 있는 제공자를 선택하세요'; @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; + String get downloadEmbedLyricsDisabled => '먼저 메타데이터 삽입을 활성화하세요'; @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; + String get downloadNeteaseIncludeTranslation => 'Netease: 번역 포함'; @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; + String get downloadNeteaseIncludeTranslationEnabled => '중국어 번역 포함'; @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; + String get downloadNeteaseIncludeTranslationDisabled => '원본 가사만'; @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; + String get downloadNeteaseIncludeRomanization => 'Netease: 로마자 표기 포함'; @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; + String get downloadNeteaseIncludeRomanizationEnabled => '로마자 표기 포함'; @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; + String get downloadNeteaseIncludeRomanizationDisabled => '로마자 표기 없음'; @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; + String get downloadAppleQqMultiPerson => 'Apple / QQ: 다인용 가사'; @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; + String get downloadAppleQqMultiPersonEnabled => '듀엣 및 그룹 트랙이 포함된 스피커 레이블'; @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; + String get downloadAppleQqMultiPersonDisabled => '스피커 레이블이 없는 표준 가사'; @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; + String get downloadAppleElrcWordSync => 'Apple Music eLRC 단어 동기화'; @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; + String get downloadAppleElrcWordSyncEnabled => '단어별 타임스탬프 원본 유지'; @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; + String get downloadAppleElrcWordSyncDisabled => '더 안전한 Apple Music 가사 (줄 단위)'; @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; + String get downloadMusixmatchLanguage => 'Musixmatch 언어'; @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; + String get downloadMusixmatchLanguageAuto => '자동 (원본 언어)'; @override - String get downloadFilterContributing => 'Filter Contributing Artists'; + String get downloadFilterContributing => '참여 아티스트 필터'; @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; + String get downloadFilterContributingEnabled => '앨범 아티스트 폴더 이름에서 제거된 참여 아티스트'; @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; + String get downloadFilterContributingDisabled => '전체 앨범 아티스트 문자열 사용'; @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; + String get downloadProvidersNoneEnabled => '활성화된 제공자가 없음'; @override - String get downloadMusixmatchLanguageCode => 'Language code'; + String get downloadMusixmatchLanguageCode => '언어 코드'; @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; + String get downloadMusixmatchLanguageHint => '예시: en, de, ja'; @override String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; + 'Musixmatch에서 번역된 가사를 요청하려면 BCP-47 언어 코드를 입력하세요 (예시: en, de, ja)'; @override - String get downloadMusixmatchAuto => 'Auto'; + String get downloadMusixmatchAuto => '자동'; @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; + String get downloadNetworkAnySubtitle => 'Wi-Fi 또는 모바일 네트워크 사용'; @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; + String get downloadNetworkWifiOnlySubtitle => '모바일 네트워크 사용 시 다운로드 일시 중지'; @override String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; + 'SongLink를 통해 트랙 링크를 해결할 경우에 사용되는 지역입니다. 스트리밍 서비스를 이용할 수 있는 국가를 선택하세요'; @override - String get snackbarUnsupportedAudioFormat => 'Unsupported audio format'; + String get snackbarUnsupportedAudioFormat => '지원되지 않는 오디오 형식'; @override - String get cacheRefresh => 'Refresh'; + String get cacheRefresh => '새로고침'; @override String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount) { String _temp0 = intl.Intl.pluralLogic( - trackCount, - locale: localeName, - other: 'tracks', - one: 'track', - ); - String _temp1 = intl.Intl.pluralLogic( playlistCount, locale: localeName, - other: 'playlists', - one: 'playlist', + other: '재생록록', + one: '재생목록', ); - return 'Download $trackCount $_temp0 from $playlistCount $_temp1?'; + String _temp1 = intl.Intl.pluralLogic( + trackCount, + locale: localeName, + other: '트랙', + one: '트랙', + ); + return '$playlistCount 개의 $_temp0에서 $trackCount 개의 $_temp1을 다운로드하시겠습니까?'; } @override @@ -3342,122 +3254,118 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'playlists', - one: 'playlist', + other: '재생목록', + one: '재생목록', ); - return 'Download $count $_temp0'; + return '$count 개의 $_temp0 다운로드'; } @override - String get bulkDownloadSelectPlaylists => 'Select playlists to download'; + String get bulkDownloadSelectPlaylists => '다운로드할 재생목록 선택'; @override - String get snackbarSelectedPlaylistsEmpty => - 'Selected playlists have no tracks'; + String get snackbarSelectedPlaylistsEmpty => '선택한 재생목록에 트랙이 없습니다'; @override String playlistsCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count playlists', - one: '1 playlist', + other: '$count 개의 재생목록', + one: '1 개의 재생목록', ); return '$_temp0'; } @override - String get editMetadataAutoFill => 'Auto-fill from online'; + String get editMetadataAutoFill => '온라인에서 자동 채우기'; @override - String get editMetadataAutoFillDesc => - 'Select fields to fill automatically from online metadata'; + String get editMetadataAutoFillDesc => '온라인 메타데이터에서 자동으로 채워질 필드를 선택하세요'; @override - String get editMetadataAutoFillFetch => 'Fetch & Fill'; + String get editMetadataAutoFillFetch => '가져오기 & 채우기'; @override - String get editMetadataAutoFillSearching => 'Searching online...'; + String get editMetadataAutoFillSearching => '온라인에서 검색하는 중...'; @override - String get editMetadataAutoFillNoResults => - 'No matching metadata found online'; + String get editMetadataAutoFillNoResults => '온라인에서 일치하는 메타데이터를 찾을 수 없음'; @override String editMetadataAutoFillDone(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'fields', - one: 'field', + other: '필드', + one: '필드', ); - return 'Filled $count $_temp0 from online metadata'; + return '온라인 메타데이터로부터 $count 개의 $_temp0가 채워짐'; } @override - String get editMetadataAutoFillNoneSelected => - 'Select at least one field to auto-fill'; + String get editMetadataAutoFillNoneSelected => '자동 채우기를 위해 하나 이상의 필드를 선택하세요'; @override - String get editMetadataFieldTitle => 'Title'; + String get editMetadataFieldTitle => '제목'; @override - String get editMetadataFieldArtist => 'Artist'; + String get editMetadataFieldArtist => '아티스트'; @override - String get editMetadataFieldAlbum => 'Album'; + String get editMetadataFieldAlbum => '앨범'; @override - String get editMetadataFieldAlbumArtist => 'Album Artist'; + String get editMetadataFieldAlbumArtist => '앨범 아티스트'; @override - String get editMetadataFieldDate => 'Date'; + String get editMetadataFieldDate => '날짜'; @override - String get editMetadataFieldTrackNum => 'Track #'; + String get editMetadataFieldTrackNum => '트랙 #'; @override - String get editMetadataFieldDiscNum => 'Disc #'; + String get editMetadataFieldDiscNum => '디스크 #'; @override - String get editMetadataFieldGenre => 'Genre'; + String get editMetadataFieldGenre => '장르'; @override String get editMetadataFieldIsrc => 'ISRC'; @override - String get editMetadataFieldLabel => 'Label'; + String get editMetadataFieldLabel => '레이블'; @override - String get editMetadataFieldCopyright => 'Copyright'; + String get editMetadataFieldCopyright => '저작권'; @override - String get editMetadataFieldCover => 'Cover Art'; + String get editMetadataFieldCover => '표지 이미지'; @override - String get editMetadataSelectAll => 'All'; + String get editMetadataSelectAll => '모두'; @override - String get editMetadataSelectEmpty => 'Empty only'; + String get editMetadataSelectEmpty => '비어 있음만'; @override String queueDownloadingCount(int count) { - return 'Downloading ($count)'; + return '다운로드하는 중 ($count)'; } @override - String get queueDownloadedHeader => 'Downloaded'; + String get queueDownloadedHeader => '다운로드됨'; @override - String get queueFilteringIndicator => 'Filtering...'; + String get queueFilteringIndicator => '필터링하는 중...'; @override String queueTrackCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tracks', - one: '1 track', + other: '$count 개의 트랙', + one: '1 개의 트랙', ); return '$_temp0'; } @@ -3467,83 +3375,80 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count albums', - one: '1 album', + other: '$count 개의 앨범', + one: '1 개의 앨범', ); return '$_temp0'; } @override - String get queueEmptyAlbums => 'No album downloads'; + String get queueEmptyAlbums => '앨범 다운로드가 없음'; @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; + String get queueEmptyAlbumsSubtitle => '앨범에서 여러 트랙을 다운로드하면 여기에 표시됩니다'; @override - String get queueEmptySingles => 'No single downloads'; + String get queueEmptySingles => '싱글 다운로드가 없음'; @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; + String get queueEmptySinglesSubtitle => '싱글 트랙 다운로드는 여기에 표시됩니다'; @override - String get queueEmptyHistory => 'No download history'; + String get queueEmptyHistory => '다운로드 기록이 없음'; @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; + String get queueEmptyHistorySubtitle => '다운로드한 트랙이 여기에 표시됩니다'; @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; + String get selectionAllPlaylistsSelected => '모든 재생목록이 선택됨'; @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; + String get selectionTapPlaylistsToSelect => '선택할 재생목록을 탭하세요'; @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; + String get selectionSelectPlaylistsToDelete => '삭제할 재생 목록 선택'; @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; + String get audioAnalysisTitle => '오디오 음질 분석'; @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; + String get audioAnalysisDescription => '스펙트럼 분석으로 무손실 음질을 확인합니다'; @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; + String get audioAnalysisAnalyzing => '오디오를 분석하는 중...'; @override - String get audioAnalysisSampleRate => 'Sample Rate'; + String get audioAnalysisSampleRate => '샘플링 레이트'; @override - String get audioAnalysisCodec => 'Codec'; + String get audioAnalysisCodec => '코덱'; @override - String get audioAnalysisContainer => 'Container'; + String get audioAnalysisContainer => '컨테이너'; @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; + String get audioAnalysisDecodedFormat => '디코딩 형식'; @override - String get audioAnalysisBitDepth => 'Bit Depth'; + String get audioAnalysisBitDepth => '비트 심도'; @override - String get audioAnalysisChannels => 'Channels'; + String get audioAnalysisChannels => '채널'; @override - String get audioAnalysisDuration => 'Duration'; + String get audioAnalysisDuration => '재생시간'; @override - String get audioAnalysisNyquist => 'Nyquist'; + String get audioAnalysisNyquist => '나이퀴스트'; @override - String get audioAnalysisFileSize => 'Size'; + String get audioAnalysisFileSize => '크기'; @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; + String get audioAnalysisDynamicRange => '다이나믹 레인지'; @override - String get audioAnalysisPeak => 'Peak'; + String get audioAnalysisPeak => '최대 피크'; @override String get audioAnalysisRms => 'RMS'; @@ -3552,145 +3457,142 @@ class AppLocalizationsKo extends AppLocalizations { String get audioAnalysisLufs => 'LUFS'; @override - String get audioAnalysisTruePeak => 'True Peak'; + String get audioAnalysisTruePeak => '트루 피크'; @override - String get audioAnalysisClipping => 'Clipping'; + String get audioAnalysisClipping => '클리핑'; @override - String get audioAnalysisNoClipping => 'No clipping'; + String get audioAnalysisNoClipping => '클리핑 없음'; @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; + String get audioAnalysisSpectralCutoff => '주파수 컷오프'; @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; + String get audioAnalysisChannelStats => '채널별 통계'; @override - String get audioAnalysisSamples => 'Samples'; + String get audioAnalysisSamples => '샘플'; @override - String get audioAnalysisRescan => 'Re-analyze'; + String get audioAnalysisRescan => '다시 분석'; @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; + String get audioAnalysisRescanning => '오디오를 다시 분석하는 중...'; @override String extensionsSearchWith(String providerName) { - return 'Search with $providerName'; + return '$providerName으로 검색'; } @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; + String get extensionsHomeFeedProvider => '홈 피드 제공자'; @override String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; + '메인 화면에 홈 피드를 제공하는 확장 프로그램을 선택하세요'; @override - String get extensionsHomeFeedAuto => 'Auto'; + String get extensionsHomeFeedAuto => '자동'; @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; + String get extensionsHomeFeedAutoSubtitle => '사용 가능한 최적의 항목을 자동으로 선택합니다'; @override - String get extensionsHomeFeedOff => 'Off'; + String get extensionsHomeFeedOff => '끄기'; @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; + String get extensionsHomeFeedOffSubtitle => '메인 화면에 홈 피드를 표시하지 않습니다'; @override String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; + return '$extensionName 홈 피드 사용'; } @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; + String get extensionsNoHomeFeedExtensions => '홈 피드가 있는 확장 프로그램가 없음'; @override - String get sortAlphaAsc => 'A-Z'; + String get sortAlphaAsc => '오름차순'; @override - String get sortAlphaDesc => 'Z-A'; + String get sortAlphaDesc => '내림차순'; @override - String get cancelDownloadTitle => 'Cancel download?'; + String get cancelDownloadTitle => '다운로드를 취소하시겠습니까?'; @override String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; + return '\'\'$trackName\'\'에 대한 활성 다운로드를 취소합니다'; } @override - String get cancelDownloadKeep => 'Keep'; + String get cancelDownloadKeep => '유지'; @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; + String get metadataSaveFailedFfmpeg => 'FFmpeg를 통해 메타데이터 저장 실패'; @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; + String get metadataSaveFailedStorage => '저장소에 메타데이터 다시 쓰기 실패'; @override String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; + return '폴더 선택기 열기 실패: $error'; } @override - String get errorLoadAlbum => 'Failed to load album'; + String get errorLoadAlbum => '앨범 불러오기 실패'; @override - String get errorLoadPlaylist => 'Failed to load playlist'; + String get errorLoadPlaylist => '재생목록 불러오기 실패'; @override - String get errorLoadArtist => 'Failed to load artist'; + String get errorLoadArtist => '아티스트 불러오기 실패'; @override - String get notifChannelDownloadName => 'Download Progress'; + String get notifChannelDownloadName => '다운로드 진행률'; @override - String get notifChannelDownloadDesc => 'Shows download progress for tracks'; + String get notifChannelDownloadDesc => '트랙 다운로드 진행률 표시'; @override - String get notifChannelLibraryScanName => 'Library Scan'; + String get notifChannelLibraryScanName => '라이브러리 스캔'; @override - String get notifChannelLibraryScanDesc => 'Shows local library scan progress'; + String get notifChannelLibraryScanDesc => '로컬 라이브러리 스캔 진행률을 표시합니다'; @override String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; + return '\'\'$trackName\'\'를 다운로드하는 중'; } @override String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; + return '\'\'$trackName\'\'를 마무리하는 중'; } @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; + String get notifEmbeddingMetadata => '메타데이터를 삽입하는 중...'; @override String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; + return '이미 라이브러리에 있음 ($completed/$total)'; } @override - String get notifAlreadyInLibrary => 'Already in Library'; + String get notifAlreadyInLibrary => '이미 라이브러리에 있음'; @override String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; + return '다운로드 완료 ($completed/$total)'; } @override - String get notifDownloadComplete => 'Download Complete'; + String get notifDownloadComplete => '다운로드 완료'; @override String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; + return '다운로드 완료 ($completed 개 완료, $failed 개 실패)'; } @override @@ -3701,15 +3603,15 @@ class AppLocalizationsKo extends AppLocalizations { 'Open the app to complete verification and resume downloads'; @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; + String get notifAllDownloadsComplete => '모든 다운로드 완료'; @override String notifTracksDownloadedSuccess(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count tracks downloaded successfully', - one: '1 track downloaded successfully', + other: '$count 개의 트랙 다운로드 성공', + one: '1 개의 트랙 다운로드 성공', ); return '$_temp0'; } @@ -3719,34 +3621,34 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( completed, locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', + other: '$completed 개의 트랙 다운로드 성공', + one: '1 개의 트랙 다운로드 성공', ); String _temp1 = intl.Intl.pluralLogic( failed, locale: localeName, - other: '$failed failed', - one: '1 failed', + other: '$failed 개 실패', + one: '1 개 실패', ); return '$_temp0, $_temp1'; } @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; + String get notifDownloadsCanceledTitle => '다운로드 취소됨'; @override String notifDownloadsCanceledBody(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count downloads canceled by user', - one: '1 download canceled by user', + other: '$count 개의 다운로드가 사용자에 의해 취소됨', + one: '1 개의 다운로드가 사용자에 의해 취소됨', ); return '$_temp0'; } @override - String get notifScanningLibrary => 'Scanning local library'; + String get notifScanningLibrary => '로컬 라이브러리를 스캔하는 중'; @override String notifLibraryScanProgressWithTotal( @@ -3754,44 +3656,44 @@ class AppLocalizationsKo extends AppLocalizations { int total, int percentage, ) { - return '$scanned/$total files • $percentage%'; + return '$scanned/$total 개의 파일 • $percentage%'; } @override String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; + return '$scanned 게의 파일이 스캔됨 • $percentage%'; } @override - String get notifLibraryScanComplete => 'Library scan complete'; + String get notifLibraryScanComplete => '라이브러리 스캔 완료'; @override String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; + return '$count 개의 트랙이 색인됨'; } @override String notifLibraryScanExcluded(int count) { - return '$count excluded'; + return '$count 개가 제외됨'; } @override String notifLibraryScanErrors(int count) { - return '$count errors'; + return '$count 개의 오류'; } @override - String get notifLibraryScanFailed => 'Library scan failed'; + String get notifLibraryScanFailed => '라이브러리 스캔 실패'; @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; + String get notifLibraryScanCancelled => '라이브러리 스캔이 취소됨'; @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; + String get notifLibraryScanStopped => '스캔이 완료되기 전에 중단되었습니다'; @override String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; + return 'SpotiFLAC Mobile v$version을 다운로드하는 중'; } @override @@ -3800,72 +3702,69 @@ class AppLocalizationsKo extends AppLocalizations { } @override - String get notifUpdateReady => 'Update Ready'; + String get notifUpdateReady => '업데이트 준비 완료'; @override String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; + return 'SpotiFLAC Mobile v$version 다운로드 완료. 설치하려면 탭하세요'; } @override - String get notifUpdateFailed => 'Update Failed'; + String get notifUpdateFailed => '업데이트 실패'; @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; + String get notifUpdateFailedBody => '업데이트를 다운로드할 수 없습니다. 나중에 다시 시도하세요'; @override - String get searchTracks => 'Tracks'; + String get searchTracks => '트랙'; @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; + String get homeSearchHintDefault => '지원되는 URL을 붙여넣거나 검색...'; @override String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; + return '$providerName으로 검색...'; } @override - String get homeImportCsvTooltip => 'Import CSV'; + String get homeImportCsvTooltip => 'CSV 가져오기'; @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; + String get homeChangeSearchProviderTooltip => '검색 제공자 변경'; @override - String get actionPaste => 'Paste'; + String get actionPaste => '붙여넣기'; @override - String get searchTracksHint => 'Search tracks...'; + String get searchTracksHint => '트랙 검색...'; @override - String get searchTracksEmptyPrompt => 'Search for tracks'; + String get searchTracksEmptyPrompt => '트랙 검색'; @override - String get tutorialSearchHint => 'Paste or search...'; + String get tutorialSearchHint => '붙여넣기 또는 검색...'; @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; + String get tutorialDownloadCompletedSemantics => '다운로드 완료'; @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; + String get tutorialDownloadInProgressSemantics => '다운로드를 진행하는 중'; @override - String get tutorialStartDownloadSemantics => 'Start download'; + String get tutorialStartDownloadSemantics => '다운로드 시작'; @override - String get optionsEmbedMetadata => 'Embed Metadata'; + String get optionsEmbedMetadata => '메타데이터 삽입'; @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; + String get optionsEmbedMetadataSubtitleOn => '메타데이터, 표지 이미지 및 내장 가사를 파일에 기록'; @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; + String get optionsEmbedMetadataSubtitleOff => '비활성화됨 (고급): 모든 메타데이터 삽입 건너뛰기'; @override String get optionsMaxQualityCoverSubtitleDisabled => - 'Disabled when metadata embedding is off'; + '메타데이터 삽입이 꺼져 있을 때 비활성화됨'; @override String downloadFilenameHintExample(Object artist, Object title) { @@ -3873,136 +3772,130 @@ class AppLocalizationsKo extends AppLocalizations { } @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; + String get trackCoverNoEmbeddedArt => '내장된 표지 이미지가 없음'; @override - String get trackCoverReplace => 'Replace Cover'; + String get trackCoverReplace => '표지 교체'; @override - String get trackCoverPick => 'Pick Cover'; + String get trackCoverPick => '표지 선택'; @override - String get trackCoverClearSelected => 'Clear selected cover'; + String get trackCoverClearSelected => '선택된 표지 지우기'; @override - String get trackCoverCurrent => 'Current cover'; + String get trackCoverCurrent => '현재 표지'; @override - String get trackCoverSelected => 'Selected cover'; + String get trackCoverSelected => '선택된 표지'; @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; + String get trackCoverReplaceNotice => '저장을 탭하면 선택한 표지가 현재 내장된 표지를 대체합니다'; @override - String get actionStop => 'Stop'; + String get actionStop => '중지'; @override - String get queueFinalizingDownload => 'Finalizing download'; + String get queueFinalizingDownload => '다운로드를 마무리하는 중'; @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; + String get queueDownloadedFileMissing => '다운로드한 파일이 없음'; @override - String get queueDownloadCompleted => 'Download completed'; + String get queueDownloadCompleted => '다운로드 완료'; @override - String get queueRateLimitTitle => 'Service rate limited'; + String get queueRateLimitTitle => '서비스 사용 제한됨'; @override String get queueRateLimitMessage => - 'This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.'; + '이 트랙은 아직 사용 가능할 수 있습니다. 몇 분 기다렸다가 병렬 다운로드를 줄인 후에 다시 시도하세요'; @override String appearanceSelectAccentColor(String hex) { - return 'Select accent color $hex'; + return '강조 색상 $hex 선택'; } @override - String get logAutoScrollOn => 'Auto-scroll ON'; + String get logAutoScrollOn => '자동 스크롤: ON'; @override - String get logAutoScrollOff => 'Auto-scroll OFF'; + String get logAutoScrollOff => '자동 스크롤: OFF'; @override - String get logCopyLogs => 'Copy logs'; + String get logCopyLogs => '로그 복사'; @override - String get logClearSearch => 'Clear search'; + String get logClearSearch => '로그 지우기'; @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; + String get logIssueIspBlockingLabel => 'ISP 차단 감지됨'; @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; + String get logIssueIspBlockingDescription => 'ISP에서 다운로드 서비스 접속을 차단했을 수 있습니다'; @override String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; + 'VPN을 사용하거나 DNS를 1.1.1.1 또는 8.8.8.8로 변경해 보세요'; @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; + String get logIssueRateLimitedLabel => '사용 제한'; @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; + String get logIssueRateLimitedDescription => '서비스에 대한 요청이 너무 많습니다'; @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; + String get logIssueRateLimitedSuggestion => '몇 분 기다린 후에 다시 시도하세요'; @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; + String get logIssueNetworkErrorLabel => '네트워크 오류'; @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; + String get logIssueNetworkErrorDescription => '연결 문제가 감지됨'; @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; + String get logIssueNetworkErrorSuggestion => '인터넷 연결 상태를 확인하세요'; @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; + String get logIssueTrackNotFoundLabel => '트랙을 찾을 수 없음'; @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; + String get logIssueTrackNotFoundDescription => '일부 트랙은 다운로드 서비스에서 찾을 수 없습니다'; @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; + String get logIssueTrackNotFoundSuggestion => '트랙이 무손실 음질로 제공되지 않을 수 있습니다'; @override - String get clickableLookingUpArtist => 'Looking up artist...'; + String get clickableLookingUpArtist => '아티스트를 검색하는 중...'; @override String clickableInformationUnavailable(String type) { - return '$type information not available'; + return '$type 정보를 사용할 수 없음'; } @override - String get extensionDetailsTags => 'Tags'; + String get extensionDetailsTags => '태그'; @override - String get extensionDetailsInformation => 'Information'; + String get extensionDetailsInformation => '정보'; @override - String get extensionUtilityFunctions => 'Utility Functions'; + String get extensionUtilityFunctions => '유틸리티 함수'; @override - String get actionDismiss => 'Dismiss'; + String get actionDismiss => '닫기'; @override - String get setupChangeFolderTooltip => 'Change folder'; + String get setupChangeFolderTooltip => '폴더 변경'; @override String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; + return '\'\'$artistName\'\'의 트랙 \'\'$trackName\'\' 열기'; } @override String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; + return '$itemType $name 열기'; } @override @@ -4010,10 +3903,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'items', - one: 'item', + other: '항목', + one: '항목', ); - return 'Open $title, $count $_temp0'; + return '$title, $count 개의 $_temp0 열기'; } @override @@ -4022,134 +3915,127 @@ class AppLocalizationsKo extends AppLocalizations { String artistName, int trackCount, ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; + return '\'\'$artistName\'\'의 앨범 \'\'$albumName\'\' 열기 ($trackCount 번째 곡)'; } @override String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; + return '\'\'$artistName\'\'의 \'\'$trackName\'\''; } @override String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; + return '앨범 \'\'$albumName\'\' 선택'; } @override String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; + return '앨범 \'\'$albumName\'\' 열기'; } @override - String get optionsDefaultSearchTabAlbums => 'Albums'; + String get optionsDefaultSearchTabAlbums => '앨범'; @override - String get optionsDefaultSearchTabTracks => 'Tracks'; + String get optionsDefaultSearchTabTracks => '트랙'; @override - String get settingsFiles => 'Files & Folders'; + String get settingsFiles => '파일 & 폴더'; @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; + String get settingsFilesSubtitle => '다운로드 위치, 파일 이름, 폴더 구조'; @override - String get settingsMetadata => 'Metadata'; + String get settingsMetadata => '메타데이터'; @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; + String get settingsMetadataSubtitle => '표지 이미지, 태그, 리플레이게인, 제공자'; @override - String get settingsLyrics => 'Lyrics'; + String get settingsLyrics => '가사'; @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; + String get settingsLyricsSubtitle => '삽입, 모드, 제공자, 언어 옵션'; @override - String get settingsApp => 'App'; + String get settingsApp => '앱'; @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; + String get settingsAppSubtitle => '업데이트, 데이터, 확장프로그램 리포, 디버그'; @override - String get sectionMetadataProviders => 'Providers'; + String get sectionMetadataProviders => '제공자'; @override - String get sectionDuplicates => 'Duplicates'; + String get sectionDuplicates => '중복'; @override - String get sectionLyricsProviderOptions => 'Provider Options'; + String get sectionLyricsProviderOptions => '제공자 옵션'; @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; + String get metadataProvidersTitle => '메타데이터 제공자 우선순위'; @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; + String get metadataProvidersSubtitle => '드래그하여 검색 및 메타데이터 출처 순서를 설정하세요'; @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; + String get downloadDeduplication => '중복 다운로드 건너뛰기'; @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; + String get downloadDeduplicationEnabled => '이미 다운로드된 트랙은 건너뜁니다'; @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; + String get downloadDeduplicationDisabled => '기록과 관계없이 모든 트랙이 다운로드됩니다'; @override - String get downloadFallbackExtensions => 'Fallback Extensions'; + String get downloadFallbackExtensions => '대체 확장 프로그램'; @override String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; + '대체 확장 프로그램으로 사용할 확장 프로그램을 선택하세요'; @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; + String get editMetadataFieldDateHint => 'YYYY-MM-DD 또는 YYYY'; @override - String get editMetadataFieldTrackTotal => 'Track Total'; + String get editMetadataFieldTrackTotal => '전체 트랙 수'; @override - String get editMetadataFieldDiscTotal => 'Disc Total'; + String get editMetadataFieldDiscTotal => '전체 디스크 수'; @override - String get editMetadataFieldComposer => 'Composer'; + String get editMetadataFieldComposer => '작곡가'; @override - String get editMetadataFieldComment => 'Comment'; + String get editMetadataFieldComment => '주석'; @override - String get editMetadataAdvanced => 'Advanced'; + String get editMetadataAdvanced => '고급'; @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; + String get libraryFilterMetadataMissingTrackNumber => '트랙 번호 누락'; @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; + String get libraryFilterMetadataMissingDiscNumber => '디스크 번호 누락'; @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; + String get libraryFilterMetadataMissingArtist => '아티스트 누락'; @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; + String get libraryFilterMetadataIncorrectIsrcFormat => '잘못된 ISRC 형식'; @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; + String get libraryFilterMetadataMissingLabel => '레이블 누락'; @override String collectionDeletePlaylistsMessage(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'playlists', - one: 'playlist', + other: '재생목록', + one: '재생목록', ); - return 'Delete $count $_temp0?'; + return '$count 개의 $_temp0을 삭제하시겠습니까?'; } @override @@ -4157,10 +4043,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'playlists', - one: 'playlist', + other: '재생목록', + one: '재생목록', ); - return '$count $_temp0 deleted'; + return '$count 개의 $_temp0이 삭제됨'; } @override @@ -4168,10 +4054,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Added $count $_temp0 to $playlistName'; + return '\'\'$playlistName\'\'에 $count 개의 $_temp0이 추가됨'; } @override @@ -4183,10 +4069,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; + return '\'\'$playlistName\'\'에 $count 개의 $_temp0이 추가됨 ($alreadyCount 개의 트랙은 이미 재생목록에 있음)'; } @override @@ -4194,10 +4080,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'items', - one: 'item', + other: '항목', + one: '항목', ); - return '$count $_temp0'; + return '$count 개의 $_temp0'; } @override @@ -4206,7 +4092,7 @@ class AppLocalizationsKo extends AppLocalizations { int total, int failedCount, ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; + return '메타데이터 재구성 성공 ($successCount/$total) - 실패: $failedCount'; } @override @@ -4214,29 +4100,29 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Delete $count $_temp0'; + return '$count $_temp0 삭제'; } @override String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; + return '다운로드하는 중 - $speed MB/s'; } @override - String get queueDownloadStarting => 'Starting...'; + String get queueDownloadStarting => '시작하는 중...'; @override - String get a11ySelectTrack => 'Select track'; + String get a11ySelectTrack => '트랙 선택'; @override - String get a11yDeselectTrack => 'Deselect track'; + String get a11yDeselectTrack => '트랙 선택 해제'; @override String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; + return '\'\'$artistName\'\'의 \'\'$trackName\'\' 재생'; } @override @@ -4244,322 +4130,316 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'extensions', - one: 'extension', + other: '확장 프로그램', + one: '확장 프로그램', ); - return '$count $_temp0'; + return '$count 개의 $_temp0'; } @override String storeRequiresVersion(String version) { - return 'Requires v$version+'; + return 'v$version 이상 필요'; } @override - String get actionGo => 'Go'; + String get actionGo => '이동'; @override - String get logIssueSummary => 'Issue Summary'; + String get logIssueSummary => '문제 요약'; @override String logTotalErrors(int count) { - return 'Total errors: $count'; + return '총 오류 수: $count'; } @override String logAffectedDomains(String domains) { - return 'Affected: $domains'; + return '영향받은 도메인: $domains'; } @override - String get libraryScanCancelled => 'Scan cancelled'; + String get libraryScanCancelled => '스캔이 취소됨'; @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; + String get libraryScanCancelledSubtitle => '준비가 되면 스캔을 다시 시도할 수 있습니다'; @override String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; + return '다운로드 기록에서 $count 개 (목록에서 제외됨)'; } @override - String get downloadNativeWorker => 'Native download worker'; + String get downloadNativeWorker => '기본 다운로드 워커'; @override - String get downloadNativeWorkerSubtitle => - 'Beta Android service worker for extension downloads'; + String get downloadNativeWorkerSubtitle => '확장 프로그램용 베타 Android 서비스 워커'; @override - String get badgeBeta => 'BETA'; + String get badgeBeta => '베타'; @override - String get extensionServiceStatus => 'Service Status'; + String get extensionServiceStatus => '서비스 상태'; @override - String get extensionServiceHealth => 'Service health'; + String get extensionServiceHealth => '서비스 상태'; @override String extensionHealthChecksConfigured(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'checks', - one: 'check', + other: '검사', + one: '검사', ); - return '$count $_temp0 configured'; + return '$count 개의 $_temp0가 설정됨'; } @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; + String get extensionOauthConnectHint => 'Spotify에 연결을 탭하여 이 필드를 채우세요'; @override String extensionLastChecked(String time) { - return 'Last checked $time'; + return '마지막 확인 시간: $time'; } @override - String get extensionRefreshStatus => 'Refresh status'; + String get extensionRefreshStatus => '상태 새로고침'; @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; + String get extensionCustomUrlHandling => '사용자 정의 URL 처리'; @override String get extensionCustomUrlHandlingSubtitle => - 'This extension can handle links from these sites'; + '이 확장 프로그램은 다음 사이트의 링크를 처리할 수 있습니다'; @override String get extensionCustomUrlHandlingShareHint => - 'Share links from these sites to SpotiFLAC Mobile and this extension will handle them.'; + '이 사이트의 링크를 SpotiFLAC Mobile로 공유하면 이 확장 프로그램이 처리합니다'; @override String extensionSettingsCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'settings', - one: 'setting', + other: '설정', + one: '설정', ); - return '$count $_temp0'; + return '$count 개의 $_temp0'; } @override - String get extensionHealthOnline => 'Online'; + String get extensionHealthOnline => '온라인'; @override - String get extensionHealthDegraded => 'Degraded'; + String get extensionHealthDegraded => '저하됨'; @override - String get extensionHealthOffline => 'Offline'; + String get extensionHealthOffline => '오프라인'; @override - String get extensionHealthNotConfigured => 'Not configured'; + String get extensionHealthNotConfigured => '설정되지 않음'; @override - String get extensionHealthUnknown => 'Unknown'; + String get extensionHealthUnknown => '알 수 없음'; @override - String get extensionHealthRequired => 'required'; + String get extensionHealthRequired => '필수'; @override - String get extensionSettingNotSet => 'Not set'; + String get extensionSettingNotSet => '설정되지 않음'; @override - String get extensionActionFailed => 'Action failed'; + String get extensionActionFailed => '작업 실패'; @override - String get extensionEnterValue => 'Enter value'; + String get extensionEnterValue => '값을 입력하세요'; @override - String get extensionHealthServiceOnline => 'Service online'; + String get extensionHealthServiceOnline => '서비스 온라인'; @override - String get extensionHealthServiceDegraded => 'Service degraded'; + String get extensionHealthServiceDegraded => '서비스 저하됨'; @override - String get extensionHealthServiceOffline => 'Service offline'; + String get extensionHealthServiceOffline => '서비스 오프라인'; @override - String get extensionHealthServiceUnknown => 'Service status unknown'; + String get extensionHealthServiceUnknown => '서비스 상태 알 수 없음'; @override - String get audioAnalysisStereo => 'Stereo'; + String get audioAnalysisStereo => '스테레오'; @override - String get audioAnalysisMono => 'Mono'; + String get audioAnalysisMono => '모노'; @override String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; + return '$serviceName에서 열기'; } @override - String get trackLyricsEmbeddedSource => 'Embedded'; + String get trackLyricsEmbeddedSource => '내장'; @override - String get unknownAlbum => 'Unknown Album'; + String get unknownAlbum => '알 수 없는 앨범'; @override - String get unknownArtist => 'Unknown Artist'; + String get unknownArtist => '알 수 없는 아티스트'; @override - String get permissionAudio => 'Audio'; + String get permissionAudio => '오디오'; @override - String get permissionStorage => 'Storage'; + String get permissionStorage => '저장소'; @override - String get permissionNotification => 'Notification'; + String get permissionNotification => '알림'; @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; + String get errorInvalidFolderSelected => '잘못된 폴더가 선택됨'; @override - String get errorCouldNotKeepFolderAccess => - 'Could not keep access to the selected folder'; + String get errorCouldNotKeepFolderAccess => '선택한 폴더에 대한 접근 권한을 유지할 수 없습니다'; @override - String get storeAnyVersion => 'Any'; + String get storeAnyVersion => '모든'; @override - String get storeCategoryMetadata => 'Metadata'; + String get storeCategoryMetadata => '메타데이터'; @override - String get storeCategoryDownload => 'Download'; + String get storeCategoryDownload => '다운로드'; @override - String get storeCategoryUtility => 'Utility'; + String get storeCategoryUtility => '유틸리티'; @override - String get storeCategoryLyrics => 'Lyrics'; + String get storeCategoryLyrics => '가사'; @override - String get storeCategoryIntegration => 'Integration'; + String get storeCategoryIntegration => '연동'; @override - String get artistReleases => 'Releases'; + String get artistReleases => '릴리스'; @override - String get editMetadataSelectNone => 'None'; + String get editMetadataSelectNone => '없음'; @override String queueRetryAllFailed(int count) { - return 'Retry $count failed'; + return '재시도 $count 번 실패'; } @override - String get settingsSaveDownloadHistory => 'Save download history'; + String get settingsSaveDownloadHistory => '다운로드 기록 저장'; @override String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; + '완료된 다운로드를 기록 및 라이브러리 보기에 유지합니다'; @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; + String get dialogDisableHistoryTitle => '다운로드 기록을 끄시겠습니까?'; @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; + String get dialogDisableHistoryMessage => '기존 기록이 삭제됩니다. 다운로드한 파일은 삭제되지 않습니다'; @override - String get dialogDisableAndClear => 'Turn off and clear'; + String get dialogDisableAndClear => '끄고 지우기'; @override - String get openInOtherServices => 'Open in Other Services'; + String get openInOtherServices => '다른 서비스에서 열기'; @override - String get shareSheetNoExtensions => 'No other compatible services'; + String get shareSheetNoExtensions => '호환되는 다른 서비스가 없음'; @override - String get shareSheetNotFound => 'Not found'; + String get shareSheetNotFound => '찾을 수 없음'; @override - String get shareSheetCopyLink => 'Copy Link'; + String get shareSheetCopyLink => '링크 복사'; @override String shareSheetLinkCopied(Object service) { - return '$service link copied'; + return '$service 링크가 복사됨'; } @override - String get libraryPlayback => 'Playback'; + String get libraryPlayback => '재생'; @override - String get libraryExternalPlayer => 'External player'; + String get libraryExternalPlayer => '외부 플레이어'; @override String get libraryExternalPlayerSubtitle => - 'Recommended for listening, best quality, gapless playback, EQ, and wider format support'; + '감상용으로 권장됩니다. 최고 음질, 갭리스 재생, EQ 및 다양한 오디오 형식을 지원합니다'; @override - String get libraryBuiltInPreviewPlayer => 'Built-in preview player'; + String get libraryBuiltInPreviewPlayer => '내장 미리듣기 플레이어'; @override String get libraryBuiltInPreviewPlayerSubtitle => - 'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'; + 'SpotiFLAC Mobile에서 빠른 로컬 미리듣기 전용이며, 일반적인 음악 감상에는 권장되지 않습니다'; @override String get libraryBuiltInPlayerInfo => - 'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'; + '내장 플레이어는 로컬 트랙을 빠르게 미리듣기 위한 도구입니다. 실제 음악 감상은 외부 음악 플레이어를 이용하는 것을 권장합니다'; @override - String get nowPlayingTitle => 'Now Playing'; + String get nowPlayingTitle => '현재 재생 중'; @override - String get nowPlayingNothingPlaying => 'Nothing is playing'; + String get nowPlayingNothingPlaying => '재생 중인 노래가 없음'; @override - String get nowPlayingMinimize => 'Minimize'; + String get nowPlayingMinimize => '최소화'; @override - String get nowPlayingUpNext => 'Up next'; + String get nowPlayingUpNext => '다음 곡'; @override - String get nowPlayingDetails => 'Details'; + String get nowPlayingDetails => '자세히'; @override - String get nowPlayingOpenInExternalPlayer => 'Open in external player'; + String get nowPlayingOpenInExternalPlayer => '외부 플레이어에서 열기'; @override - String get nowPlayingTabPlayer => 'Player'; + String get nowPlayingTabPlayer => '플레이어'; @override - String get nowPlayingTabLyrics => 'Lyrics'; + String get nowPlayingTabLyrics => '가사'; @override - String get nowPlayingNoLyrics => 'No lyrics in this file'; + String get nowPlayingNoLyrics => '이 파일에는 가사가 없음'; @override - String get nowPlayingLibraryEmpty => 'Your library is empty'; + String get nowPlayingLibraryEmpty => '라이브러리가 비어 있음'; @override String nowPlayingShuffleLibraryFailed(String error) { - return 'Could not shuffle library: $error'; + return '라이브러리에서 셔플을 사용할 수 없음: $error'; } @override - String get nowPlayingShuffleOn => 'Shuffle on'; + String get nowPlayingShuffleOn => '셔플 켜기'; @override - String get nowPlayingPlayInOrder => 'Play in order'; + String get nowPlayingPlayInOrder => '순서대로 재생'; @override - String get nowPlayingShuffleLibrary => 'Shuffle library'; + String get nowPlayingShuffleLibrary => '라이브러리 셔플'; @override - String get nowPlayingQueueEmpty => 'Queue is empty'; + String get nowPlayingQueueEmpty => '현재 다운로드 목록이 비어 있음'; @override - String get nowPlayingNoMetadata => 'No metadata available'; + String get nowPlayingNoMetadata => '사용할 수 있는 메타데이터가 없음'; @override - String get announcementUnableToOpenLink => - 'Unable to open link. Please try again.'; + String get announcementUnableToOpenLink => '링크를 열 수 없습니다. 다시 시도해 주세요'; @override String trackConvertLosslessOutputWithCap(String quality) { - return 'Lossless output with $quality cap'; + return '$quality 제한이 있는 무손실 출력'; } @override @@ -4568,7 +4448,7 @@ class AppLocalizationsKo extends AppLocalizations { String targetFormat, String quality, ) { - return '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.'; + return '$sourceFormat에서 $targetFormat($quality)으로 변환하시겠습니까?\n\n출력은 무손실 코덱을 유지하지만 비트 심도/샘플 속도가 제한됩니다. 변환 후 원본 파일이 삭제됩니다'; } @override @@ -4580,10 +4460,10 @@ class AppLocalizationsKo extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '트랙', + one: '트랙', ); - return 'Convert $count $_temp0 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.'; + return '$count 개의 $_temp0을 $format($quality)으로 변환하시겠습니까?\n\n출력은 무손실 코덱을 유지하지만 비트 심도/샘플 속도가 제한됩니다. 변환 후 원본 파일이 삭제됩니다'; } @override @@ -4606,64 +4486,63 @@ class AppLocalizationsKo extends AppLocalizations { @override String get aboutPaxsenixSubtitle => - 'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'; + 'Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou 및 Genius용 가사 프록시'; @override - String get snackbarPlayingNext => 'Playing next'; + String get snackbarPlayingNext => '다음 곡 재생'; @override - String get snackbarAddedToQueueGeneric => 'Added to queue'; + String get snackbarAddedToQueueGeneric => '현재 다운로드 목록에 추가됨'; @override String selectionDeletePlaylistsCount(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'playlists', - one: 'playlist', + other: '재생목록', + one: '재생목록', ); - return 'Delete $count $_temp0'; + return '$count $_temp0 삭제'; } @override - String get actionShuffle => 'Shuffle'; + String get actionShuffle => '셔플'; @override - String get downloadPrimaryArtistOnlyOn => 'Primary only: On'; + String get downloadPrimaryArtistOnlyOn => '기본 아티스트만: ON'; @override - String get downloadPrimaryArtistOnlyOff => 'Primary only: Off'; + String get downloadPrimaryArtistOnlyOff => '기본 아티스트만: OFF'; @override - String get downloadAlbumArtistMetadataPrimaryOnly => - 'Album Artist metadata: Primary only'; + String get downloadAlbumArtistMetadataPrimaryOnly => '앨범 아티스트 메타데이터: 기본만'; @override - String get downloadAlbumArtistMetadataFull => 'Album Artist metadata: Full'; + String get downloadAlbumArtistMetadataFull => '앨범 아티스트 메타데이터: 전체'; @override - String get trackConvertOriginal => 'Original'; + String get trackConvertOriginal => '원본'; @override - String get trackConvertOriginalQuality => 'Original quality'; + String get trackConvertOriginalQuality => '원본 음질'; @override - String get trackConvertLosslessSuffix => 'Lossless'; + String get trackConvertLosslessSuffix => '무손실'; @override - String get trackConvertDithering => 'Dithering'; + String get trackConvertDithering => '디더링'; @override - String get trackConvertResampler => 'Resampler'; + String get trackConvertResampler => '리샘플러'; @override - String get trackConvertDitherNone => 'None'; + String get trackConvertDitherNone => '없음'; @override String get trackConvertDitherTriangular => 'TPDF'; @override - String get trackConvertDitherTriangularHp => 'Triangular HP'; + String get trackConvertDitherTriangularHp => '삼각형 HP'; @override String get trackConvertResamplerSwr => 'SWR'; @@ -4672,127 +4551,125 @@ class AppLocalizationsKo extends AppLocalizations { String get trackConvertResamplerSoxr => 'SoXr'; @override - String get updateSeeReleaseNotes => 'See release notes for details.'; + String get updateSeeReleaseNotes => '자세한 내용은 릴리스 노트를 참조하세요'; @override - String get unknownTitle => 'Unknown title'; + String get unknownTitle => '알 수 없는 제목'; @override - String get trackPlayNext => 'Play next'; + String get trackPlayNext => '다음 곡 재생'; @override - String get trackAddToQueue => 'Add to queue'; + String get trackAddToQueue => '다운로드 목록에 추가'; @override String snackbarExtensionInstalledEnable(String extensionName) { - return '$extensionName installed. Enable it in Settings > Extensions'; + return '\'\'$extensionName\'\'이 설치됨. \'설정 > 확장 프로그램\'에서 활성화하세요'; } @override String snackbarExtensionUpdatedVersion(String extensionName, String version) { - return '$extensionName updated to v$version'; + return '\'\'$extensionName\'\'이 v$version으로 업데이트됨'; } @override String snackbarFailedToInstallNamed(String extensionName) { - return 'Failed to install $extensionName'; + return '$extensionName 설치 실패'; } @override String snackbarFailedToUpdateNamed(String extensionName) { - return 'Failed to update $extensionName'; + return '$extensionName 업데이트 실패'; } @override String get releaseTypeEp => 'EP'; @override - String get releaseTypeSingle => 'Single'; + String get releaseTypeSingle => '싱글'; @override - String get trackCoverOnline => 'Online cover'; + String get trackCoverOnline => '온라인 표지'; @override - String get regionCountryUS => 'United States'; + String get regionCountryUS => '미국'; @override - String get regionCountryGB => 'United Kingdom'; + String get regionCountryGB => '영국'; @override - String get regionCountryFR => 'France'; + String get regionCountryFR => '프랑스'; @override - String get regionCountryDE => 'Germany'; + String get regionCountryDE => '독일'; @override - String get regionCountryJP => 'Japan'; + String get regionCountryJP => '일본'; @override - String get regionCountryKR => 'South Korea'; + String get regionCountryKR => '한국'; @override - String get regionCountryIN => 'India'; + String get regionCountryIN => '인도'; @override - String get regionCountryID => 'Indonesia'; + String get regionCountryID => '인도네시아'; @override - String get regionCountryBR => 'Brazil'; + String get regionCountryBR => '브라질'; @override - String get regionCountryMX => 'Mexico'; + String get regionCountryMX => '멕시코'; @override - String get regionCountryAU => 'Australia'; + String get regionCountryAU => '호주'; @override - String get regionCountryCA => 'Canada'; + String get regionCountryCA => '캐나다'; @override - String get regionCountryXK => 'Kosovo'; + String get regionCountryXK => '코소보'; @override - String get extensionVerificationBrowserTitle => 'Verification browser'; + String get extensionVerificationBrowserTitle => '인증 브라우저'; @override String get extensionVerificationBrowserSubtitleExternal => - 'Open challenges in the default browser first'; + '인증을 기본 브라우저에서 먼저 실행합니다'; @override String get extensionVerificationBrowserSubtitleInApp => - 'Open challenges in the in-app browser first'; + '인증을 앱 내 브라우저에서 먼저 실행합니다'; @override - String get extensionVerificationBrowserExternal => 'External'; + String get extensionVerificationBrowserExternal => '외부'; @override - String get extensionVerificationBrowserInApp => 'In-app'; + String get extensionVerificationBrowserInApp => '내부'; @override - String get extensionVerificationHelpTitleManual => - 'Open verification manually'; + String get extensionVerificationHelpTitleManual => '수동으로 인증 열기'; @override - String get extensionVerificationHelpTitleWaiting => - 'Verification still waiting'; + String get extensionVerificationHelpTitleWaiting => '아직 인증을 기다리는 중'; @override String get extensionVerificationHelpMessageManual => - 'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'; + 'SpotiFLAC Mobile에서 브라우저를 자동으로 열지 못하였습니다. 아래 링크를 브라우저에서 열거나 직접 복사하세요'; @override String get 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.'; + '브라우저가 열리지 않았거나 인증을 완료한 후에도 SpotiFLAC Mobile로 돌아오지 않았다면, 아래 링크를 다시 열거나 직접 복사하세요'; @override - String get extensionVerificationClose => 'Close'; + String get extensionVerificationClose => '닫기'; @override - String get extensionVerificationCopyLink => 'Copy link'; + String get extensionVerificationCopyLink => '링크 복사'; @override - String get extensionVerificationLinkCopied => 'Verification link copied'; + String get extensionVerificationLinkCopied => '인증 링크가 복사됨'; @override - String get extensionVerificationOpenBrowser => 'Open browser'; + String get extensionVerificationOpenBrowser => '브라우저 열기'; } diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart index f4b4d29d..434bd65d 100644 --- a/lib/l10n/app_localizations_pt.dart +++ b/lib/l10n/app_localizations_pt.dart @@ -4817,7 +4817,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get navHome => 'Início'; @override - String get navLibrary => 'Library'; + String get navLibrary => 'Biblioteca'; @override String get navSettings => 'Configurações'; @@ -4829,13 +4829,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get homeTitle => 'Início'; @override - String get homeSubtitle => 'Paste a supported URL or search by name'; + String get homeSubtitle => 'Cole um URL compatível ou pesquise por nome'; @override - String get homeEmptyTitle => 'No search providers yet'; + String get homeEmptyTitle => 'Ainda não há provedores de pesquisa'; @override - String get homeEmptySubtitle => 'Install an extension to continue.'; + String get homeEmptySubtitle => 'Instale uma extensão para continuar.'; @override String get homeSupports => @@ -4860,7 +4860,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get settingsTitle => 'Configurações'; @override - String get settingsDownload => 'Download'; + String get settingsDownload => ''; @override String get settingsAppearance => 'Aparência'; @@ -4875,7 +4875,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get settingsAbout => 'Sobre'; @override - String get downloadTitle => 'Download'; + String get downloadTitle => ''; @override String get downloadAskQualitySubtitle => @@ -4885,11 +4885,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get downloadFilenameFormat => 'Formato do Nome do Arquivo'; @override - String get downloadSingleFilenameFormat => 'Single Filename Format'; + String get downloadSingleFilenameFormat => + 'Formato do nome do arquivo para Singles'; @override String get downloadSingleFilenameFormatDescription => - 'Filename pattern for singles and EPs. Uses the same tags as the album format.'; + 'Padrão de nome de arquivo para Singles e EPs. Utiliza as mesmas tags do formato de álbum.'; @override String get downloadFolderOrganization => 'Organização de Pastas'; @@ -4930,7 +4931,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get optionsPrimaryProviderSubtitle => - 'Service used for searching by track or album name'; + 'Serviço usado para pesquisar por faixa ou nome do álbum'; @override String optionsUsingExtension(String extensionName) { @@ -4938,15 +4939,15 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { } @override - String get optionsDefaultSearchTab => 'Default Search Tab'; + String get optionsDefaultSearchTab => 'Aba de pesquisa padrão'; @override String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; + 'Escolha qual aba será aberta primeiro para novos resultados de pesquisa.'; @override String get optionsSwitchBack => - 'Choose the default search provider to switch back from an extension'; + 'Escolha o provedor de pesquisa padrão para retornar após sair de uma extensão'; @override String get optionsAutoFallback => 'Fallback Automático'; @@ -4960,18 +4961,18 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get optionsUseExtensionProvidersOn => - 'Extension providers are enabled'; + 'Provedores de extensão estão habilitados'; @override String get optionsUseExtensionProvidersOff => - 'Extension providers are required'; + 'Provedores de extensão são necessários'; @override String get optionsEmbedLyrics => 'Incorporar Letras'; @override String get optionsEmbedLyricsSubtitle => - 'Save synced lyrics alongside your downloaded tracks'; + 'Salve letras sincronizadas ao lado das suas faixas baixadas'; @override String get optionsMaxQualityCover => 'Capa de Qualidade Máxima'; @@ -4985,38 +4986,77 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; + 'Analisar o volume e incorporar tags ReplayGain (EBU R128)'; @override String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; + 'Desativado: sem etiquetas de normalização de intensidade'; @override - String get optionsArtistTagMode => 'Artist Tag Mode'; + String get trackReplayGain => 'Reanalisar ReplayGain'; + + @override + String get trackReplayGainSubtitle => + 'Analisar o volume e gravar etiquetas ReplayGain'; + + @override + String get trackReplayGainScanning => 'Analisando o volume...'; + + @override + String get trackReplayGainSuccess => 'Etiquetas ReplayGain adicionadas'; + + @override + String get trackReplayGainFailed => 'Falha ao adicionar etiquetas ReplayGain'; + + @override + String selectionReplayGainCount(int count) { + return 'ReplayGain ($count)'; + } + + @override + String get replayGainBatchConfirmTitle => 'Adicionar ReplayGain'; + + @override + String replayGainBatchConfirmMessage(int count) { + return 'Analisar o volume e gravar etiquetas ReplayGain em $count faixa(s)?'; + } + + @override + String get replayGainBatchAnalyzing => 'Analisando ReplayGain...'; + + @override + String replayGainBatchSuccess(int success, int total) { + return 'ReplayGain adicionado a $success de $total faixas'; + } + + @override + String get optionsArtistTagMode => 'Modo de etiqueta de artista'; @override String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; + 'Escolha como múltiplos artistas são escritos em etiquetas incorporadas.'; @override - String get optionsArtistTagModeJoined => 'Single joined value'; + String get optionsArtistTagModeJoined => 'Valor único combinado'; @override String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; + 'Escreva um valor ARTIST único como \"Artista A, Artista B\" para máxima compatibilidade com o ‘player’'; @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; + String get optionsArtistTagModeSplitVorbis => + 'Dividir etiquetas para FLAC/Opus'; @override String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; + 'Escrever uma etiqueta de artista por artista para FLAC e Opus; MP3 e M4A permanecem combinados.'; @override - String get optionsExtensionStore => 'Extension Repo'; + String get optionsExtensionStore => 'Repositório de extensões'; @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; + String get optionsExtensionStoreSubtitle => + 'Mostrar aba de repositório na navegação'; @override String get optionsCheckUpdates => 'Procurar Atualizações'; @@ -5060,7 +5100,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String optionsSpotifyCredentialsConfigured(String clientId) { - return 'Client ID: $clientId...'; + return 'ID do cliente: $clientId...'; } @override @@ -5073,7 +5113,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get optionsSpotifyDeprecationWarning => - 'Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.'; + 'A busca do Spotify será descontinuada em 3 de março de 2026 devido a mudanças na API do Spotify. Por favor, mude para o Deezer.'; @override String get extensionsTitle => 'Extensões'; @@ -5095,7 +5135,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get extensionsUninstall => 'Desinstalar'; @override - String get storeTitle => 'Extension Repo'; + String get storeTitle => 'Repositório de extensões'; @override String get storeSearch => 'Pesquisar extensões...'; @@ -5141,7 +5181,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get aboutPCSource => 'Código-fonte do app desktop'; @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; + String get aboutKeepAndroidOpen => 'Manter o Android aberto'; @override String get aboutReportIssue => 'Reportar um problema'; @@ -5180,19 +5220,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; + 'O criador do QQDL e da HiFi API. Este projeto ajudou a moldar o suporte a transferências sem perdas.'; @override String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; + 'O criador original do projeto HiFi. Uma base para integração de fontes sem perdas.'; @override String get aboutSjdonadoDesc => - 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + 'Criador do I Don\'t Have Spotify (IDHS). O resolvedor de link alternativo que salva o dia!'; @override String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; + 'Pesquisar metadados de músicas, gerenciar extensões e organizar sua biblioteca.'; @override String get artistAlbums => 'Álbuns'; @@ -5290,7 +5330,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get setupIcloudNotSupported => - 'iCloud Drive is not supported. Please use the app Documents folder.'; + 'O iCloud Drive não é compatível. Use a pasta Documentos do aplicativo.'; @override String get setupDownloadInFlac => 'Baixar faixas do Spotify em FLAC'; @@ -5342,14 +5382,14 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { 'Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.'; @override - String get setupLanguageTitle => 'Choose Language'; + String get setupLanguageTitle => 'Escolher idioma'; @override String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; + 'Selecione o idioma de sua preferência para o aplicativo. Você pode alterar isso depois em Configurações.'; @override - String get setupLanguageSystemDefault => 'System Default'; + String get setupLanguageSystemDefault => 'Padrão do sistema'; @override String get dialogCancel => 'Cancelar'; @@ -5373,7 +5413,16 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get dialogImport => 'Importar'; @override - String get dialogDownload => 'Download'; + String get dialogDownload => 'Baixar'; + + @override + String get previewPlay => 'Reproduzir prévia'; + + @override + String get previewStop => 'Parar prévia'; + + @override + String get previewUnavailable => 'Prévia indisponível'; @override String get dialogDiscard => 'Descartar'; @@ -5460,7 +5509,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" already exists in your library'; + return '\"$trackName\" já existe na sua biblioteca'; } @override @@ -5540,18 +5589,18 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get errorNoTracksFound => 'Nenhuma faixa encontrada'; @override - String get searchEmptyResultSubtitle => 'Try another keyword'; + String get searchEmptyResultSubtitle => 'Tente outra palavra-chave'; @override - String get errorUrlNotRecognized => 'Link not recognized'; + String get errorUrlNotRecognized => 'Link não reconhecido'; @override String get errorUrlNotRecognizedMessage => - 'This link is not supported. Make sure the URL is correct and a compatible extension is installed.'; + 'Este link não é suportado. Verifique se a URL está correta e se uma extensão compatível está instalada.'; @override String get errorUrlFetchFailed => - 'Failed to load content from this link. Please try again.'; + 'Falha ao carregar o conteúdo deste link. Por favor, tente novamente.'; @override String errorMissingExtensionSource(String item) { @@ -5608,37 +5657,37 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get searchAlbums => 'Álbuns'; @override - String get searchPlaylists => 'Playlists'; + String get searchPlaylists => 'Listas de reprodução'; @override - String get searchSortTitle => 'Sort Results'; + String get searchSortTitle => 'Ordenar resultados'; @override - String get searchSortDefault => 'Default'; + String get searchSortDefault => 'Padrão'; @override - String get searchSortTitleAZ => 'Title (A-Z)'; + String get searchSortTitleAZ => 'Título (A-Z)'; @override - String get searchSortTitleZA => 'Title (Z-A)'; + String get searchSortTitleZA => 'Título (Z-A)'; @override - String get searchSortArtistAZ => 'Artist (A-Z)'; + String get searchSortArtistAZ => 'Artista (A-Z)'; @override - String get searchSortArtistZA => 'Artist (Z-A)'; + String get searchSortArtistZA => 'Artista (Z-A)'; @override - String get searchSortDurationShort => 'Duration (Shortest)'; + String get searchSortDurationShort => 'Duração (mais curta)'; @override - String get searchSortDurationLong => 'Duration (Longest)'; + String get searchSortDurationLong => 'Duração (mais longa)'; @override - String get searchSortDateOldest => 'Release Date (Oldest)'; + String get searchSortDateOldest => 'Data de lançamento (mais antiga)'; @override - String get searchSortDateNewest => 'Release Date (Newest)'; + String get searchSortDateNewest => 'Data de lançamento (mais recente)'; @override String get tooltipPlay => 'Reproduzir'; @@ -5647,21 +5696,21 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get filenameFormat => 'Formato do Nome do Arquivo'; @override - String get filenameShowAdvancedTags => 'Show advanced tags'; + String get filenameShowAdvancedTags => 'Exibir etiquetas avançadas'; @override String get filenameShowAdvancedTagsDescription => - 'Enable formatted tags for track padding and date patterns'; + 'Ativar etiquetas formatadas para preenchimento de faixas e padrões de data'; @override String get folderOrganizationNone => 'Nenhuma organização'; @override - String get folderOrganizationByPlaylist => 'By Playlist'; + String get folderOrganizationByPlaylist => 'Por playlist'; @override String get folderOrganizationByPlaylistSubtitle => - 'Separate folder for each playlist'; + 'Pasta separada para cada playlist'; @override String get folderOrganizationByArtist => 'Por Artista'; @@ -5740,18 +5789,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { 'Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.'; @override - String get providerPriorityFallbackExtensionsTitle => 'Extension Fallback'; + String get providerPriorityFallbackExtensionsTitle => + 'Alternativa de extensão'; @override String get providerPriorityFallbackExtensionsDescription => - 'Choose which installed download extensions can be used during automatic fallback.'; + 'Escolha quais extensões de download instaladas podem ser usadas durante a alternativa automática.'; @override String get providerPriorityFallbackExtensionsHint => - 'Only enabled extensions with download-provider capability are listed here.'; + 'Apenas extensões ativadas com capacidade de provedor de download são listadas aqui.'; @override - String get providerBuiltIn => 'Legacy'; + String get providerBuiltIn => 'Legado'; @override String get providerExtension => 'Extensão'; @@ -5829,13 +5879,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { 'Digite a sua Client ID e Secret para usar a sua própria cota de aplicativo do Spotify.'; @override - String get credentialsClientId => 'Client ID'; + String get credentialsClientId => 'ID do cliente'; @override String get credentialsClientIdHint => 'Colar Client ID'; @override - String get credentialsClientSecret => 'Client Secret'; + String get credentialsClientSecret => 'Segredo do cliente'; @override String get credentialsClientSecretHint => 'Colar Client Secret'; @@ -5850,7 +5900,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get sectionSearchSource => 'Origem da Pesquisa'; @override - String get sectionDownload => 'Download'; + String get sectionDownload => 'Baixar'; @override String get sectionPerformance => 'Desempenho'; @@ -5910,7 +5960,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get sectionTheme => 'Tema'; @override - String get sectionLayout => 'Layout'; + String get sectionLayout => 'Aparência\n'; @override String get sectionLanguage => 'Idioma'; @@ -5922,10 +5972,11 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get settingsAppearanceSubtitle => 'Tema, cores, exibição'; @override - String get settingsDownloadSubtitle => 'Service, quality, fallback'; + String get settingsDownloadSubtitle => 'Serviço, qualidade, alternativa'; @override - String get settingsOptionsSubtitle => 'Fallback, metadata, lyrics, cover art'; + String get settingsOptionsSubtitle => + 'Alternativa, metadados, letras, capa do álbum'; @override String get settingsExtensionsSubtitle => 'Gerenciar provedores de download'; @@ -6026,17 +6077,17 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String trackLyricsSource(String source) { - return 'Source: $source'; + return 'Fonte: $source'; } @override String get trackLyricsNotAvailable => 'Letra não disponível para esta faixa'; @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; + String get trackLyricsNotInFile => 'Nenhuma letra encontrada neste arquivo'; @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; + String get trackFetchOnlineLyrics => 'Buscar online'; @override String get trackLyricsTimeout => @@ -6092,7 +6143,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get storeFilterMetadata => 'Metadados'; @override - String get storeFilterDownload => 'Download'; + String get storeFilterDownload => 'Baixar'; @override String get storeFilterUtility => 'Utilidade'; @@ -6107,52 +6158,52 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get storeClearFilters => 'Limpar filtros'; @override - String get storeAddRepoTitle => 'Add Extension Repository'; + String get storeAddRepoTitle => 'Adicionar repositório de extensões'; @override String get storeAddRepoDescription => - 'Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.'; + 'Insira a URL de um repositório do GitHub que contenha um arquivo registry.json para navegar e instalar extensões.'; @override - String get storeRepoUrlLabel => 'Repository URL'; + String get storeRepoUrlLabel => 'URL do repositório'; @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; + String get storeRepoUrlHint => 'https://github.com/usuario/repositorio'; @override String get storeRepoUrlHelper => - 'e.g. https://github.com/user/extensions-repo'; + 'e.g. https://github.com/usuario/repositorio-extensao'; @override - String get storeAddRepoButton => 'Add Repository'; + String get storeAddRepoButton => 'Adicionar repositório'; @override - String get storeChangeRepoTooltip => 'Change repository'; + String get storeChangeRepoTooltip => 'Mudar repositório'; @override - String get storeRepoDialogTitle => 'Extension Repository'; + String get storeRepoDialogTitle => 'Repositório de extensões'; @override - String get storeRepoDialogCurrent => 'Current repository:'; + String get storeRepoDialogCurrent => 'Repositório atual:'; @override - String get storeNewRepoUrlLabel => 'New Repository URL'; + String get storeNewRepoUrlLabel => 'URL do novo repositório'; @override - String get storeLoadError => 'Failed to load repository'; + String get storeLoadError => 'Falha ao carregar o repositório'; @override - String get storeEmptyNoExtensions => 'No extensions available'; + String get storeEmptyNoExtensions => 'Nenhuma extensão disponível'; @override - String get storeEmptyNoResults => 'No extensions found'; + String get storeEmptyNoResults => 'Nenhuma extensão encontrada'; @override - String get extensionDefaultProvider => 'Default Search'; + String get extensionDefaultProvider => 'Pesquisa padrão'; @override String get extensionDefaultProviderSubtitle => - 'Use the default metadata search'; + 'Usar a pesquisa padrão de metadados'; @override String get extensionAuthor => 'Autor'; @@ -6246,12 +6297,12 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; + return '$count extensões instaladas com sucesso'; } @override String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; + return 'Instaladas $installed de $attempted extensões'; } @override @@ -6262,11 +6313,11 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { 'Definir ordem do serviço de download'; @override - String get extensionsFallbackTitle => 'Fallback Extensions'; + String get extensionsFallbackTitle => 'Extensões alternativas'; @override String get extensionsFallbackSubtitle => - 'Choose which installed download extensions can be used as fallback'; + 'Escolha quais extensões de download instaladas podem ser usadas como alternativa'; @override String get extensionsNoDownloadProvider => @@ -6301,19 +6352,19 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get extensionsErrorLoading => 'Erro ao carregar extensão'; @override - String get qualityFlacLossless => 'FLAC Lossless'; + String get qualityFlacLossless => 'FLAC sem perdas'; @override - String get qualityFlacLosslessSubtitle => '16-bit / 44.1kHz'; + String get qualityFlacLosslessSubtitle => '16 bits / 44,1 kHz'; @override - String get qualityHiResFlac => 'Hi-Res FLAC'; + String get qualityHiResFlac => 'FLAC de alta resolução'; @override String get qualityHiResFlacSubtitle => '24-bit / até 96kHz'; @override - String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; + String get qualityHiResFlacMax => 'FLAC Max de alta resolução'; @override String get qualityHiResFlacMaxSubtitle => '24-bit / até 192kHz'; @@ -6375,7 +6426,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get albumFolderStructureDescription => - 'Escolher a estrutura das pastas dos álbuns'; + 'Choose how album folders are structured'; @override String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders'; @@ -6670,13 +6721,13 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get libraryAutoScanSubtitle => - 'Automatically scan your library for new files'; + 'Escanear automaticamente sua biblioteca em busca de novos arquivos'; @override - String get libraryAutoScanOff => 'Off'; + String get libraryAutoScanOff => 'Desligar'; @override - String get libraryAutoScanOnOpen => 'Every app open'; + String get libraryAutoScanOnOpen => 'Sempre que abrir o aplicativo'; @override String get libraryAutoScanDaily => 'Daily'; @@ -7041,7 +7092,7 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { 'Temporary files from downloads and audio conversion.'; @override - String get cacheCoverImage => 'Cover image cache'; + String get cacheCoverImage => 'Cache da imagem de capa'; @override String get cacheCoverImageDesc => @@ -7644,6 +7695,10 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get lyricsProviderQqMusicDesc => 'QQ Music (good for Chinese songs, via proxy)'; + @override + String get lyricsProviderLyricsPlusDesc => + 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; + @override String get lyricsProviderExtensionDesc => 'Extension provider'; @@ -7667,6 +7722,164 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { @override String get settingsDonateSubtitle => 'Buy the developer a coffee'; + @override + String get settingsBackup => 'Backup & Restore'; + + @override + String get settingsBackupSubtitle => + 'Move your library, history and settings to a new device'; + + @override + String get backupTitle => 'Backup & Restore'; + + @override + String get backupExportSectionTitle => 'Create backup'; + + @override + String get 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.'; + + @override + String get backupExportButton => 'Create backup file'; + + @override + String get backupImportSectionTitle => 'Restore backup'; + + @override + String get backupImportSectionDescription => + 'Pick a backup file to restore your data. This replaces the current settings, history and library on this device.'; + + @override + String get backupImportButton => 'Choose backup file'; + + @override + String get backupCreating => 'Creating backup...'; + + @override + String get backupCreated => 'Backup created'; + + @override + String get backupCreateFailed => 'Failed to create backup'; + + @override + String get backupEmpty => 'There is nothing to back up yet'; + + @override + String get backupRestoreConfirmTitle => 'Restore this backup?'; + + @override + String get backupRestoreConfirmMessage => + 'This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.'; + + @override + String get backupRestoreConfirmButton => 'Restore'; + + @override + String get backupRestoring => 'Restoring backup...'; + + @override + String get backupRestored => 'Backup restored successfully'; + + @override + String get backupRestoreFailed => 'Failed to restore backup'; + + @override + String get backupInvalidFile => 'This file is not a valid SpotiFLAC backup'; + + @override + String get backupRestoreRestartHint => + 'Restart the app to make sure every change is applied.'; + + @override + String get backupContentsTitle => 'Backup contents'; + + @override + String get backupContentsSettings => 'App settings'; + + @override + String backupContentsHistory(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'items', + one: 'item', + ); + return '$count history $_temp0'; + } + + @override + String backupContentsLiked(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count liked $_temp0'; + } + + @override + String backupContentsWishlist(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count wishlist $_temp0'; + } + + @override + String backupContentsPlaylists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count playlists', + one: '1 playlist', + ); + return '$_temp0'; + } + + @override + String backupContentsArtists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count favorite artists', + one: '1 favorite artist', + ); + return '$_temp0'; + } + + @override + String backupContentsExtensions(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count extensions', + one: '1 extension', + ); + return '$_temp0'; + } + + @override + String get backupIncludeSecrets => 'Include extension credentials'; + + @override + String get 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.'; + + @override + String backupExtensionsRestoreFailed(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'extensions', + one: 'extension', + ); + return '$count $_temp0 could not be reinstalled. Install them manually from the store.'; + } + @override String get tooltipLoveAll => 'Love All'; @@ -7796,6 +8009,17 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String get downloadNetworkCompatibilityModeDisabled => 'Using standard network settings'; + @override + String get downloadAllowLocalNetwork => 'Allow Local Network Access'; + + @override + String get downloadAllowLocalNetworkEnabled => + 'Requests to local/private addresses are allowed (for local proxy or custom DNS)'; + + @override + String get downloadAllowLocalNetworkDisabled => + 'Local/private addresses are blocked for security'; + @override String get downloadSelectServiceToEnable => 'Select a provider with quality options to enable this option'; @@ -9056,4 +9280,318 @@ class AppLocalizationsPtPt extends AppLocalizationsPt { String shareSheetLinkCopied(Object service) { return '$service link copied'; } + + @override + String get libraryPlayback => 'Playback'; + + @override + String get libraryExternalPlayer => 'External player'; + + @override + String get libraryExternalPlayerSubtitle => + 'Recommended for listening, best quality, gapless playback, EQ, and wider format support'; + + @override + String get libraryBuiltInPreviewPlayer => 'Built-in preview player'; + + @override + String get libraryBuiltInPreviewPlayerSubtitle => + 'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'; + + @override + String get libraryBuiltInPlayerInfo => + 'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'; + + @override + String get nowPlayingTitle => 'Now Playing'; + + @override + String get nowPlayingNothingPlaying => 'Nothing is playing'; + + @override + String get nowPlayingMinimize => 'Minimize'; + + @override + String get nowPlayingUpNext => 'Up next'; + + @override + String get nowPlayingDetails => 'Details'; + + @override + String get nowPlayingOpenInExternalPlayer => 'Open in external player'; + + @override + String get nowPlayingTabPlayer => 'Player'; + + @override + String get nowPlayingTabLyrics => 'Lyrics'; + + @override + String get nowPlayingNoLyrics => 'No lyrics in this file'; + + @override + String get nowPlayingLibraryEmpty => 'Your library is empty'; + + @override + String nowPlayingShuffleLibraryFailed(String error) { + return 'Could not shuffle library: $error'; + } + + @override + String get nowPlayingShuffleOn => 'Shuffle on'; + + @override + String get nowPlayingPlayInOrder => 'Play in order'; + + @override + String get nowPlayingShuffleLibrary => 'Shuffle library'; + + @override + String get nowPlayingQueueEmpty => 'Queue is empty'; + + @override + String get nowPlayingNoMetadata => 'No metadata available'; + + @override + String get announcementUnableToOpenLink => + 'Unable to open link. Please try again.'; + + @override + String trackConvertLosslessOutputWithCap(String quality) { + return 'Lossless output with $quality cap'; + } + + @override + String trackConvertConfirmMessageLosslessCapped( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '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.'; + } + + @override + String selectionBatchConvertConfirmMessageLosslessCapped( + int count, + String format, + String quality, + ) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return 'Convert $count $_temp0 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.'; + } + + @override + String trackConvertActionLabelLossless( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '$sourceFormat → $targetFormat ($quality)'; + } + + @override + String trackConvertActionLabelLossy( + String sourceFormat, + String targetFormat, + String bitrate, + ) { + return '$sourceFormat → $targetFormat @ $bitrate'; + } + + @override + String get aboutPaxsenixSubtitle => + 'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'; + + @override + String get snackbarPlayingNext => 'Playing next'; + + @override + String get snackbarAddedToQueueGeneric => 'Added to queue'; + + @override + String selectionDeletePlaylistsCount(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'playlists', + one: 'playlist', + ); + return 'Delete $count $_temp0'; + } + + @override + String get actionShuffle => 'Shuffle'; + + @override + String get downloadPrimaryArtistOnlyOn => 'Primary only: On'; + + @override + String get downloadPrimaryArtistOnlyOff => 'Primary only: Off'; + + @override + String get downloadAlbumArtistMetadataPrimaryOnly => + 'Album Artist metadata: Primary only'; + + @override + String get downloadAlbumArtistMetadataFull => 'Album Artist metadata: Full'; + + @override + String get trackConvertOriginal => 'Original'; + + @override + String get trackConvertOriginalQuality => 'Original quality'; + + @override + String get trackConvertLosslessSuffix => 'Lossless'; + + @override + String get trackConvertDithering => 'Dithering'; + + @override + String get trackConvertResampler => 'Resampler'; + + @override + String get trackConvertDitherNone => 'None'; + + @override + String get trackConvertDitherTriangular => 'TPDF'; + + @override + String get trackConvertDitherTriangularHp => 'Triangular HP'; + + @override + String get trackConvertResamplerSwr => 'SWR'; + + @override + String get trackConvertResamplerSoxr => 'SoXr'; + + @override + String get updateSeeReleaseNotes => 'See release notes for details.'; + + @override + String get unknownTitle => 'Unknown title'; + + @override + String get trackPlayNext => 'Play next'; + + @override + String get trackAddToQueue => 'Add to queue'; + + @override + String snackbarExtensionInstalledEnable(String extensionName) { + return '$extensionName installed. Enable it in Settings > Extensions'; + } + + @override + String snackbarExtensionUpdatedVersion(String extensionName, String version) { + return '$extensionName updated to v$version'; + } + + @override + String snackbarFailedToInstallNamed(String extensionName) { + return 'Failed to install $extensionName'; + } + + @override + String snackbarFailedToUpdateNamed(String extensionName) { + return 'Failed to update $extensionName'; + } + + @override + String get releaseTypeEp => 'EP'; + + @override + String get releaseTypeSingle => 'Single'; + + @override + String get trackCoverOnline => 'Online cover'; + + @override + String get regionCountryUS => 'United States'; + + @override + String get regionCountryGB => 'United Kingdom'; + + @override + String get regionCountryFR => 'France'; + + @override + String get regionCountryDE => 'Germany'; + + @override + String get regionCountryJP => 'Japan'; + + @override + String get regionCountryKR => 'South Korea'; + + @override + String get regionCountryIN => 'India'; + + @override + String get regionCountryID => 'Indonesia'; + + @override + String get regionCountryBR => 'Brazil'; + + @override + String get regionCountryMX => 'Mexico'; + + @override + String get regionCountryAU => 'Australia'; + + @override + String get regionCountryCA => 'Canada'; + + @override + String get regionCountryXK => 'Kosovo'; + + @override + String get extensionVerificationBrowserTitle => 'Verification browser'; + + @override + String get extensionVerificationBrowserSubtitleExternal => + 'Open challenges in the default browser first'; + + @override + String get extensionVerificationBrowserSubtitleInApp => + 'Open challenges in the in-app browser first'; + + @override + String get extensionVerificationBrowserExternal => 'External'; + + @override + String get extensionVerificationBrowserInApp => 'In-app'; + + @override + String get extensionVerificationHelpTitleManual => + 'Open verification manually'; + + @override + String get extensionVerificationHelpTitleWaiting => + 'Verification still waiting'; + + @override + String get extensionVerificationHelpMessageManual => + 'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'; + + @override + String get 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.'; + + @override + String get extensionVerificationClose => 'Close'; + + @override + String get extensionVerificationCopyLink => 'Copy link'; + + @override + String get extensionVerificationLinkCopied => 'Verification link copied'; + + @override + String get extensionVerificationOpenBrowser => 'Open browser'; } diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart index 47490bc0..e1c156ad 100644 --- a/lib/l10n/app_localizations_ru.dart +++ b/lib/l10n/app_localizations_ru.dart @@ -667,12 +667,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', + other: 'tracks', + one: 'track', ); - return 'Удалить $count $_temp0 из истории?\n\nЭто также удалит файлы из хранилища.'; + return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; } @override @@ -722,12 +720,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', + other: 'tracks', + one: 'track', ); - return 'Удалено $count $_temp0'; + return 'Deleted $count $_temp0'; } @override @@ -1193,10 +1189,8 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count треков', - many: '$count треков', - few: '$count трека', - one: '$count трек', + other: '$count tracks', + one: '1 track', ); return '$_temp0'; } @@ -1624,7 +1618,7 @@ class AppLocalizationsRu extends AppLocalizations { @override String get albumFolderStructureDescription => - 'Выберите структуру папок альбомов'; + 'Choose how album folders are structured'; @override String get downloadUseAlbumArtistForFolders => @@ -1745,12 +1739,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', + other: 'tracks', + one: 'track', ); - return 'Удалить $count $_temp0 из этого альбома?\n\nЭто также удалит файлы из хранилища.'; + return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.'; } @override @@ -1769,12 +1761,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', + other: 'tracks', + one: 'track', ); - return 'Удалить $count $_temp0'; + return 'Delete $count $_temp0'; } @override @@ -2002,10 +1992,8 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', + other: 'tracks', + one: 'track', ); return '$_temp0'; } @@ -2158,12 +2146,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count минут', - many: '$count минут', - few: '$count минуты', - one: '$count минуту', + other: '$count minutes ago', + one: '1 minute ago', ); - return '$_temp0 назад'; + return '$_temp0'; } @override @@ -2171,12 +2157,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count часов', - many: '$count часов', - few: '$count часа', - one: '$count час', + other: '$count hours ago', + one: '1 hour ago', ); - return '$_temp0 назад'; + return '$_temp0'; } @override @@ -2657,10 +2641,8 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: '$count треков', - many: '$count треков', - few: '$count трека', - one: '$count трек', + other: '$count tracks', + one: '1 track', ); return '$_temp0'; } @@ -2810,12 +2792,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', + other: 'tracks', + one: 'track', ); - return 'Отправить $count $_temp0'; + return 'Share $count $_temp0'; } @override @@ -2827,12 +2807,10 @@ class AppLocalizationsRu extends AppLocalizations { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'треков', - many: 'треков', - few: 'трека', - one: 'трек', + other: 'tracks', + one: 'track', ); - return 'Конвертировать $count $_temp0'; + return 'Convert $count $_temp0'; } @override diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart index 4d8ba404..6867802d 100644 --- a/lib/l10n/app_localizations_tr.dart +++ b/lib/l10n/app_localizations_tr.dart @@ -1619,7 +1619,8 @@ class AppLocalizationsTr extends AppLocalizations { String get downloadAlbumFolderStructure => 'Albüm Klasör Yapısı'; @override - String get albumFolderStructureDescription => 'Albüm klasör yapısını seçin'; + String get albumFolderStructureDescription => + 'Choose how album folders are structured'; @override String get downloadUseAlbumArtistForFolders => @@ -2074,13 +2075,13 @@ class AppLocalizationsTr extends AppLocalizations { String get libraryFilterReset => 'Reset'; @override - String get libraryFilterApply => 'Apply'; + String get libraryFilterApply => 'Uygula'; @override - String get libraryFilterSource => 'Source'; + String get libraryFilterSource => 'Kaynak'; @override - String get libraryFilterQuality => 'Quality'; + String get libraryFilterQuality => 'Kalite'; @override String get libraryFilterQualityHiRes => 'Hi-Res (24bit)'; @@ -2441,7 +2442,7 @@ class AppLocalizationsTr extends AppLocalizations { String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; @override - String get trackReEnrichSelectAll => 'Select All'; + String get trackReEnrichSelectAll => 'Tümünü Seç'; @override String get trackEditMetadata => 'Edit Metadata'; @@ -2599,10 +2600,10 @@ class AppLocalizationsTr extends AppLocalizations { String get cueSplitButton => 'Parçalara Ayrılmış'; @override - String get actionCreate => 'Create'; + String get actionCreate => 'Oluştur'; @override - String get collectionFoldersTitle => 'My folders'; + String get collectionFoldersTitle => 'Klasörlerim'; @override String get collectionWishlist => 'İstek listesi'; @@ -3116,7 +3117,7 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get dialogDownloadAllTitle => 'Download All'; + String get dialogDownloadAllTitle => 'Tümünü İndir'; @override String dialogDownloadAllMessage(int count) { @@ -3127,7 +3128,7 @@ class AppLocalizationsTr extends AppLocalizations { String get homeSkipAlreadyDownloaded => 'Daha önce indirilmiş şarkıları atla'; @override - String get homeGoToAlbum => 'Go to Album'; + String get homeGoToAlbum => 'Albüme Git'; @override String get homeAlbumInfoUnavailable => 'Albüm bilgisi mevcut değil'; @@ -3147,7 +3148,7 @@ class AppLocalizationsTr extends AppLocalizations { @override String snackbarError(String error) { - return 'Error: $error'; + return 'Hata: $error'; } @override @@ -3364,7 +3365,7 @@ class AppLocalizationsTr extends AppLocalizations { String get snackbarUnsupportedAudioFormat => 'Unsupported audio format'; @override - String get cacheRefresh => 'Refresh'; + String get cacheRefresh => 'Yenile'; @override String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount) { @@ -3445,7 +3446,7 @@ class AppLocalizationsTr extends AppLocalizations { 'Select at least one field to auto-fill'; @override - String get editMetadataFieldTitle => 'Title'; + String get editMetadataFieldTitle => 'Başlık'; @override String get editMetadataFieldArtist => 'Artist'; @@ -3823,7 +3824,7 @@ class AppLocalizationsTr extends AppLocalizations { @override String notifLibraryScanErrors(int count) { - return '$count errors'; + return '$count hata'; } @override @@ -3846,7 +3847,7 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get notifUpdateReady => 'Update Ready'; + String get notifUpdateReady => 'Güncelleme Hazır'; @override String notifUpdateReadyBody(String version) { @@ -3878,7 +3879,7 @@ class AppLocalizationsTr extends AppLocalizations { String get homeChangeSearchProviderTooltip => 'Change search provider'; @override - String get actionPaste => 'Paste'; + String get actionPaste => 'Yapıştır'; @override String get searchTracksHint => 'Search tracks...'; @@ -3890,13 +3891,13 @@ class AppLocalizationsTr extends AppLocalizations { String get tutorialSearchHint => 'Paste or search...'; @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; + String get tutorialDownloadCompletedSemantics => 'İndirme tamamlandı'; @override String get tutorialDownloadInProgressSemantics => 'Download in progress'; @override - String get tutorialStartDownloadSemantics => 'Start download'; + String get tutorialStartDownloadSemantics => 'İndirmeyi başlat'; @override String get optionsEmbedMetadata => 'Embed Metadata'; @@ -3925,7 +3926,7 @@ class AppLocalizationsTr extends AppLocalizations { String get trackCoverReplace => 'Replace Cover'; @override - String get trackCoverPick => 'Pick Cover'; + String get trackCoverPick => 'Kapak Seç'; @override String get trackCoverClearSelected => 'Clear selected cover'; @@ -3934,7 +3935,7 @@ class AppLocalizationsTr extends AppLocalizations { String get trackCoverCurrent => 'Current cover'; @override - String get trackCoverSelected => 'Selected cover'; + String get trackCoverSelected => 'Seçili kapak'; @override String get trackCoverReplaceNotice => @@ -4027,7 +4028,7 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get extensionDetailsTags => 'Tags'; + String get extensionDetailsTags => 'Etiketler'; @override String get extensionDetailsInformation => 'Information'; @@ -4087,7 +4088,7 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get optionsDefaultSearchTabAlbums => 'Albums'; + String get optionsDefaultSearchTabAlbums => 'Albümler'; @override String get optionsDefaultSearchTabTracks => 'Tracks'; @@ -4114,7 +4115,7 @@ class AppLocalizationsTr extends AppLocalizations { 'Embed, mode, providers, language options'; @override - String get settingsApp => 'App'; + String get settingsApp => 'Uygulama'; @override String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; @@ -4123,7 +4124,7 @@ class AppLocalizationsTr extends AppLocalizations { String get sectionMetadataProviders => 'Providers'; @override - String get sectionDuplicates => 'Duplicates'; + String get sectionDuplicates => 'Yinelenenler'; @override String get sectionLyricsProviderOptions => 'Provider Options'; @@ -4163,13 +4164,13 @@ class AppLocalizationsTr extends AppLocalizations { String get editMetadataFieldDiscTotal => 'Disc Total'; @override - String get editMetadataFieldComposer => 'Composer'; + String get editMetadataFieldComposer => 'Besteci'; @override - String get editMetadataFieldComment => 'Comment'; + String get editMetadataFieldComment => 'Yorum'; @override - String get editMetadataAdvanced => 'Advanced'; + String get editMetadataAdvanced => 'Gelişmiş'; @override String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; @@ -4391,13 +4392,13 @@ class AppLocalizationsTr extends AppLocalizations { } @override - String get extensionHealthOnline => 'Online'; + String get extensionHealthOnline => 'Çevrimiçi'; @override String get extensionHealthDegraded => 'Degraded'; @override - String get extensionHealthOffline => 'Offline'; + String get extensionHealthOffline => 'Çevrimdışı'; @override String get extensionHealthNotConfigured => 'Not configured'; @@ -4406,7 +4407,7 @@ class AppLocalizationsTr extends AppLocalizations { String get extensionHealthUnknown => 'Unknown'; @override - String get extensionHealthRequired => 'required'; + String get extensionHealthRequired => 'gerekli'; @override String get extensionSettingNotSet => 'Not set'; @@ -4450,13 +4451,13 @@ class AppLocalizationsTr extends AppLocalizations { String get unknownArtist => 'Unknown Artist'; @override - String get permissionAudio => 'Audio'; + String get permissionAudio => 'Ses'; @override - String get permissionStorage => 'Storage'; + String get permissionStorage => 'Depolama'; @override - String get permissionNotification => 'Notification'; + String get permissionNotification => 'Bildirim'; @override String get errorInvalidFolderSelected => 'Invalid folder selected'; @@ -4484,7 +4485,7 @@ class AppLocalizationsTr extends AppLocalizations { String get storeCategoryIntegration => 'Integration'; @override - String get artistReleases => 'Releases'; + String get artistReleases => 'Sürümler'; @override String get editMetadataSelectNone => 'None'; diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart index 4f8fcd15..81f35e5e 100644 --- a/lib/l10n/app_localizations_uk.dart +++ b/lib/l10n/app_localizations_uk.dart @@ -1626,7 +1626,7 @@ class AppLocalizationsUk extends AppLocalizations { @override String get albumFolderStructureDescription => - 'Виберіть структуру папок альбомів'; + 'Choose how album folders are structured'; @override String get downloadUseAlbumArtistForFolders => diff --git a/lib/l10n/app_localizations_zh.dart b/lib/l10n/app_localizations_zh.dart index a62d4389..c4b43f32 100644 --- a/lib/l10n/app_localizations_zh.dart +++ b/lib/l10n/app_localizations_zh.dart @@ -4811,7 +4811,7 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { AppLocalizationsZhCn() : super('zh_CN'); @override - String get appName => 'SpotiFLAC Mobile'; + String get appName => 'SpotiFLAC 移动版'; @override String get navHome => '主页'; @@ -4940,8 +4940,7 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsDefaultSearchTabSubtitle => '选择新搜索结果首先打开的标签页。'; @override - String get optionsSwitchBack => - 'Choose the default search provider to switch back from an extension'; + String get optionsSwitchBack => '选择要从扩展中返回的默认搜索服务器'; @override String get optionsAutoFallback => '自动回退'; @@ -4953,12 +4952,10 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsUseExtensionProviders => '使用扩展提供商'; @override - String get optionsUseExtensionProvidersOn => - 'Extension providers are enabled'; + String get optionsUseExtensionProvidersOn => '扩展提供商已启用'; @override - String get optionsUseExtensionProvidersOff => - 'Extension providers are required'; + String get optionsUseExtensionProvidersOff => '需要扩展提供商'; @override String get optionsEmbedLyrics => '内嵌歌词'; @@ -4973,7 +4970,7 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get optionsMaxQualityCoverSubtitle => '下载最高分辨率封面'; @override - String get optionsReplayGain => 'ReplayGain'; + String get optionsReplayGain => '回放增益'; @override String get optionsReplayGainSubtitleOn => '扫描响度并嵌入 ReplayGain 标签(EBU R128)'; @@ -4981,32 +4978,67 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get optionsReplayGainSubtitleOff => '已禁用:不添加响度标准化标签'; + @override + String get trackReplayGain => '重新扫描ReplayGain '; + + @override + String get trackReplayGainSubtitle => '分析响度并写入ReplayGain标签'; + + @override + String get trackReplayGainScanning => '正在分析声音……'; + + @override + String get trackReplayGainSuccess => 'ReplayGain标签已添加'; + + @override + String get trackReplayGainFailed => '添加ReplayGain标签失败'; + + @override + String selectionReplayGainCount(int count) { + return 'ReplayGain ($count)'; + } + + @override + String get replayGainBatchConfirmTitle => '添加ReplayGain'; + + @override + String replayGainBatchConfirmMessage(int count) { + return '要分析响度并向 $count 首歌曲写入 ReplayGain 标签吗?'; + } + + @override + String get replayGainBatchAnalyzing => '正在分析ReplayGain...'; + + @override + String replayGainBatchSuccess(int success, int total) { + return '已为 $success/$total 首歌曲添加 ReplayGain'; + } + @override String get optionsArtistTagMode => '艺术家标签模式'; @override - String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; + String get optionsArtistTagModeDescription => '选择将多位艺人写入嵌入标签的方式'; @override - String get optionsArtistTagModeJoined => 'Single joined value'; + String get optionsArtistTagModeJoined => '合并为单个值'; @override String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; + '写一个ARTIST 值,如“艺术家A,艺人B”,以实现最大兼容性。'; @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; + String get optionsArtistTagModeSplitVorbis => '用于 FLAC/Opus 的拆分标签'; @override String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; + '为 FLAC 和 Opus 的每位艺人各写入一个艺人标签;MP3 和 M4A 保持合并'; @override - String get optionsExtensionStore => 'Extension Repo'; + String get optionsExtensionStore => '扩展仓库'; @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; + String get optionsExtensionStoreSubtitle => '在导航中显示仓库标签页'; @override String get optionsCheckUpdates => '检查更新'; @@ -5080,7 +5112,7 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get extensionsUninstall => '卸载'; @override - String get storeTitle => 'Extension Repo'; + String get storeTitle => '扩展仓库地址'; @override String get storeSearch => '搜索扩展……'; @@ -5125,7 +5157,7 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get aboutPCSource => '桌面版本源代码'; @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; + String get aboutKeepAndroidOpen => 'Keep Android Open(保持安卓开放)'; @override String get aboutReportIssue => '报告一个问题'; @@ -5134,160 +5166,151 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get aboutReportIssueSubtitle => '报告您遇到的任何问题'; @override - String get aboutFeatureRequest => 'Feature request'; + String get aboutFeatureRequest => '功能建议'; @override - String get aboutFeatureRequestSubtitle => 'Suggest new features for the app'; + String get aboutFeatureRequestSubtitle => '为应用建议新功能'; @override - String get aboutTelegramChannel => 'Telegram Channel'; + String get aboutTelegramChannel => 'Telegram 频道'; @override - String get aboutTelegramChannelSubtitle => 'Announcements and updates'; + String get aboutTelegramChannelSubtitle => '公告和更新'; @override - String get aboutTelegramChat => 'Telegram Community'; + String get aboutTelegramChat => 'Telegram 社区'; @override - String get aboutTelegramChatSubtitle => 'Chat with other users'; + String get aboutTelegramChatSubtitle => '与其他用户聊天'; @override - String get aboutSocial => 'Social'; + String get aboutSocial => '社交'; @override String get aboutApp => 'App'; @override - String get aboutVersion => 'Version'; + String get aboutVersion => '版本'; @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; + String get aboutBinimumDesc => 'QQDL 和 HiFi API 的创建者。本项目帮助完善了无损下载支持。'; @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; + String get aboutSachinsenalDesc => '原 HiFi 项目创建者,为无损来源集成奠定了基础。'; @override String get aboutSjdonadoDesc => - 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; + 'I Don\'t Have Spotify (IDHS) 的创建者。备用链接解析器很有帮助!'; @override - String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; + String get aboutAppDescription => '搜索音乐元数据、管理扩展并整理你的乐库。'; @override - String get artistAlbums => 'Albums'; + String get artistAlbums => '专辑'; @override - String get artistSingles => 'Singles & EPs'; + String get artistSingles => '单曲 & EP'; @override - String get artistCompilations => 'Compilations'; + String get artistCompilations => '合辑'; @override - String get artistPopular => 'Popular'; + String get artistPopular => '热门'; @override String artistMonthlyListeners(String count) { - return '$count monthly listeners'; + return '$count 位月听众'; } @override - String get trackMetadataService => 'Service'; + String get trackMetadataService => '服务商'; @override - String get trackMetadataPlay => 'Play'; + String get trackMetadataPlay => '播放'; @override - String get trackMetadataShare => 'Share'; + String get trackMetadataShare => '分享'; @override - String get trackMetadataDelete => 'Delete'; + String get trackMetadataDelete => '删除'; @override - String get setupGrantPermission => 'Grant Permission'; + String get setupGrantPermission => '授予权限'; @override - String get setupSkip => 'Skip for now'; + String get setupSkip => '暂时跳过'; @override - String get setupStorageAccessRequired => 'Storage Access Required'; + String get setupStorageAccessRequired => '需要存储访问权限'; @override String get setupStorageAccessMessageAndroid11 => - 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; + 'Android 11+ 需要“所有文件访问权限”才能将文件保存到你选择的下载文件夹。'; @override - String get setupOpenSettings => 'Open Settings'; + String get setupOpenSettings => '打开设置'; @override - String get setupPermissionDeniedMessage => - 'Permission denied. Please grant all permissions to continue.'; + String get setupPermissionDeniedMessage => '权限被拒绝。请授予所有权限以继续。'; @override String setupPermissionRequired(String permissionType) { - return '$permissionType Permission Required'; + return '需要 $permissionType 权限'; } @override String setupPermissionRequiredMessage(String permissionType) { - return '$permissionType permission is required for the best experience. You can change this later in Settings.'; + return '为了获得最佳体验,需要 $permissionType 权限。你可以稍后在设置中更改。'; } @override - String get setupUseDefaultFolder => 'Use Default Folder?'; + String get setupUseDefaultFolder => '使用默认文件夹?'; @override - String get setupNoFolderSelected => - 'No folder selected. Would you like to use the default Music folder?'; + String get setupNoFolderSelected => '未选择文件夹。要使用默认音乐文件夹吗?'; @override - String get setupUseDefault => 'Use Default'; + String get setupUseDefault => '使用默认'; @override - String get setupDownloadLocationTitle => 'Download Location'; + String get setupDownloadLocationTitle => '下载位置'; @override String get setupDownloadLocationIosMessage => - 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; + '在 iOS 上,下载内容会保存到应用的 Documents 文件夹。你可以通过“文件”应用访问。'; @override - String get setupAppDocumentsFolder => 'App Documents Folder'; + String get setupAppDocumentsFolder => '应用程序文档文件夹'; @override - String get setupAppDocumentsFolderSubtitle => - 'Recommended - accessible via Files app'; + String get setupAppDocumentsFolderSubtitle => '推荐 - 可通过“文件”应用访问'; @override - String get setupChooseFromFiles => 'Choose from Files'; + String get setupChooseFromFiles => '从“文件”中选择'; @override - String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; + String get setupChooseFromFilesSubtitle => '选择 iCloud 或其他位置'; @override - String get setupIosEmptyFolderWarning => - 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; + String get setupIosEmptyFolderWarning => 'iOS 限制:无法选择空文件夹。请选择至少包含一个文件的文件夹。'; @override - String get setupIcloudNotSupported => - 'iCloud Drive is not supported. Please use the app Documents folder.'; + String get setupIcloudNotSupported => '不支持 iCloud Drive。请使用应用 Documents 文件夹。'; @override - String get setupDownloadInFlac => 'Download Spotify tracks in FLAC'; + String get setupDownloadInFlac => '以 FLAC 下载 Spotify 曲目'; @override - String get setupStorageGranted => 'Storage Permission Granted!'; + String get setupStorageGranted => '已授予存储权限!'; @override - String get setupStorageRequired => 'Storage Permission Required'; + String get setupStorageRequired => '需要存储权限'; @override - String get setupStorageDescription => - 'SpotiFLAC needs storage permission to save your downloaded music files.'; + String get setupStorageDescription => 'SpotiFLAC 需要存储权限来保存下载的音乐文件。'; @override - String get setupNotificationGranted => 'Notification Permission Granted!'; + String get setupNotificationGranted => '已授予通知权限!'; @override String get setupNotificationEnable => '启用通知'; @@ -5306,173 +5329,177 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get setupNotificationBackgroundDescription => - 'Get notified about download progress and completion. This helps you track downloads when the app is in background.'; + '接收下载进度和完成通知,方便你在应用后台时跟踪下载。'; @override - String get setupSkipForNow => 'Skip for now'; + String get setupSkipForNow => '暂时跳过'; @override - String get setupNext => 'Next'; + String get setupNext => '下一步'; @override - String get setupGetStarted => 'Get Started'; + String get setupGetStarted => '开始使用'; @override - String get setupAllowAccessToManageFiles => - 'Please enable \"Allow access to manage all files\" in the next screen.'; + String get setupAllowAccessToManageFiles => '请在下一个屏幕中启用“允许管理所有文件”。'; @override - String get setupLanguageTitle => 'Choose Language'; + String get setupLanguageTitle => '选择语言'; @override - String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; + String get setupLanguageDescription => '选择应用的首选语言。你可以稍后在设置中更改。'; @override - String get setupLanguageSystemDefault => 'System Default'; + String get setupLanguageSystemDefault => '跟随系统'; @override - String get dialogCancel => 'Cancel'; + String get dialogCancel => '取消'; @override - String get dialogSave => 'Save'; + String get dialogSave => '保存'; @override - String get dialogDelete => 'Delete'; + String get dialogDelete => '删除'; @override - String get dialogRetry => 'Retry'; + String get dialogRetry => '重试'; @override - String get dialogClear => 'Clear'; + String get dialogClear => '清空'; @override - String get dialogDone => 'Done'; + String get dialogDone => '完成'; @override - String get dialogImport => 'Import'; + String get dialogImport => '导入'; @override - String get dialogDownload => 'Download'; + String get dialogDownload => '下载'; @override - String get dialogDiscard => 'Discard'; + String get previewPlay => 'Play preview'; @override - String get dialogRemove => 'Remove'; + String get previewStop => 'Stop preview'; @override - String get dialogUninstall => 'Uninstall'; + String get previewUnavailable => 'Preview unavailable'; @override - String get dialogDiscardChanges => 'Discard Changes?'; + String get dialogDiscard => '放弃'; @override - String get dialogUnsavedChanges => - 'You have unsaved changes. Do you want to discard them?'; + String get dialogRemove => '移除'; @override - String get dialogClearAll => 'Clear All'; + String get dialogUninstall => '卸载'; @override - String get dialogRemoveExtension => 'Remove Extension'; + String get dialogDiscardChanges => '放弃更改?'; @override - String get dialogRemoveExtensionMessage => - 'Are you sure you want to remove this extension? This cannot be undone.'; + String get dialogUnsavedChanges => '您有未保存的更改,要放弃它们吗?'; @override - String get dialogUninstallExtension => 'Uninstall Extension?'; + String get dialogClearAll => '全部清除'; + + @override + String get dialogRemoveExtension => '移除扩展'; + + @override + String get dialogRemoveExtensionMessage => '确定要移除此扩展吗?此操作无法撤销。'; + + @override + String get dialogUninstallExtension => '卸载扩展?'; @override String dialogUninstallExtensionMessage(String extensionName) { - return 'Are you sure you want to remove $extensionName?'; + return '确定要移除 $extensionName 吗?'; } @override - String get dialogClearHistoryTitle => 'Clear History'; + String get dialogClearHistoryTitle => '清除历史'; @override - String get dialogClearHistoryMessage => - 'Are you sure you want to clear all download history? This cannot be undone.'; + String get dialogClearHistoryMessage => '您确定要清除所有下载记录吗?此操作无法撤销!'; @override - String get dialogDeleteSelectedTitle => 'Delete Selected'; + String get dialogDeleteSelectedTitle => '删除所选项'; @override String dialogDeleteSelectedMessage(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '首歌曲', + one: '首歌曲', ); - return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; + return '确定要从历史记录中删除 $count $_temp0吗?\n\n这也会从存储中删除文件。'; } @override - String get dialogImportPlaylistTitle => 'Import Playlist'; + String get dialogImportPlaylistTitle => '导入播放列表'; @override String dialogImportPlaylistMessage(int count) { - return 'Found $count tracks in CSV. Add them to download queue?'; + return '在 CSV 中找到 $count 首歌曲。要将它们加入下载队列吗?'; } @override String csvImportTracks(int count) { - return '$count tracks from CSV'; + return 'CSV 中的 $count 首歌曲'; } @override String snackbarAddedToQueue(String trackName) { - return 'Added \"$trackName\" to queue'; + return '已将“$trackName”加入队列'; } @override String snackbarAddedTracksToQueue(int count) { - return 'Added $count tracks to queue'; + return '已将 $count 首歌曲加入队列'; } @override String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" already downloaded'; + return '“$trackName”已下载'; } @override String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" already exists in your library'; + return '“$trackName”已存在于你的乐库中'; } @override - String get snackbarHistoryCleared => 'History cleared'; + String get snackbarHistoryCleared => '历史记录已清除'; @override - String get snackbarCredentialsSaved => 'Credentials saved'; + String get snackbarCredentialsSaved => '凭据已保存'; @override - String get snackbarCredentialsCleared => 'Credentials cleared'; + String get snackbarCredentialsCleared => '凭据已清除'; @override String snackbarDeletedTracks(int count) { String _temp0 = intl.Intl.pluralLogic( count, locale: localeName, - other: 'tracks', - one: 'track', + other: '首歌曲', + one: '首歌曲', ); - return 'Deleted $count $_temp0'; + return '已删除 $count $_temp0'; } @override String snackbarCannotOpenFile(String error) { - return 'Cannot open file: $error'; + return '无法打开文件:$error'; } @override - String get snackbarFillAllFields => 'Please fill all fields'; + String get snackbarFillAllFields => '请填写所有字段'; @override - String get snackbarViewQueue => 'View Queue'; + String get snackbarViewQueue => '查看队列'; @override String snackbarUrlCopied(String platform) { @@ -7613,6 +7640,10 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get lyricsProviderQqMusicDesc => 'QQ Music (good for Chinese songs, via proxy)'; + @override + String get lyricsProviderLyricsPlusDesc => + 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; + @override String get lyricsProviderExtensionDesc => 'Extension provider'; @@ -7636,6 +7667,164 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { @override String get settingsDonateSubtitle => 'Buy the developer a coffee'; + @override + String get settingsBackup => 'Backup & Restore'; + + @override + String get settingsBackupSubtitle => + 'Move your library, history and settings to a new device'; + + @override + String get backupTitle => 'Backup & Restore'; + + @override + String get backupExportSectionTitle => 'Create backup'; + + @override + String get 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.'; + + @override + String get backupExportButton => 'Create backup file'; + + @override + String get backupImportSectionTitle => 'Restore backup'; + + @override + String get backupImportSectionDescription => + 'Pick a backup file to restore your data. This replaces the current settings, history and library on this device.'; + + @override + String get backupImportButton => 'Choose backup file'; + + @override + String get backupCreating => 'Creating backup...'; + + @override + String get backupCreated => 'Backup created'; + + @override + String get backupCreateFailed => 'Failed to create backup'; + + @override + String get backupEmpty => 'There is nothing to back up yet'; + + @override + String get backupRestoreConfirmTitle => 'Restore this backup?'; + + @override + String get backupRestoreConfirmMessage => + 'This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.'; + + @override + String get backupRestoreConfirmButton => 'Restore'; + + @override + String get backupRestoring => 'Restoring backup...'; + + @override + String get backupRestored => 'Backup restored successfully'; + + @override + String get backupRestoreFailed => 'Failed to restore backup'; + + @override + String get backupInvalidFile => 'This file is not a valid SpotiFLAC backup'; + + @override + String get backupRestoreRestartHint => + 'Restart the app to make sure every change is applied.'; + + @override + String get backupContentsTitle => 'Backup contents'; + + @override + String get backupContentsSettings => 'App settings'; + + @override + String backupContentsHistory(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'items', + one: 'item', + ); + return '$count history $_temp0'; + } + + @override + String backupContentsLiked(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count liked $_temp0'; + } + + @override + String backupContentsWishlist(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count wishlist $_temp0'; + } + + @override + String backupContentsPlaylists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count playlists', + one: '1 playlist', + ); + return '$_temp0'; + } + + @override + String backupContentsArtists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count favorite artists', + one: '1 favorite artist', + ); + return '$_temp0'; + } + + @override + String backupContentsExtensions(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count extensions', + one: '1 extension', + ); + return '$_temp0'; + } + + @override + String get backupIncludeSecrets => 'Include extension credentials'; + + @override + String get 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.'; + + @override + String backupExtensionsRestoreFailed(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'extensions', + one: 'extension', + ); + return '$count $_temp0 could not be reinstalled. Install them manually from the store.'; + } + @override String get tooltipLoveAll => 'Love All'; @@ -7765,6 +7954,17 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String get downloadNetworkCompatibilityModeDisabled => 'Using standard network settings'; + @override + String get downloadAllowLocalNetwork => 'Allow Local Network Access'; + + @override + String get downloadAllowLocalNetworkEnabled => + 'Requests to local/private addresses are allowed (for local proxy or custom DNS)'; + + @override + String get downloadAllowLocalNetworkDisabled => + 'Local/private addresses are blocked for security'; + @override String get downloadSelectServiceToEnable => 'Select a provider with quality options to enable this option'; @@ -9025,6 +9225,320 @@ class AppLocalizationsZhCn extends AppLocalizationsZh { String shareSheetLinkCopied(Object service) { return '$service link copied'; } + + @override + String get libraryPlayback => 'Playback'; + + @override + String get libraryExternalPlayer => 'External player'; + + @override + String get libraryExternalPlayerSubtitle => + 'Recommended for listening, best quality, gapless playback, EQ, and wider format support'; + + @override + String get libraryBuiltInPreviewPlayer => 'Built-in preview player'; + + @override + String get libraryBuiltInPreviewPlayerSubtitle => + 'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'; + + @override + String get libraryBuiltInPlayerInfo => + 'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'; + + @override + String get nowPlayingTitle => 'Now Playing'; + + @override + String get nowPlayingNothingPlaying => 'Nothing is playing'; + + @override + String get nowPlayingMinimize => 'Minimize'; + + @override + String get nowPlayingUpNext => 'Up next'; + + @override + String get nowPlayingDetails => 'Details'; + + @override + String get nowPlayingOpenInExternalPlayer => 'Open in external player'; + + @override + String get nowPlayingTabPlayer => 'Player'; + + @override + String get nowPlayingTabLyrics => 'Lyrics'; + + @override + String get nowPlayingNoLyrics => 'No lyrics in this file'; + + @override + String get nowPlayingLibraryEmpty => 'Your library is empty'; + + @override + String nowPlayingShuffleLibraryFailed(String error) { + return 'Could not shuffle library: $error'; + } + + @override + String get nowPlayingShuffleOn => 'Shuffle on'; + + @override + String get nowPlayingPlayInOrder => 'Play in order'; + + @override + String get nowPlayingShuffleLibrary => 'Shuffle library'; + + @override + String get nowPlayingQueueEmpty => 'Queue is empty'; + + @override + String get nowPlayingNoMetadata => 'No metadata available'; + + @override + String get announcementUnableToOpenLink => + 'Unable to open link. Please try again.'; + + @override + String trackConvertLosslessOutputWithCap(String quality) { + return 'Lossless output with $quality cap'; + } + + @override + String trackConvertConfirmMessageLosslessCapped( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '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.'; + } + + @override + String selectionBatchConvertConfirmMessageLosslessCapped( + int count, + String format, + String quality, + ) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return 'Convert $count $_temp0 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.'; + } + + @override + String trackConvertActionLabelLossless( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '$sourceFormat → $targetFormat ($quality)'; + } + + @override + String trackConvertActionLabelLossy( + String sourceFormat, + String targetFormat, + String bitrate, + ) { + return '$sourceFormat → $targetFormat @ $bitrate'; + } + + @override + String get aboutPaxsenixSubtitle => + 'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'; + + @override + String get snackbarPlayingNext => 'Playing next'; + + @override + String get snackbarAddedToQueueGeneric => 'Added to queue'; + + @override + String selectionDeletePlaylistsCount(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'playlists', + one: 'playlist', + ); + return 'Delete $count $_temp0'; + } + + @override + String get actionShuffle => 'Shuffle'; + + @override + String get downloadPrimaryArtistOnlyOn => 'Primary only: On'; + + @override + String get downloadPrimaryArtistOnlyOff => 'Primary only: Off'; + + @override + String get downloadAlbumArtistMetadataPrimaryOnly => + 'Album Artist metadata: Primary only'; + + @override + String get downloadAlbumArtistMetadataFull => 'Album Artist metadata: Full'; + + @override + String get trackConvertOriginal => 'Original'; + + @override + String get trackConvertOriginalQuality => 'Original quality'; + + @override + String get trackConvertLosslessSuffix => 'Lossless'; + + @override + String get trackConvertDithering => 'Dithering'; + + @override + String get trackConvertResampler => 'Resampler'; + + @override + String get trackConvertDitherNone => 'None'; + + @override + String get trackConvertDitherTriangular => 'TPDF'; + + @override + String get trackConvertDitherTriangularHp => 'Triangular HP'; + + @override + String get trackConvertResamplerSwr => 'SWR'; + + @override + String get trackConvertResamplerSoxr => 'SoXr'; + + @override + String get updateSeeReleaseNotes => 'See release notes for details.'; + + @override + String get unknownTitle => 'Unknown title'; + + @override + String get trackPlayNext => 'Play next'; + + @override + String get trackAddToQueue => 'Add to queue'; + + @override + String snackbarExtensionInstalledEnable(String extensionName) { + return '$extensionName installed. Enable it in Settings > Extensions'; + } + + @override + String snackbarExtensionUpdatedVersion(String extensionName, String version) { + return '$extensionName updated to v$version'; + } + + @override + String snackbarFailedToInstallNamed(String extensionName) { + return 'Failed to install $extensionName'; + } + + @override + String snackbarFailedToUpdateNamed(String extensionName) { + return 'Failed to update $extensionName'; + } + + @override + String get releaseTypeEp => 'EP'; + + @override + String get releaseTypeSingle => 'Single'; + + @override + String get trackCoverOnline => 'Online cover'; + + @override + String get regionCountryUS => 'United States'; + + @override + String get regionCountryGB => 'United Kingdom'; + + @override + String get regionCountryFR => 'France'; + + @override + String get regionCountryDE => 'Germany'; + + @override + String get regionCountryJP => 'Japan'; + + @override + String get regionCountryKR => 'South Korea'; + + @override + String get regionCountryIN => 'India'; + + @override + String get regionCountryID => 'Indonesia'; + + @override + String get regionCountryBR => 'Brazil'; + + @override + String get regionCountryMX => 'Mexico'; + + @override + String get regionCountryAU => 'Australia'; + + @override + String get regionCountryCA => 'Canada'; + + @override + String get regionCountryXK => 'Kosovo'; + + @override + String get extensionVerificationBrowserTitle => 'Verification browser'; + + @override + String get extensionVerificationBrowserSubtitleExternal => + 'Open challenges in the default browser first'; + + @override + String get extensionVerificationBrowserSubtitleInApp => + 'Open challenges in the in-app browser first'; + + @override + String get extensionVerificationBrowserExternal => 'External'; + + @override + String get extensionVerificationBrowserInApp => 'In-app'; + + @override + String get extensionVerificationHelpTitleManual => + 'Open verification manually'; + + @override + String get extensionVerificationHelpTitleWaiting => + 'Verification still waiting'; + + @override + String get extensionVerificationHelpMessageManual => + 'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'; + + @override + String get 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.'; + + @override + String get extensionVerificationClose => 'Close'; + + @override + String get extensionVerificationCopyLink => 'Copy link'; + + @override + String get extensionVerificationLinkCopied => 'Verification link copied'; + + @override + String get extensionVerificationOpenBrowser => 'Open browser'; } /// The translations for Chinese, as used in Taiwan (`zh_TW`). @@ -9210,6 +9724,43 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get optionsReplayGainSubtitleOff => 'Disabled: no loudness normalization tags'; + @override + String get trackReplayGain => 'Rescan ReplayGain'; + + @override + String get trackReplayGainSubtitle => + 'Analyze loudness and write ReplayGain tags'; + + @override + String get trackReplayGainScanning => 'Analyzing loudness...'; + + @override + String get trackReplayGainSuccess => 'ReplayGain tags added'; + + @override + String get trackReplayGainFailed => 'Failed to add ReplayGain tags'; + + @override + String selectionReplayGainCount(int count) { + return 'ReplayGain ($count)'; + } + + @override + String get replayGainBatchConfirmTitle => 'Add ReplayGain'; + + @override + String replayGainBatchConfirmMessage(int count) { + return 'Analyze loudness and write ReplayGain tags to $count track(s)?'; + } + + @override + String get replayGainBatchAnalyzing => 'Analyzing ReplayGain...'; + + @override + String replayGainBatchSuccess(int success, int total) { + return 'ReplayGain added to $success of $total tracks'; + } + @override String get optionsArtistTagMode => 'Artist Tag Mode'; @@ -9589,6 +10140,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get dialogDownload => 'Download'; + @override + String get previewPlay => 'Play preview'; + + @override + String get previewStop => 'Stop preview'; + + @override + String get previewUnavailable => 'Preview unavailable'; + @override String get dialogDiscard => 'Discard'; @@ -11848,6 +12408,10 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get lyricsProviderQqMusicDesc => 'QQ Music (good for Chinese songs, via proxy)'; + @override + String get lyricsProviderLyricsPlusDesc => + 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; + @override String get lyricsProviderExtensionDesc => 'Extension provider'; @@ -11871,6 +12435,164 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { @override String get settingsDonateSubtitle => 'Buy the developer a coffee'; + @override + String get settingsBackup => 'Backup & Restore'; + + @override + String get settingsBackupSubtitle => + 'Move your library, history and settings to a new device'; + + @override + String get backupTitle => 'Backup & Restore'; + + @override + String get backupExportSectionTitle => 'Create backup'; + + @override + String get 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.'; + + @override + String get backupExportButton => 'Create backup file'; + + @override + String get backupImportSectionTitle => 'Restore backup'; + + @override + String get backupImportSectionDescription => + 'Pick a backup file to restore your data. This replaces the current settings, history and library on this device.'; + + @override + String get backupImportButton => 'Choose backup file'; + + @override + String get backupCreating => 'Creating backup...'; + + @override + String get backupCreated => 'Backup created'; + + @override + String get backupCreateFailed => 'Failed to create backup'; + + @override + String get backupEmpty => 'There is nothing to back up yet'; + + @override + String get backupRestoreConfirmTitle => 'Restore this backup?'; + + @override + String get backupRestoreConfirmMessage => + 'This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.'; + + @override + String get backupRestoreConfirmButton => 'Restore'; + + @override + String get backupRestoring => 'Restoring backup...'; + + @override + String get backupRestored => 'Backup restored successfully'; + + @override + String get backupRestoreFailed => 'Failed to restore backup'; + + @override + String get backupInvalidFile => 'This file is not a valid SpotiFLAC backup'; + + @override + String get backupRestoreRestartHint => + 'Restart the app to make sure every change is applied.'; + + @override + String get backupContentsTitle => 'Backup contents'; + + @override + String get backupContentsSettings => 'App settings'; + + @override + String backupContentsHistory(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'items', + one: 'item', + ); + return '$count history $_temp0'; + } + + @override + String backupContentsLiked(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count liked $_temp0'; + } + + @override + String backupContentsWishlist(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return '$count wishlist $_temp0'; + } + + @override + String backupContentsPlaylists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count playlists', + one: '1 playlist', + ); + return '$_temp0'; + } + + @override + String backupContentsArtists(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count favorite artists', + one: '1 favorite artist', + ); + return '$_temp0'; + } + + @override + String backupContentsExtensions(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: '$count extensions', + one: '1 extension', + ); + return '$_temp0'; + } + + @override + String get backupIncludeSecrets => 'Include extension credentials'; + + @override + String get 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.'; + + @override + String backupExtensionsRestoreFailed(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'extensions', + one: 'extension', + ); + return '$count $_temp0 could not be reinstalled. Install them manually from the store.'; + } + @override String get tooltipLoveAll => 'Love All'; @@ -12000,6 +12722,17 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String get downloadNetworkCompatibilityModeDisabled => 'Using standard network settings'; + @override + String get downloadAllowLocalNetwork => 'Allow Local Network Access'; + + @override + String get downloadAllowLocalNetworkEnabled => + 'Requests to local/private addresses are allowed (for local proxy or custom DNS)'; + + @override + String get downloadAllowLocalNetworkDisabled => + 'Local/private addresses are blocked for security'; + @override String get downloadSelectServiceToEnable => 'Select a provider with quality options to enable this option'; @@ -13260,4 +13993,318 @@ class AppLocalizationsZhTw extends AppLocalizationsZh { String shareSheetLinkCopied(Object service) { return '$service link copied'; } + + @override + String get libraryPlayback => 'Playback'; + + @override + String get libraryExternalPlayer => 'External player'; + + @override + String get libraryExternalPlayerSubtitle => + 'Recommended for listening, best quality, gapless playback, EQ, and wider format support'; + + @override + String get libraryBuiltInPreviewPlayer => 'Built-in preview player'; + + @override + String get libraryBuiltInPreviewPlayerSubtitle => + 'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'; + + @override + String get libraryBuiltInPlayerInfo => + 'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'; + + @override + String get nowPlayingTitle => 'Now Playing'; + + @override + String get nowPlayingNothingPlaying => 'Nothing is playing'; + + @override + String get nowPlayingMinimize => 'Minimize'; + + @override + String get nowPlayingUpNext => 'Up next'; + + @override + String get nowPlayingDetails => 'Details'; + + @override + String get nowPlayingOpenInExternalPlayer => 'Open in external player'; + + @override + String get nowPlayingTabPlayer => 'Player'; + + @override + String get nowPlayingTabLyrics => 'Lyrics'; + + @override + String get nowPlayingNoLyrics => 'No lyrics in this file'; + + @override + String get nowPlayingLibraryEmpty => 'Your library is empty'; + + @override + String nowPlayingShuffleLibraryFailed(String error) { + return 'Could not shuffle library: $error'; + } + + @override + String get nowPlayingShuffleOn => 'Shuffle on'; + + @override + String get nowPlayingPlayInOrder => 'Play in order'; + + @override + String get nowPlayingShuffleLibrary => 'Shuffle library'; + + @override + String get nowPlayingQueueEmpty => 'Queue is empty'; + + @override + String get nowPlayingNoMetadata => 'No metadata available'; + + @override + String get announcementUnableToOpenLink => + 'Unable to open link. Please try again.'; + + @override + String trackConvertLosslessOutputWithCap(String quality) { + return 'Lossless output with $quality cap'; + } + + @override + String trackConvertConfirmMessageLosslessCapped( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '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.'; + } + + @override + String selectionBatchConvertConfirmMessageLosslessCapped( + int count, + String format, + String quality, + ) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'tracks', + one: 'track', + ); + return 'Convert $count $_temp0 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.'; + } + + @override + String trackConvertActionLabelLossless( + String sourceFormat, + String targetFormat, + String quality, + ) { + return '$sourceFormat → $targetFormat ($quality)'; + } + + @override + String trackConvertActionLabelLossy( + String sourceFormat, + String targetFormat, + String bitrate, + ) { + return '$sourceFormat → $targetFormat @ $bitrate'; + } + + @override + String get aboutPaxsenixSubtitle => + 'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'; + + @override + String get snackbarPlayingNext => 'Playing next'; + + @override + String get snackbarAddedToQueueGeneric => 'Added to queue'; + + @override + String selectionDeletePlaylistsCount(int count) { + String _temp0 = intl.Intl.pluralLogic( + count, + locale: localeName, + other: 'playlists', + one: 'playlist', + ); + return 'Delete $count $_temp0'; + } + + @override + String get actionShuffle => 'Shuffle'; + + @override + String get downloadPrimaryArtistOnlyOn => 'Primary only: On'; + + @override + String get downloadPrimaryArtistOnlyOff => 'Primary only: Off'; + + @override + String get downloadAlbumArtistMetadataPrimaryOnly => + 'Album Artist metadata: Primary only'; + + @override + String get downloadAlbumArtistMetadataFull => 'Album Artist metadata: Full'; + + @override + String get trackConvertOriginal => 'Original'; + + @override + String get trackConvertOriginalQuality => 'Original quality'; + + @override + String get trackConvertLosslessSuffix => 'Lossless'; + + @override + String get trackConvertDithering => 'Dithering'; + + @override + String get trackConvertResampler => 'Resampler'; + + @override + String get trackConvertDitherNone => 'None'; + + @override + String get trackConvertDitherTriangular => 'TPDF'; + + @override + String get trackConvertDitherTriangularHp => 'Triangular HP'; + + @override + String get trackConvertResamplerSwr => 'SWR'; + + @override + String get trackConvertResamplerSoxr => 'SoXr'; + + @override + String get updateSeeReleaseNotes => 'See release notes for details.'; + + @override + String get unknownTitle => 'Unknown title'; + + @override + String get trackPlayNext => 'Play next'; + + @override + String get trackAddToQueue => 'Add to queue'; + + @override + String snackbarExtensionInstalledEnable(String extensionName) { + return '$extensionName installed. Enable it in Settings > Extensions'; + } + + @override + String snackbarExtensionUpdatedVersion(String extensionName, String version) { + return '$extensionName updated to v$version'; + } + + @override + String snackbarFailedToInstallNamed(String extensionName) { + return 'Failed to install $extensionName'; + } + + @override + String snackbarFailedToUpdateNamed(String extensionName) { + return 'Failed to update $extensionName'; + } + + @override + String get releaseTypeEp => 'EP'; + + @override + String get releaseTypeSingle => 'Single'; + + @override + String get trackCoverOnline => 'Online cover'; + + @override + String get regionCountryUS => 'United States'; + + @override + String get regionCountryGB => 'United Kingdom'; + + @override + String get regionCountryFR => 'France'; + + @override + String get regionCountryDE => 'Germany'; + + @override + String get regionCountryJP => 'Japan'; + + @override + String get regionCountryKR => 'South Korea'; + + @override + String get regionCountryIN => 'India'; + + @override + String get regionCountryID => 'Indonesia'; + + @override + String get regionCountryBR => 'Brazil'; + + @override + String get regionCountryMX => 'Mexico'; + + @override + String get regionCountryAU => 'Australia'; + + @override + String get regionCountryCA => 'Canada'; + + @override + String get regionCountryXK => 'Kosovo'; + + @override + String get extensionVerificationBrowserTitle => 'Verification browser'; + + @override + String get extensionVerificationBrowserSubtitleExternal => + 'Open challenges in the default browser first'; + + @override + String get extensionVerificationBrowserSubtitleInApp => + 'Open challenges in the in-app browser first'; + + @override + String get extensionVerificationBrowserExternal => 'External'; + + @override + String get extensionVerificationBrowserInApp => 'In-app'; + + @override + String get extensionVerificationHelpTitleManual => + 'Open verification manually'; + + @override + String get extensionVerificationHelpTitleWaiting => + 'Verification still waiting'; + + @override + String get extensionVerificationHelpMessageManual => + 'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'; + + @override + String get 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.'; + + @override + String get extensionVerificationClose => 'Close'; + + @override + String get extensionVerificationCopyLink => 'Copy link'; + + @override + String get extensionVerificationLinkCopied => 'Verification link copied'; + + @override + String get extensionVerificationOpenBrowser => 'Open browser'; } diff --git a/lib/l10n/arb/app_ar.arb b/lib/l10n/arb/app_ar.arb index 55316a27..5a008f36 100644 --- a/lib/l10n/arb/app_ar.arb +++ b/lib/l10n/arb/app_ar.arb @@ -1,2510 +1,31 @@ { "@@locale": "ar", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" - }, - "navHome": "Home", - "@navHome": { - "description": "Bottom navigation - Home tab" - }, - "navLibrary": "Library", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Settings", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Repo", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Home", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Paste a supported URL or search by name", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "Recent", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyFilterAll": "All", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Albums", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Singles", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historySearchHint": "Search history...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Settings", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "Download", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "Appearance", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "Options", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Extensions", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "About", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Download", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Show quality picker for each download", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Filename Format", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadSingleFilenameFormat": "Single Filename Format", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "downloadFolderOrganization": "Folder Organization", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Appearance", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "System", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Light", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Dark", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Dynamic Color", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Use colors from your wallpaper", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "History View", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "List", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Grid", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Options", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "Primary Provider", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Using extension: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsDefaultSearchTab": "Default Search Tab", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Auto Fallback", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Try other services if download fails", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Use Extension Providers", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Embed Lyrics", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "حفظ كلمات الأغاني المتزامنة جنبا إلى جنب مع المسارات التي تم تنزيلها", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "اختيار اعلى جودة للغلاف", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Download highest resolution cover art", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Artist Tag Mode", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Single joined value", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "optionsExtensionStore": "Extension Repo", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "Check for Updates", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "Notify when new version is available", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "optionsUpdateChannel": "Update Channel", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "optionsUpdateChannelStable": "Stable releases only", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "optionsUpdateChannelPreview": "Get preview releases", - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "optionsClearHistory": "Clear Download History", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "optionsClearHistorySubtitle": "Remove all downloaded tracks from history", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "optionsDetailedLogging": "Detailed Logging", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "optionsDetailedLoggingOn": "Detailed logs are being recorded", - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "optionsDetailedLoggingOff": "Enable for bug reports", - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "optionsSpotifyCredentials": "Spotify Credentials", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Required - tap to configure", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify requires your own API credentials. Get them free from developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Extensions", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Disabled", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Version {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "by {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Uninstall", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Extension Repo", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Search extensions...", - "@storeSearch": { - "description": "Store search placeholder" - }, - "storeInstall": "Install", - "@storeInstall": { - "description": "Install extension button" - }, - "storeInstalled": "Installed", - "@storeInstalled": { - "description": "Already installed badge" - }, - "storeUpdate": "Update", - "@storeUpdate": { - "description": "Update available button" - }, - "aboutTitle": "About", - "@aboutTitle": { - "description": "About page title" - }, - "aboutContributors": "Contributors", - "@aboutContributors": { - "description": "Section for contributors" - }, - "aboutMobileDeveloper": "Mobile version developer", - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "aboutOriginalCreator": "Creator of the original SpotiFLAC", - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "aboutLogoArtist": "The talented artist who created our beautiful app logo!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "aboutTranslators": "Translators", - "@aboutTranslators": { - "description": "Section for translators" - }, - "aboutSpecialThanks": "Special Thanks", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "aboutLinks": "Links", - "@aboutLinks": { - "description": "Section for external links" - }, - "aboutMobileSource": "Mobile source code", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "PC source code", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Report an issue", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Report any problems you encounter", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Feature request", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Suggest new features for the app", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Telegram Channel", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Announcements and updates", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Telegram Community", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Chat with other users", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Social", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "App", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Version", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Albums", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Singles & EPs", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Compilations", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Popular", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} monthly listeners", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "trackMetadataService": "Service", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "trackMetadataPlay": "Play", - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "trackMetadataShare": "Share", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "trackMetadataDelete": "Delete", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "setupGrantPermission": "Grant Permission", - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "setupSkip": "Skip for now", - "@setupSkip": { - "description": "Skip current step button" - }, - "setupStorageAccessRequired": "Storage Access Required", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Open Settings", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "{permissionType} Permission Required", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "{permissionType} permission is required for the best experience. You can change this later in Settings.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Use Default Folder?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Use Default", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Download Location", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "On iOS, downloads are saved to the app's Documents folder. You can access them via the Files app.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "App Documents Folder", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Choose from Files", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Select iCloud or other location", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Download Spotify tracks in FLAC", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStorageGranted": "Storage Permission Granted!", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "Storage Permission Required", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "SpotiFLAC needs storage permission to save your downloaded music files.", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "تم منح إذن الإشعارات!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "Enable Notifications", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupFolderChoose": "Choose Download Folder", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "Select a folder where your downloaded music will be saved.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupSelectFolder": "Select Folder", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupEnableNotifications": "Enable Notifications", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "Skip for now", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupNext": "Next", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Get Started", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "dialogCancel": "Cancel", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogSave": "Save", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "Delete", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "Retry", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClear": "Clear", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogDone": "Done", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "Import", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDownload": "Download", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "dialogDiscard": "Discard", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "Remove", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "Uninstall", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "Discard Changes?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogClearAll": "Clear All", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogRemoveExtension": "Remove Extension", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "Uninstall Extension?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "Clear History", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "Delete Selected", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Import Playlist", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", - "csvImportTracks": "{count} tracks from CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "Added \"{trackName}\" to queue", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAddedTracksToQueue": "Added {count} tracks to queue", - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAlreadyDownloaded": "\"{trackName}\" already downloaded", - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "History cleared", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "Credentials saved", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Credentials cleared", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Cannot open file: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Please fill all fields", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "View Queue", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "{platform} URL copied to clipboard", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "File not found", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Please select a .spotiflac-ext file", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Provider priority saved", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Metadata provider priority saved", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} installed.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarExtensionUpdated": "{extensionName} updated.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarFailedToInstall": "Failed to install extension", - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "snackbarFailedToUpdate": "Failed to update extension", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "errorRateLimited": "Rate Limited", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "Too many requests. Please wait a moment before searching again.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "No tracks found", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "errorUrlNotRecognized": "Link not recognized", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "This link is not supported. Make sure the URL is correct and a compatible extension is installed.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Failed to load content from this link. Please try again.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "Cannot load {item}: missing extension source", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Pause", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Resume", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Cancel", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Select All", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Deselect", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Remove Credentials", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Save Credentials", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} selected", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "All tracks selected", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Select tracks to delete", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Fetching metadata... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "Reading CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Songs", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Artists", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Albums", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Playlists", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Sort Results", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Default", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Title (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Title (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Artist (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Artist (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Duration (Shortest)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Duration (Longest)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Release Date (Oldest)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Release Date (Newest)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "Play", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Filename Format", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Show advanced tags", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Enable formatted tags for track padding and date patterns", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "No organization", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "By Playlist", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "By Artist", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "By Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Artist/Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Organize downloaded files into folders", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "All files in download folder", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Separate folder for each artist", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Separate folder for each album", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Update Available", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Later", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Starting download...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Download failed", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Failed to download update", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "A new version is ready", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Current", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "New", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "Downloading...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "What's New", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "Download & Install", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Don't remind", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "Provider Priority", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerPriorityFallbackExtensionsTitle": "Extension Fallback", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Extension", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Metadata Priority", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "No rate limits", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "May rate limit", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Logs", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopied": "Logs copied to clipboard", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Search logs...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Level", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filter", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Share logs", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "Clear logs", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "Clear Logs", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" - }, - "logClearLogsMessage": "Are you sure you want to clear all logs?", - "@logClearLogsMessage": { - "description": "Clear logs confirmation message" - }, - "logFilterBySeverity": "Filter logs by severity", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "No logs yet", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Logs will appear here as you use the app", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "Entries ({count} filtered)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "Entries ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Spotify Credentials", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Client ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Paste Client ID", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Client Secret", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Paste Client Secret", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "channelStable": "Stable", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "channelPreview": "Preview", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "sectionSearchSource": "Search Source", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "sectionDownload": "Download", - "@sectionDownload": { - "description": "Settings section header" - }, - "sectionPerformance": "Performance", - "@sectionPerformance": { - "description": "Settings section header" - }, - "sectionApp": "App", - "@sectionApp": { - "description": "Settings section header" - }, - "sectionData": "Data", - "@sectionData": { - "description": "Settings section header" - }, - "sectionDebug": "Debug", - "@sectionDebug": { - "description": "Settings section header" - }, - "sectionService": "Service", - "@sectionService": { - "description": "Settings section header" - }, - "sectionAudioQuality": "Audio Quality", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "sectionFileSettings": "File Settings", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "sectionLyrics": "Lyrics", - "@sectionLyrics": { - "description": "Settings section header" - }, - "lyricsMode": "Lyrics Mode", - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "lyricsModeDescription": "Choose how lyrics are saved with your downloads", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "Embed in file", - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "lyricsModeEmbedSubtitle": "Lyrics stored inside FLAC metadata", - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "lyricsModeExternal": "External .lrc file", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "lyricsModeExternalSubtitle": "Separate .lrc file for players like Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "Both", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Embed and save .lrc file", - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "sectionColor": "Color", - "@sectionColor": { - "description": "Settings section header" - }, - "sectionTheme": "Theme", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Layout", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Language", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "App Language", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "settingsAppearanceSubtitle": "Theme, colors, display", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Manage download providers", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "View app logs for debugging", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Loading shared link...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Press back again to exit", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Download All ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Copy file path", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Remove from device", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Load Lyrics", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Metadata", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "File Info", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Lyrics", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "File not found", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Open in Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Open in Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Track name", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Artist", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Album artist", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Album", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Track number", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Disc number", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Duration", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Audio quality", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Release date", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Genre", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Copyright", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "Downloaded", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Copy lyrics", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "trackLyricsNotAvailable": "Lyrics not available for this track", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsNotInFile": "No lyrics found in this file", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Fetch from Online", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "trackLyricsTimeout": "Request timed out. Try again later.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Failed to load lyrics", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Embed Lyrics", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Lyrics embedded successfully", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Instrumental track", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "Copied to clipboard", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Remove from device?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "Today", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Yesterday", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "{count} days ago", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "{count} weeks ago", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "{count} months ago", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "All", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Metadata", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Download", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Utility", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Lyrics", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Integration", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Clear filters", - "@storeClearFilters": { - "description": "Button to clear all filters" - }, - "storeAddRepoTitle": "Add Extension Repository", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "Repository URL", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Add Repository", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Change repository", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Extension Repository", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Current repository:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "New Repository URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Failed to load repository", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "No extensions found", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Author", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Error", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Capabilities", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Metadata Provider", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Download Provider", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Lyrics Provider", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "URL Handler", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Quality Options", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Post-Processing Hooks", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Permissions", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Settings", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Remove Extension", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Updated", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Min App Version", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Custom Track Matching", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Post-Processing", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} hook(s) available", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionPatternsCount": "{count} pattern(s)", - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionStrategy": "Strategy: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "extensionsProviderPrioritySection": "Provider Priority", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Installed Extensions", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "No extensions installed", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Install .spotiflac-ext files to add new providers", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Install Extension", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Extensions can add new metadata and download providers. Only install extensions from trusted sources.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "Extension installed successfully", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "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": "Download Priority", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Set download service order", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "No extensions with download provider", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Metadata Priority", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Set search & metadata source order", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "No extensions with metadata provider", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Search Provider", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "No extensions with custom search", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Custom search", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Error loading extension", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Lossless", - "@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-bit / up to 96kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / up to 192kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Lossy Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Lossy 320kbps Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "Actual quality depends on track availability from the service", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Ask Before Download", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Download Directory", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Separate Singles Folder", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Album Folder Structure", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Choose how album folders are structured", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Select Quality", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Download From", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "AMOLED Dark", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Pure black background", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Clear All", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Are you sure you want to clear all downloads?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Auto-export failed downloads", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Download Network", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "WiFi + Mobile Data", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "WiFi Only", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Artist / Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Albums/Artist Name/Album Name/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Artist / [Year] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Artist Name/[2005] Album Name/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Album Only", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Albums/Album Name/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Year] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Albums/[2005] Album Name/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Artist / Album + Singles", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Delete Selected", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} selected", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "All tracks selected", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Tap tracks to select", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Select tracks to delete", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "recentTypeArtist": "Artist", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Album", - "@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" - }, - "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" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "libraryFolderHint": "Tap to select folder", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" + "logClearLogsMessage": "هل أنت متأكد من رغبتك في مسح جميع السجلات؟", + "@logClearLogsMessage": { + "description": "Clear logs confirmation message" }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" + "@storeClearFilters": { + "description": "Button to clear all filters" }, - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" + "cacheCleanupUnused": "Cleanup unused data", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Every app open", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Weekly", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Scan Library", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Scan for audio files", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Clear Library", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Clear Library", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "About Local Library", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": { - "description": "Description of local library feature" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", "@libraryTracksUnit": { @@ -2515,1069 +36,59 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "folderOrganizationNone": "لا توجد منظمة", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScanned": "Last scanned: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "In Library", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Selected folder does not exist", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Local", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "All", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Downloaded", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Local", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filters", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Lossy", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterMetadata": "Metadata", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Missing year", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "libraryFilterSort": "Sort", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "timeJustNow": "Just now", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Finding Music", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "There are two easy ways to find music you want to download.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Downloading Music", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Your Library", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "View download progress and queue in the Library tab", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Tap any track to play it with your music player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Switch between list and grid view for better browsing", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Add new download providers or search sources", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Set default audio quality and format preferences", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Force Full Scan", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Storage & Cache", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "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" - }, - "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" - }, - "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "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" - }, - "trackReEnrichFieldsTitle": "Fields to update", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "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" - }, - "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" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@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" - } - } - }, - "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "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" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "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" - } - } - }, - "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" - }, - "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "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", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "Split CUE Album", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "Off", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "اختر إضافات التحميل المثبتة التي يمكن استخدامها أثناء الرجوع التلقائي للمزود الاحتياطي.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "Split into {count} tracks successfully", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "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" - }, - "collectionPlaylists": "Playlists", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "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" - }, - "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "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": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Playlist created", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "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" - }, - "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist deleted", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "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" - }, - "collectionRemoved": "\"{trackName}\" removed", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "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", @@ -3587,42 +98,102 @@ } } }, - "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", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "No convertible tracks selected", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Batch Convert", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "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", + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "Song", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "مشاركة السجلات", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "تثبيت الإضافة", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "تمت إضافة وسوم ReplyGain ل {success} أغنية من أصل {total}", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "لا توجد إضافات مثبتة", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "CUE split failed", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "ألصق عنوان URL مدعوم أو ابحث بالاسم", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "selectionBatchConvertConfirmMessageLossless": "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", @@ -3635,18 +206,297 @@ } } }, - "selectionBatchConvertProgress": "Converting {current} of {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "تاريخ الإصدار (الأقدم)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "منشئ ل I Don't Have Spotify (IHDS). محلل الروابط الذي ينقذ اليوم!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "اللون", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Cover image cache", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Split CUE Album", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Cleared: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "الرجاء تحديد ملف .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, + "optionsExtensionStore": "مستودع الإضافات", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "Singles & EPs Only", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "قناة تيليجرام", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "روابط المعالجة اللاحقة", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "التحميل", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "حذف المحدد", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3662,987 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "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, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music 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" - }, - "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": { "type": "String" } } }, - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "No tracks found for this album", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "الثيم", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "@downloadLocationSubtitle": { - "description": "Subtitle shown in the download location picker sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "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" - }, - "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": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is on" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode 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" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Legacy info shown when a provider does not expose quality options" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle when lyrics embedding is blocked by metadata toggle" - }, - "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" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting for Musixmatch lyrics translation language" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Subtitle when no language is set" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Setting to strip contributing artists from Album Artist folder name" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is on" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is off" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "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": "Select fields to fill automatically from online metadata", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "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" - } - } - }, - "queueDownloadedHeader": "Downloaded", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Search with {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "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" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Cancel download?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Keep", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "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", + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Failed to load album", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Failed to load playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "لم يتم العثور على الأغنية", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Failed to load artist", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "أولوية مقدم الخدمة", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Download Progress", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Shows download progress for tracks", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Library Scan", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Shows local library scan progress", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "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" - } - } - }, - "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", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "حذف من الجهاز؟", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4657,36 +653,1931 @@ } } }, - "notifUpdateReady": "Update Ready", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "الفنانين المتميزين الذين تمت إزالتهم من اسم المجلد (على سبيل المثال جاستين بيبر، كويفو -> جاستين بيبر)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" + }, + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "setupGetStarted": "إبدأ الآن", + "@setupGetStarted": { + "description": "Final setup button" + }, + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" + }, + "sectionLayout": "التخطيط", + "@sectionLayout": { + "description": "Settings section header" + }, + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" + }, + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" + }, + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "version": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, - "notifUpdateFailed": "Update Failed", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" + "extensionsMetadataPriority": "أولوية البيانات الوصفية (metadata)", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" }, - "notifUpdateFailedBody": "Could not download update. Try again later.", - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" + "updateCurrent": "الحالي", + "@updateCurrent": { + "description": "Label for current version" }, - "searchTracks": "Tracks", - "@searchTracks": { - "description": "Search filter label - tracks" + "@aboutFeatureRequest": { + "description": "Link to suggest features" }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "حذف {count} {count, plural, zero {} one {المسارات} two {أغنيتين} few {أغانٍ} many {أغنية}=1{أغنية} other{الأغاني}} من التاريخ؟\n\nسيؤدي هذا أيضا إلى حذف الملفات من وحدة التخزين.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "Storage Access Required", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "هل أنت متأكد من أنك تريد مسح كل سجل التنزيلات؟ لا يمكن التراجع عن هذا.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Just now", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Favorite Artists", + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Playlists", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "السجلات", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "الفنان الموهوب الذي أنشأ شعار التطبيق الجميل!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "تجريبي", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "تحليل ارتفاع الصوت وكتابة وسوم ReplayGain", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "الصفحة الرئيسية", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "اصدار التطبيق الأدنى", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Converting {current} of {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "المعاينة غير متوفرة", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "معرف العميل: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Never", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "رقم الأغنية", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "تحليل الصوت...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "المساهمون", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "الدردشة مع المستخدمين الآخرين", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "رابط غير معروف", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "لا حدود للطلبات", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "البيانات الوصفية (Metadata)", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Failed to load album", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "ابقي اندرويد مفتوحا", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "لصق Client ID", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "مصدر البحث", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "All Files Access", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "extensionsInstalledCount": "تم تثبيت {count} إضافات بنجاح", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplyGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "مسح الكل", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "اسم الفنان الكامل المستخدمة لاسم المجلد", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Remove from folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "البيانات الوصفية (Metadata)", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "طلبات كثيرة جداً. الرجاء الانتظار قليلاً قبل البحث مرة أخرى.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "لم يتم العثور على الملف", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer ليس لديه حدود للطلبات ومُوصى به كأساسي. Spotify لديه حد للطلبات وقد لا يعمل بعد عدة عمليات.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "كود مصدر برنامج الكمبيوتر", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "تم حذف {count} {count, plural, zero {} one {أغنيتين} two {أغنيتين} few {أغانٍ} many {أغنية}=1{أغنية} other{أغانٍ}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "رابط {platform} تم نسخه إلى الحافظة", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "منشئ API QQDL و HiFi. ساعد هذا المشروع في تشكيل دعم تحميل غير فاقد للجودة.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Fetching {current} of {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "الخدمة", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "Added {count} tracks to queue", + "cueSplitTrackCount": "{count} tracks", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "استيراد قائمة تشغيل", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Local Library", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "تاريخ الإصدار (الأحدث)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "الأغاني و ال EPs", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "المكون الإضافي الاحتياطي", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Playlist: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "تسجيل تفصيلي", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "أصغر حجم, ~4 ميغابايت لكل مسار", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Actions", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "لم يتم تحديد مجلد. هل ترغب في استخدام مجلد الموسيقى الافتراضي؟", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "Failed: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "إضافة ReplyGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "مزودي الإضافات مطلوبين", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "الخيارات", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "فشل تنزيل التحديث", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "إعادة المحاولة", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Tap any track to play it with your music player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "إلغاء التحديد", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "يدعم: الأغنية، الألبوم، قائمة التشغيل، عناوين URL للفنان", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Playlist is empty", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "جميع الملفات في مجلد التحميل", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "الألبومات", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "cacheSectionMaintenance": "Maintenance", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24 بت / ما يصل إلى 192 كيلو هرتز", + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "ألبوم/الفنان", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "تعذر فتح الملف: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "مطلوب - انقر للتهيئة", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "كلمات الأغنية غير متوفرة لهذه الأغنية", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "الأدوات", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Added to \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Clear cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Year] الألبوم", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Storage & Cache", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "لا توجد إضافات مع إمكانية مزود البيانات الوصفية", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "العنوان (ي-أ)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Finalizing library...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "التراجع التلقائي", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "مطور نسخة الهاتف", + "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "إلغاء التثبيت", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Delete playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "إعدادات التحميل", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "فنانون", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "معالج الروابط", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "الوضع الافتراضي للنظام", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} entries", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "تعيين ترتيب مصدر البحث والبيانات الوصفية", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Select tracks to delete", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Change download location and folder organization", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Limited to media folders only", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "إعدادات التحميل", + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "حدد الأغاني المراد حذفها", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "تصنيف", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "إلغاء", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "تمكين الإشعارات", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "المؤلف", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "صيغة الملف", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "سجل البحث...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "تضمين كلمات الأغنية", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "لصق Client Secret", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "تم مسح السجل.", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "موفر كلمات الأغاني", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "الكل", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Finding Music", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "فتح في Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Downloaded", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Failed to fetch some albums", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "الخدمة المستخدمة للبحث عن طريق اسم الأغنية أو الألبوم", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "جودة الصوت", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "View size and clear cached data", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Select Albums...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "البحث عن بيانات التعريف الموسيقي، وإدارة الملحقات، وتنظيم مكتبتك.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "مطابقة المسار المخصص", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "الإمكانيات", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "تنسيق 320kbps مضغوط", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "تمت إضافة {trackName} إلى قائمة الانتظار", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Every app open", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "قائمة", + "updateDownloadInstall": "تحميل وتثبيت", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "العنوان (أ-ي)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "جودة الصوت", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Converted to {format} successfully", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "هل أنت متأكد من أنك تريد إزالة {extensionName}؟", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "تحديث", + "libraryFilterMetadataMissingAny": "Missing any metadata", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Add to Playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "الصلاحيات", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "الإعلانات والتحديثات", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" }, - "homeSearchHintProvider": "Search with {providerName}...", "@homeSearchHintProvider": { "description": "Placeholder for the main search field when a provider is selected", "placeholders": { @@ -4695,219 +2586,867 @@ } } }, - "homeImportCsvTooltip": "Import CSV", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" }, - "homeChangeSearchProviderTooltip": "Change search provider", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" + "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", + "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" + "setupNotificationEnable": "تمكين الإشعارات", + "@setupNotificationEnable": { + "description": "Button to enable notifications" }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "السمة والألوان والعرض", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "تشغيل", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "اسأل قبل التحميل", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "المسار الآلي", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Skip Duplicate Downloads", + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "التخطي الآن", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "رابط المستودع", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "تشغيل", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "قناة التحديث", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "حفظ التنزيلات التي فشلت إلى ملف TXT تلقائيًا", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "الفنان (أ-ي)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "فتح في Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "حدد iCloud أو موقع آخر", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} مستمع شهري", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Cached Data", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" }, "tutorialDownloadCompletedSemantics": "Download completed", "@tutorialDownloadCompletedSemantics": { "description": "Accessibility label for completed download state in tutorial demo" }, - "tutorialDownloadInProgressSemantics": "Download in progress", - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" + "@logNoLogsYet": { + "description": "Empty state title" }, - "tutorialStartDownloadSemantics": "Start download", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } }, - "optionsEmbedMetadata": "Embed Metadata", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" }, - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" + "setupAppDocumentsFolder": "مجلد مستندات التطبيق", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" + "storeLoadError": "فشل تحميل المستودع", + "settingsDownloadNetwork": "تحميل الشبكة", + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "قيمة مشتركة واحدة", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "الفنان (ي-أ)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "الخدمة والجودة الأحتياطات", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Last scanned: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "حدود iOS: لا يمكن تحديد مجلدات فارغة. اختر مجلدا مع ملف واحد على الأقل.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "جديد", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "إدارة موفري التحميل", + "sortAlphaAsc": "A-Z", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Select All", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "الألبومات/اسم الفنان /[2005] اسم الألبوم/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Fetching tracks...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "خطأ", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "تاريخ الإصدار", + "discographySelectedCount": "{count} selected", + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "updateStartingDownload": "جاري بدء التنزيل...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "رقم القرص", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "استخدام الإضافة: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "No orphaned entries found", + "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Error: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "previewStop": "إيقاف المعاينة", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "discographyAlbumsOnly": "Albums Only", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "اختر إضافات التحميل المثبتة التي يمكن استخدامها أثناء الرجوع التلقائي للمزود الاحتياطي", + "aboutSocial": "التواصل الإجتماعي", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "لا يوجد مزودي بحث بعد", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "مثبت", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "تم إضافة وسم ReplyGain", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "تنزيل", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "فشل تحميل كلمات الأغاني", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "تم رفض الإذن. الرجاء منح كافة الصلاحيات للمتابعة.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "WiFi فقط", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "تم تحديث {extensionName}.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "قم بتثبيت مكون إضافي للمتابعة.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Downloading Music", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "الإحتياطات، البيانات الوصفية (metadata)، كلمات الأغاني، غلاف الأغنية", + "navLibrary": "المكتبة", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "لا توجد إضافات متاحة", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "قد تحتوي الإصدارات التجريبية أخطاءً أو ميزات غير مكتملة", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Library scan complete", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "تثبيت ملفات .spotiflac-ext لإضافة موفرين جدد", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "شكر خاص لِ", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "تثبيت", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "الألبومات", + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "تمكين العلامات المنسقة لحشو المقطع الصوتي وأنماط التاريخ", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "الإدخالات ({count} تم تصفيتها)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "أضف مستودعًا", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "الإبلاغ عن خطأ", + "snackbarFailedToWriteStorage": "Failed to write back to storage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "لديك تغييرات غير محفوظة. هل تريد المتابعة دون حفظها؟", + "setupChooseFromFiles": "اختر من الملفات", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "اختر التنسيق النهائي للتنزيلات المضغوطة 320kbps. سيتم تحويل البث الأصلي إلى التنسيق المحدد عند الحاجة.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "تم تثبيت الإضافة بنجاح", + "progressReadingCsv": "جاري قراءة CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "البحث الافتراضي", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "اكتب قيمة ARTIST واحدة مثل \"الفنان A، الفنان B\" لتحقيق التوافق الأقصى لمشغل الأغاني.", + "downloadLossy320": "320kbps مضغوط", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Queue FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Provider Options", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "No download history", + "optionsTitle": "خيارات", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "محو", + "@dialogClear": { + "description": "Dialog button - clear items" }, "downloadFilenameHintExample": "{artist} - {title}", "@downloadFilenameHintExample": { "description": "Example placeholder for the download filename format input" }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" + "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" }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" + "trackConvertConfirmTitle": "Confirm Conversion", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" }, - "trackCoverPick": "Pick Cover", - "@trackCoverPick": { - "description": "Button label for selecting cover art" + "collectionPlaylistDeleted": "Playlist deleted", + "metadataMayRateLimit": "قد يفرض حدودا للطلب", + "@metadataMayRateLimit": { + "description": "Spotify provider description" }, - "trackCoverClearSelected": "Clear selected cover", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" }, - "trackCoverCurrent": "Current cover", - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" + "tooltipLoveAll": "Love All", + "downloadDirectory": "مسار التنزيل", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "trackCoverSelected": "Selected cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" }, - "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" + "libraryFolder": "Library Folder", + "optionsMaxQualityCoverSubtitle": "تنزيل أعلى دقة لغلاف الأغنية", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "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", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", "placeholders": { - "hex": { - "type": "String" + "count": { + "type": "int" } } }, - "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" + "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" }, "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", "@a11yOpenTrackByArtist": { @@ -4921,18 +3460,229 @@ } } }, - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Size", + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "الإدخالات ({count})", + "@logEntries": { + "description": "Total log count", "placeholders": { - "itemType": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { "type": "String" }, - "name": { + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "حسب الألبوم", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "التطبيق", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "معطل: لا توجد علامات تطبيع للصوت", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "storeFilterIntegration": "التكامل", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "تم التنزيل", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "على iOS، يتم حفظ التحميلات إلى مجلد مستندات التطبيق. يمكنك الوصول إليها عبر تطبيق الملفات.", + "optionsArtistTagModeDescription": "اختر كيف يتم كتابة العديد من الفنانين في العلامات المضمنة.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "أغاني", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "إعدادات الملف", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "dialogDelete": "حذف", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "تم حفظ بيانات الاعتماد", + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Lossless conversion — no quality loss", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Rename playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "حدد لغتك المفضلة للتطبيق. يمكنك تغيير هذا لاحقًا من الإعدادات.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Artist", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", + "artistCompilations": "التجميع", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Library Scan", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", "@a11yOpenItemCount": { "description": "Accessibility label for opening a grouped item with count", @@ -4945,7 +3695,1332 @@ } } }, - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "trackFileInfo": "معلومات الملف", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "audioAnalysisNoClipping": "No clipping", + "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "فصل ملف .lrc لمشغلي الأغاني مثل Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "استخدام البحث الافتراضي عن البيانات الوصفية", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "تحميل كلمات الأغاني", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "مستودع الإضافات", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Library cleared", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Local Library", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "All tracks selected", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Clear Library", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "مسح الكل", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "من قِبل {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Genre", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "حسب قائمة التشغيل", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Save Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "استخدم الافتراضي", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "ستظهر السجلات هنا عند استخدام التطبيق", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Download Progress", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "كلمات الأغنية", + "libraryAutoScan": "Auto Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "الإذن مطلوب للتخزين", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "شبكة", + "trackConvertConverting": "Converting audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "اكتب علامة فنان لكل فنان لـ FLAC و Opus؛ تبقى MP3 و M4A منضمة.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "اختر علامة التبويب التي تفتح أولاً لنتائج البحث الجديدة.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "There are two easy ways to find music you want to download.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unknown Album", + "trackCoverCurrent": "Current cover", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "تم", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "رابط المستودع", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress}% of {total} files", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Loved folder is empty", + "tutorialExtensionsTitle": "Extensions", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "المدة (الأقصر)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "نسخ مسار الملف", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "الفنان / الألبوم والفنان / الأغنية.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "فشل تحديث الإضافة", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Playlist name", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "اِختر اللغة", + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "سيتم إلغاء البحث في Spotify في 3 مارس 2026 بسبب تغييرات API Spotify. الرجاء التبديل إلى Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "هل أنت متأكد من أنك تريد إزالة هذه الإضافة؟ لا يمكن التراجع عن ذلك.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "موقع حفظ التنزيلات", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "App cache directory", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "مرحلة ما بعد المعالجة", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "تم نسخ السجلات إلى الحافظة", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "استخدام المجلد الافتراضي؟", + "tutorialSearchHint": "Paste or search...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "ملف .lrc منفصل", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "البحث في السجلات...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "Client ID", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "required", + "actionCancel": "إلغاء", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "تنسيق اسم الملف الفردي", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "تحميل اغاني Spotify بصيغة FLAC", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "حذف من الجهاز", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Cache overview", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ٌReplyGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "مثال: https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Storage Update Required", + "snackbarMetadataSaved": "Metadata saved successfully", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "حذف السجل", + "extensionsCustomSearch": "Custom search", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "actionRemoveCredentials": "إزالة بيانات الاعتماد", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "تم إضافة {count} أغانٍ إلى قائمة الانتظار", + "downloadFilenameInsertTag": "Tap to insert tag:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Re-analyze", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Select a folder first", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Not configured", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "مجلد منفصل لكل قائمة تشغيل", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Convert Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "التخطي الآن", + "sectionDownload": "التحميل", + "downloadLossyOpus256Subtitle": "أفضل جودة Opus, حوالي 8 ميغابايت لكل أغنية", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "اسحب لإعادة ترتيب موفري البيانات الوصفية (metadata). سيحاول التطبيق موفري البيانات الوصفية (metadata) من الأعلى إلى الأسفل عند البحث عن المسارات وجلب البيانات الوصفية (metadata).", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "يمكن للإضافات تزويدك بموفري بيانات التعريف الجديدة وتحميلها. ثبت الإضافات من مصادر موثوق بها فقط.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Missing year", + "extensionsDownloadPriority": "أولوية التحميل", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Scan Library", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "فشل التنزيل", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "خلفية سوداء تامة", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Shows download progress for tracks", + "setupIcloudNotSupported": "iCloud Drive غير مدعوم. الرجاء استخدام مجلد مستندات التطبيق.", + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "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" + } + } + }, + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanCancelled": "Library scan cancelled", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "collectionPlaylistNameRequired": "Playlist name is required", + "libraryCleanupMissingFiles": "Cleanup Missing Files", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "searchSortTitle": "فرز النتائج", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "audioAnalysisLufs": "LUFS", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" + }, + "extensionsErrorLoading": "Error loading extension", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "aboutFeatureRequestSubtitle": "اقتراح ميزات جديدة للتطبيق", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "@aboutTitle": { + "description": "About page title" + }, + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "@actionGo": { + "description": "Generic action button label" + }, + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "تاريخ التحديث", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "downloadLossyFormat": "تنسيق مضغوط", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" + }, + "snackbarAlreadyInLibrary": "{trackName} موجود بالفعل في مكتبتك", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "libraryFilterQuality": "Quality", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "trackReEnrichFieldsTitle": "Fields to update", + "aboutFeatureRequest": "اقتراح ميزة", + "downloadSingleFilenameFormatDescription": "نمط اسم الملف للعازفين و EPs. يستخدم نفس العلامات مثل تنسيق الألبوم.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "queueClearAllMessage": "هل أنت متأكد من أنك تريد مسح جميع التنزيلات؟", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import CSV", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV file into Home search" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "dialogClearHistoryTitle": "مسح السجل", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "dialogImport": "استيراد", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "notifLibraryScanErrors": "{count} errors", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "إلغاء تثبيت الإضافة؟", + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "سيؤدي هذا إلى حذف الملف الذي تم تنزيله وإزالته من السجل الخاص بك بشكل دائم.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "النظام", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "الفنان / الألبوم + المفردات", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "منشئ مشروع HiFi الأصلي. مؤسسة للتكامل بدون مصدر.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "إذن دخول وحدة التخزين مطلوب", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "حذف", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "تم حفظ أولوية مزود البيانات الوصفية (metadata)", + "setupPermissionRequired": "{permissionType} مطلوب الإذن", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Degraded", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "لم يتم العثور على كلمات الأغاني في هذا الملف", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "بيانات اعتماد Spotify", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Show All Downloads", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "setupNext": "التالي", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Daily", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "trackConvertFailed": "Conversion failed", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "إلغاء التثبيت", + "safMigrationSuccess": "Download folder updated to SAF mode", + "optionsClearHistorySubtitle": "إزالة جميع الأغاني التي تم تنزيلها من السجل", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "optionsUpdateChannelStable": "الإصدارات المستقرة فقط", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "قوائم التشغيل", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "settingsAppearance": "المظهر", + "logIssueRateLimitedLabel": "RATE LIMITED", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "المستودع الحالي:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "libraryFilterApply": "Apply", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "الرجاء تمكين \"السماح بالوصول لإدارة جميع الملفات\" في الشاشة التالية.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "كلمات الاغنية", + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "Split into {count} tracks successfully", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "اسحب لإعادة ترتيب مزودي التحميل. سيجرب التطبيق مزودي الخدمات من الأعلى إلى الأسفل عند تحميل المسار.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "downloadLossyOpus128": "Opus 128kbps", + "downloadUseAlbumArtistForFolders": "استخدام فنان الألبوم للمجلدات", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "updateLater": "ذكرني لاحقا", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "استئناف", + "optionsDetailedLoggingOff": "تمكين لتقارير الأخطاء", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "storeSearch": "البحث في الإضافات...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "مجتمع تليجرام", + "lyricsModeBoth": "كلاهما", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Automatically scan your library for new files", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Enable Local Library", + "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", + "trackConvertTargetFormat": "Target Format", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "الإعدادات", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "انتهت مهلة الطلب. حاول مرة أخرى لاحقاً.", + "settingsExtensions": "الإضافات", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "لون ديناميكي", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "credentialsTitle": "بيانات اعتماد Spotify", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "المظهر", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, zero {لا توجد أغاني محددة} one {{count} مسارات} two {أغنيتين} few {{count} أغانٍ} many {{count} أغانٍ}=1{أغنية واحدة} other{{count} أغانٍ}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Clear search", + "trackSaveLyrics": "Save Lyrics (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Download Complete", + "snackbarAlreadyDownloaded": "تم تنزيل {trackName} بالفعل", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "مجلد منفصل لكل قائمة تشغيل", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Search for tracks", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "تضمين وحفظ ملف .lrc", + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "كلمات الاغنية", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "الاستراتيجية: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "تقسيم العلامات على FLAC/Opus", + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Cancel download?", + "updateWhatsNew": "ما الجديد", + "updateNewVersionReady": "إصدار جديد جاهز", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Select track", + "libraryClearSubtitle": "Remove all scanned tracks", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "المستودع", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "Scan Settings", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "المدة", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Search tracks...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "In Library", + "pressBackAgainToExit": "اضغط رجوع مجددًا للخروج", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "تم منح إذن الإشعارات!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Support Development", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "لا تذكّرني", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Searching online...", + "discographyDownloadSelected": "Download Selected", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "اختر مزود البحث الافتراضي للتبديل من مكون إضافي", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Temporary directory", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Show Duplicate Indicator", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "التحقق من وجود تحديثات", + "replayGainBatchAnalyzing": "تحليل ReplyGain...", + "recentTypeAlbum": "Album", + "providerExtension": "الإضافة", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "No cover art source available", + "libraryFilterMetadata": "Metadata", + "albumFolderArtistYearAlbum": "الفنان / [Year] ألبوم", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -4960,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} by {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "مستقر", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Customize app theme and appearance", + "setupAppDocumentsFolderSubtitle": "موصى به - يمكن الوصول إليه عبر تطبيق الملفات", + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -4972,6 +5062,320 @@ } } }, + "dialogRemove": "إزالة", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "تجربة خدمات أخرى إذا فشل التنزيل", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} أنماط", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "هذا الرابط غير مدعوم. تأكد من أن الرابط صحيح وتثبيت إضافة متوافق.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "وضع وسم الفنان", + "libraryFilterMetadataComplete": "Complete metadata", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "مسح الصوت و تضمين علامات ReplayGain (EBU R128)", + "libraryScanning": "Scanning...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Refresh", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "حفظ كلمات الأغاني المتزامنة جنبا إلى جنب مع المسارات التي تم تنزيلها", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "extensionEnterValue": "Enter value", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Loved", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "إضافة مستودع إضافات", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "No playlists yet", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "حسب الفنان", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "المترجمون", + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "editMetadataFieldTitle": "Title", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Failed to load artist", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "الجودة الفعلية تعتمد على المسار المتوفر من الخدمة", + "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Z-A", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC يحتاج إلى إذن تخزين لحفظ ملفات الموسيقى الخاصة بك التي تم تنزيلها.", + "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", + "tutorialLibraryTip3": "Switch between list and grid view for better browsing", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "فاتح", + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "اختر مجلد التحميل", + "dialogDownloadAllTitle": "Download All", + "providerPriorityInfo": "إذا كانت الأغنية غير متوفرة عند أول مزود، فإن التطبيق سيجرب تلقائياً المزود التالي.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "No albums available", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "cacheNoData": "No cached data", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "aboutTitle": "حول", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "عرض السجل", + "audioAnalysisSampleRate": "Sample Rate", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "Track lookup cache", + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Refresh status", + "notifAllDownloadsComplete": "All Downloads Complete", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "مشاركة", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases", + "settingsDonateSubtitle": "Buy the developer a coffee", + "libraryFilterDownloaded": "Downloaded", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Scan stopped before completion.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "نسخ كلمات الأغنية", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "هيكل مجلد الألبوم", + "downloadMusixmatchAuto": "Auto", + "actionDismiss": "Dismiss", + "storeFilterAll": "الكل", + "extensionsDisabled": "معطَّل", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Your Library", + "optionsCheckUpdatesSubtitle": "إعلام عند توفر إصدار جديد", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "منذ {count} أشهر", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "قديم", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Playlist renamed", + "collectionCreatePlaylist": "Create playlist", + "homeGoToAlbum": "Go to Album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "مجلد منفصل لكل فنان", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "الإصدار {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "الفنان الأساسي فقط للمجلدات", + "tutorialExtensionsTip2": "Add new download providers or search sources", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "a11ySelectAlbum": "Select album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -4981,169 +5385,679 @@ } } }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "كود مصدر برنامج الهاتف", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Storage Access", + "logFilterBySeverity": "تصفية السجلات حسب الخطورة", + "libraryFolderNotExist": "Selected folder does not exist", + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "albumFolderArtistAlbum": "ألبوم / الفنان", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Empty only", + "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "استخدام مزودي الإضافات", + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Missing genre", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" + "setupFolderDescription": "حدد مجلد حيث سيتم حفظ الموسيقى التي تم تنزيلها.", + "extensionDetailsTags": "Tags", + "unknownArtist": "Unknown Artist", + "trackFetchOnlineLyrics": "جلب من الإنترنت", + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" + "downloadAllCount": "تنزيل الكل ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } }, - "settingsFiles": "Files & Folders", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" + "downloadedAlbumDiscHeader": "Disc {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" }, - "settingsFilesSubtitle": "Download location, filename, folder structure", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" + "actionSaveCredentials": "حفظ بيانات الاعتماد", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } }, - "settingsMetadata": "Metadata", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" }, - "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" }, - "settingsLyrics": "Lyrics", - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" }, - "settingsLyricsSubtitle": "Embed, mode, providers, language options", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "extensionsFallbackTitle": "الإضافات الاحتياطية", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" }, - "settingsAppSubtitle": "Updates, data, extension repo, debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" }, - "sectionMetadataProviders": "Providers", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" + "downloadedAlbumDeleteSelected": "Delete Selected", + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" }, - "sectionDuplicates": "Duplicates", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" + "storeAddRepoDescription": "أدخل عنوان مستودع GitHub الذي يحتوي على ملف registry.json لتصفح وتثبيت الإضافات.", + "appearanceThemeDark": "مظلم", + "downloadedAlbumTapToSelect": "Tap tracks to select", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } }, - "sectionLyricsProviderOptions": "Provider Options", - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" + "@backupRestored": { + "description": "Snackbar after a successful restore" }, - "metadataProvidersTitle": "Metadata Provider Priority", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" }, - "metadataProvidersSubtitle": "Drag to set search and metadata source order", - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" + "editMetadataAutoFillNoResults": "No matching metadata found online", + "updateDownloading": "جاري التنزيل...", + "trackLyricsSource": "المصدر: {source}", + "logFilterLevel": "المستوى", + "logNoLogsYet": "لا توجد سجلات بعد", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } }, - "downloadDeduplication": "Skip Duplicate Downloads", - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } }, - "downloadFallbackExtensions": "Fallback Extensions", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "extensionsHomeFeedAuto": "Auto", + "searchEmptyResultSubtitle": "جرّب كلمة مفتاحية أخرى", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "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" + "dateToday": "اليوم", + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } }, + "audioAnalysisBitDepth": "Bit Depth", "editMetadataFieldTrackTotal": "Track Total", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "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" - }, - "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" - }, - "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", + "replayGainBatchConfirmMessage": "تحليل الصوت وكتابة وسوم ReplayGain إلى مسار(مسارات) {count}؟", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "optionsSpotifyWarning": "Spotify يتطلب بيانات اعتماد API الخاصة بك. احصل عليها مجاناً من developer.spotify.com", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "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": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Edit Metadata", + "discographyDownloadAll": "Download All", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "الألبومات / اسم الفنان / اسم الألبوم", + "extensionHealthServiceUnknown": "Service status unknown", + "navHome": "الرئيسية", + "queueDownloadStarting": "Starting...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "selectionSelected": "تم تحديد {count}", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Download Discography", + "editMetadataFieldCopyright": "Copyright", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Sort", + "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", + "dialogRemoveExtension": "إزالة إضافة", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "تحديد الكل", + "settingsDownloadNetworkSubtitle": "اختر الشبكة التي تريد استخدامها للتنزيلات. عند تعيين WiFi فقط، التنزيلات لن تعمل على بيانات الجوال.", + "downloadFolderOrganization": "تنظيم المجلدات", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "تم اختيار جميع الأغاني", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "عرض سجلات التطبيقات لتصحيح الأخطاء", + "albumFolderYearAlbumSubtitle": "الألبومات/[2005] اسم الألبوم/", + "cancelDownloadKeep": "Keep", + "optionsDetailedLoggingOn": "يتم تسجيل السجلات التفصيلية", + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Update Failed", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Local", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "الخدمة", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "notifUpdateFailedBody": "Could not download update. Try again later.", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "artistPopular": "الأكثر شعبية", + "extensionRemoveButton": "حذف الإضافة", + "allFilesAccessEnabledSubtitle": "Can write to any folder", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Search Provider", + "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", + "selectionBatchConvertConfirmTitle": "Batch Convert", + "extensionMetadataProvider": "مزود بيانات التعريف", + "queueDownloadedFileMissing": "Downloaded file missing", + "logClearLogs": "حذف السجل", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "الفنان", + "extensionCustomUrlHandling": "Custom URL Handling", + "appearanceDynamicColorSubtitle": "استخدام الألوان من الخلفية", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "افتراضي", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choose how album folders are structured", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "App Folder (Recommended)", + "collectionPlaylistCreated": "Playlist created", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Save album art as .jpg file", + "actionPaste": "Paste", + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "downloadNativeWorker": "Native download worker", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "Refresh stats", + "collectionPlaylistChangeCover": "Change cover image", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "مسح سجل التحميلات", + "trackGenre": "النوع", + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "libraryFilterMetadataMissingArtist": "Missing artist", + "extensionsNoCustomSearch": "No extensions with custom search", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "مزود التحميل", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "وضع كلمات الأغنية", + "aboutReportIssueSubtitle": "الإبلاغ عن أي مشكلة تواجهك", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "الوضع الداكن AMOLED", + "logIssueNetworkErrorDescription": "Connection issues detected", + "folderOrganizationByArtistAlbumSubtitle": "مجلدات متداخلة للفنان و الألبوم", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "منح الصلاحيات", + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "قبل {count} أيام", + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "downloadLossyMp3Subtitle": "أفضل توافق، ~10 ميغابايت لكل أغنية", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "Wishlist is empty", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Service degraded", + "optionsUseExtensionProvidersOn": "مزودي الإضافات مفعلين", + "selectionConvertNoConvertible": "No convertible tracks selected", + "snackbarCredentialsCleared": "تم مسح بيانات الاعتماد", + "setupStorageGranted": "تم منح إذن التخزين!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} excluded", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Change folder", + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "Clear Library", + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "storeCategoryMetadata": "Metadata", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "tutorialLibraryTip1": "View download progress and queue in the Library tab", + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "Local", + "tutorialDownloadInProgressSemantics": "Download in progress", + "searchSortDurationLong": "المدة (الأطول)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "About Local Library", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "appearanceSelectAccentColor": "Select accent color {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "إعادة مسح ReplyGain", + "downloadSeparateSinglesFolder": "فصل مجلد الفرديات", + "trackAlbumArtist": "فنان الألبوم", + "qualityFlacLossless": "FLAC Lossless", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Customize Your Experience", + "extensionActionFailed": "Action failed", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "notifChannelLibraryScanDesc": "Shows local library scan progress", + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" removed", + "setupStorageAccessMessageAndroid11": "يتطلب أندرويد 11+ إذن \"الوصول إلى جميع الملفات\" لحفظ الملفات في مجلد التحميل الذي اخترته.", + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "optionsPrimaryProvider": "المزود الرئيسي", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "albumFolderArtistAlbumFlat": "فنان / ألبوم (منفردات سطحية)", + "homeAlbumInfoUnavailable": "Album info not available", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unknown", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "فشل التصدير التلقائي للتنزيلات", + "logFilterSection": "فرز", + "dialogDiscardChanges": "تجاهل التغييرات؟", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Tracks", + "searchAlbums": "ألبومات", + "trackConvertFormat": "Convert Format", + "metadataProviderPriorityTitle": "أولوية البيانات الوصفية (metadata)", + "libraryFolderHint": "Tap to select folder", + "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "الألبوم", + "updateAvailable": "هناك تحديث متاح", + "optionsEmbedLyrics": "تضمين كلمات الأغنية", + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "إظهار صفحة المستودع في شريط التنقل", + "settingsTitle": "الإعدادات", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Explore feed cache", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} selected", + "downloadAskQualitySubtitle": "إظهار منتقي الجودة لكل تنزيل", + "filenameShowAdvancedTags": "إظهار العلامات المتقدمة", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "Library cover cache", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "أفضل توافق للجوال، صيغة M4A", + "snackbarFillAllFields": "من فضلك قم بإدخال جميع البيانات", + "actionCreate": "Create", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} downloaded", + "snackbarLoadingCueSheet": "Loading CUE sheet...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "منشئ SpotiFLAC", + "a11yTrackByArtist": "{trackName} by {artistName}", + "audioAnalysisDynamicRange": "Dynamic Range", + "homeChangeSearchProviderTooltip": "Change search provider", + "loadingSharedLink": "تحميل الرابط المشترك...", + "lyricsModeEmbedSubtitle": "كلمات الأغاني مخزنة داخل بيانات تعريف FLAC", + "setupNotificationBackgroundDescription": "الحصول على إشعار حول تقدم التحميل وإكماله. هذا يساعدك على تتبع التنزيلات عندما يكون التطبيق في الخلفية.", + "snackbarViewQueue": "عرض قائمة الانتظار", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Choose specific albums or singles", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "فشل تحميل المحتوى من هذا الرابط. الرجاء المحاولة مرة أخرى.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "حفظ", + "trackReEnrichSearching": "Searching metadata online...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "downloadFilenameFormat": "تنسيق اسم الملف", + "cueSplitTitle": "Split CUE Sheet", + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "لا يمكن تحميل {item}: مصدر الإضافة مفقود", + "albumFolderAlbumOnlySubtitle": "الألبومات/اسم الألبوم/", + "errorLoadPlaylist": "Failed to load playlist", + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "تجاهل", + "storageModeSaf": "Custom Folder (SAF)", + "errorRateLimited": "تم الوصول للحد الأقصى", + "downloadSelectQuality": "تحديد الجودة", + "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", + "collectionFoldersTitle": "My folders", + "credentialsClientSecret": "Client Secret", + "progressFetchingMetadata": "جلب البيانات الوصفية (metadata)... {current}/{total}", + "settingsDownloadNetworkAny": "WiFi + بيانات الجوال", + "audioAnalysisDuration": "Duration", + "audioAnalysisAnalyzing": "Analyzing audio...", + "credentialsDescription": "أدخل معرف العميل الخاص بك و الكود السري لاستخدام حصة تطبيق Spotify الخاصة بك.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "تشغيل المعاينة", + "setupPermissionRequiredMessage": "الإذن {permissionType} مطلوب لأفضل التجربة. يمكنك تغيير هذا لاحقاً في الإعدادات.", + "aboutVersion": "الإصدار", + "qualityHiResFlacSubtitle": "24 بت / ما يصل إلى 96 كيلو هرتز", + "audioAnalysisSamples": "Samples", + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "حقوق الطبع و النشر", + "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", + "trackCopiedToClipboard": "تم النسخ إلى الحافظة", + "optionsEmbedMetadata": "Embed Metadata", "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5159,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Integration", + "storeClearFilters": "حذف الفلاتر", + "navSettings": "الإعدادات", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "التطبيق", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "الفنان/الألبوم و الفنان / المفردات", + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "اسم الأغنية", + "homeRecent": "الأخيرة", + "recentEmpty": "No recent items yet", + "cacheClearAll": "Clear all cache", + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "editMetadataFieldAlbum": "Album", + "settingsAbout": "حول البرنامج", + "libraryFilterTitle": "Filters", + "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", + "extensionHooksAvailable": "متاح {count} روابط", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "تمت إضافة كلمات الأغنية بنجاح", + "optionsUpdateChannelPreview": "الحصول على إصدارات تجريبية", + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "libraryForceFullScan": "Force Full Scan", + "snackbarProviderPrioritySaved": "تم حفظ أولوية المزود", + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Service Status", + "dateWeeksAgo": "قبل {count} أسابيع", + "historyFilterSingles": "الأغاني", + "tutorialSettingsTip2": "Set default audio quality and format preferences", + "trackLyricsSaved": "Lyrics saved to {fileName}", + "cacheClearAllConfirmTitle": "Clear all cache?", + "noTracksFoundForAlbum": "No tracks found for this album", + "sectionLanguage": "اللّغة", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "حدد الملف", + "dateYesterday": "الأمس", + "collectionAddToPlaylist": "Add to playlist", + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "libraryScanCancelled": "Scan cancelled", + "appearanceLanguage": "لغة التطبيق", + "extensionsTitle": "الإضافات", + "dialogImportPlaylistMessage": "تم العثور على {count} مسارات في CSV. إضافتها إلى قائمة انتظار التنزيل؟", + "permissionNotification": "Notification", + "notifUpdateReady": "Update Ready", + "lyricsModeDescription": "اختر كيفية حفظ كلمات الأغاني مع التنزيلات الخاصة بك", + "downloadFrom": "تحميل من", + "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", + "optionsMaxQualityCover": "اختيار أعلى جودة للغلاف", + "trackOptionAddToWishlist": "Add to Wishlist", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "extensionsNoDownloadProvider": "لا توجد إضافات مع إمكانية مزود التحميل", + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "trackReplayGainFailed": "فشل في إضافة علامات ReplayGain", + "collectionPlaylistRemoveCover": "Remove cover image", + "storeEmptyNoResults": "لم يتم العثور على إضافات", + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "editMetadataFieldComment": "Comment", + "settingsMetadata": "Metadata", + "settingsCache": "Storage & Cache", + "providerPriorityFallbackExtensionsHint": "الإضافات المفعلة فقط مع قدرة توفير التنزيل مدرجة هنا.", + "libraryFilterAll": "All", + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "extensionsProviderPrioritySection": "أولوية مزود الخدمة", + "storeChangeRepoTooltip": "تغيير المستودع", + "snackbarFailedToInstall": "فشل تثبيت الإضافة", + "libraryScanSubtitle": "Scan for audio files", + "snackbarExtensionInstalled": "تم تثبيت {extensionName}.", + "setupOpenSettings": "فتح الإعدادات", + "extensionsInstalledSection": "الإضافات المُثبّتة", + "aboutLinks": "روابط", + "trackCoverClearSelected": "Clear selected cover", + "libraryAutoScanWeekly": "Weekly", + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "optionsDefaultSearchTab": "تبويب البحث الافتراضي", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "تنظيم الملفات التي تم تنزيلها في المجلدات", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "تضمين في الملف", + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Lossy", + "actionPause": "إيقاف مؤقت", + "csvImportTracks": "{count} مسارات من CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "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...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "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": { + "providerName": { "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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": {} - } - } + "sectionDebug": "تصحيح الأخطاء", + "editMetadataFieldDate": "Date", + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "sectionPerformance": "الأداء", + "extensionsSearchWith": "Search with {providerName}", + "extensionsDownloadPrioritySubtitle": "تعيين ترتيب خدمة التحميل", + "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", + "sectionData": "البيانات", + "notifFinalizingTrack": "Finalizing {trackName}", + "snackbarFileNotFound": "لم يتم العثور على الملف", + "extensionQualityOptions": "خيارات الجودة", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "مستودع الإضافات", + "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", + "albumFolderAlbumOnly": "الألبوم فقط", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "Split into Tracks" } \ No newline at end of file diff --git a/lib/l10n/arb/app_de.arb b/lib/l10n/arb/app_de.arb index e36269ee..34f0a4d0 100644 --- a/lib/l10n/arb/app_de.arb +++ b/lib/l10n/arb/app_de.arb @@ -1,2453 +1,31 @@ { "@@locale": "de", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Scan und verfolge deine bestehende Musik", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Startseite", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Bibliothek", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Einstellungen", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Repo", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Startseite", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Unterstützte URL einfügen oder nach Namen suchen", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeSupports": "Unterstützt: Titel, Album, Playlist, Künstler-URLs", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "Zuletzt", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyFilterAll": "Alle", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Alben", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Singles", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historySearchHint": "Suchverlauf...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Einstellungen", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "Herunterladen", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "Erscheinungsbild", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "Optionen", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Erweiterungen", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "Über", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Herunterladen", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Qualitätsauswahl für jeden Download anzeigen", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Dateinamenformat", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadSingleFilenameFormat": "Einzelnes Dateinamenformat", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Dateinamenmuster für Singles und EPs. Verwendet die gleichen Tags wie das Albumformat.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "downloadFolderOrganization": "Ordnerstruktur", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Erscheinungsbild", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "System", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Hell", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Dunkel", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Dynamische Farben", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Farben deines Hintergrundbilds verwenden", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "Verlaufsansicht", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Liste", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Raster", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Optionen", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "Primärer Anbieter", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Dienst zur Suche nach Titel oder Albumnamen", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Erweiterung verwenden: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsDefaultSearchTab": "Standard Such-Tab", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Wähle aus, welcher Tab zuerst für neue Suchergebnisse geöffnet wird.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Alben", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Titel", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Automatischer Fallback", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Andere Dienste versuchen, wenn Download fehlschlägt", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Erweiterungsanbieter verwenden", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Liedtexte einbetten", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Speichere synchronisierte Liedtexte zusammen mit heruntergeladenen Titeln", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "Maximale Cover-Qualität", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Cover in höchster Auflösung herunterladen", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Scanne Lautstärke und füge ReplayGain-Tags ein (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Deaktiviert: keine Lautstärke-Normalisierungs-Tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Künstler Tag-Modus", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Wähle aus, wie mehrere Künstler in eingebetteten Tags geschrieben sind.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Einzelne beigefügte Werte", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Einen Künstler wert wie \"Artist A, Artist B\" für maximale Spieler-Kompatibilität schreiben.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Tags für FLAC/Opus aufteilen", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Schreibe einen Künstler Tag pro Künstler für FLAC und Opus; MP3 und M4A bleiben beigetreten.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "optionsExtensionStore": "Erweiterungs-Repo", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Repo-Tab in der Navigation anzeigen", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "Nach Updates suchen", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "Benachrichtigen, wenn neue Version verfügbar", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "optionsUpdateChannel": "Update-Kanal", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "optionsUpdateChannelStable": "Nur stabile Versionen", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "optionsUpdateChannelPreview": "Vorschau-Versionen erhalten", - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "optionsUpdateChannelWarning": "Vorschau kann Fehler oder unvollständige Funktionen enthalten", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "optionsClearHistory": "Download-Verlauf löschen", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "optionsClearHistorySubtitle": "Alle heruntergeladenen Titel aus dem Verlauf entfernen", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "optionsDetailedLogging": "Detaillierte Protokollierung", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "optionsDetailedLoggingOn": "Detaillierte Logs werden aufgezeichnet", - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "optionsDetailedLoggingOff": "Für Fehlerberichte aktivieren", - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "optionsSpotifyCredentials": "Spotify-Anmeldedaten", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Client-ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Erforderlich - zum Konfigurieren tippen", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify erfordert eigene API-Anmeldedaten. Kostenlos erhältlich auf developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify-Suche wird am 3. März 2026 aufgrund von Änderungen der Spotify-API entfernt. Bitte wechsel vorher zu Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Erweiterungen", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Deaktiviert", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Version {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "von {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Deinstallieren", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Erweiterungs-Repo", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Erweiterungen suchen...", - "@storeSearch": { - "description": "Store search placeholder" - }, - "storeInstall": "Installieren", - "@storeInstall": { - "description": "Install extension button" - }, - "storeInstalled": "Installiert", - "@storeInstalled": { - "description": "Already installed badge" - }, - "storeUpdate": "Aktualisieren", - "@storeUpdate": { - "description": "Update available button" - }, - "aboutTitle": "Über", - "@aboutTitle": { - "description": "About page title" - }, - "aboutContributors": "Mitwirkende", - "@aboutContributors": { - "description": "Section for contributors" - }, - "aboutMobileDeveloper": "Mobile-Version Entwickler", - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "aboutOriginalCreator": "Schöpfer des ursprünglichen SpotiFLAC", - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "aboutLogoArtist": "Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "aboutTranslators": "Übersetzer", - "@aboutTranslators": { - "description": "Section for translators" - }, - "aboutSpecialThanks": "Besonderer Dank", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "aboutLinks": "Links", - "@aboutLinks": { - "description": "Section for external links" - }, - "aboutMobileSource": "Mobiler Quellcode", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "PC Quellcode", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Problem melden", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Melde Probleme, die dir auffallen", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Feature vorschlagen", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Schlage neue Funktionen für die App vor", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Telegram Kanal", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Ankündigungen und Updates", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Telegram Community", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Mit anderen Nutzern chatten", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Sozial", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "App", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Version", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Ersteller von I Don't Have Spotify (IDHS). Der Fallback-Link-Resolver, der den Tag rettet!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Musik-Metadaten durchsuchen, Erweiterungen verwalten und deine Bibliothek organisieren.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Alben", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Singles & EPs", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Zusammenstellungen", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Beliebt", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} monatliche Hörer", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "trackMetadataService": "Anbieter", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "trackMetadataPlay": "Abspielen", - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "trackMetadataShare": "Teilen", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "trackMetadataDelete": "Löschen", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "setupGrantPermission": "Berechtigung erlauben", - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "setupSkip": "Vorerst überspringen", - "@setupSkip": { - "description": "Skip current step button" - }, - "setupStorageAccessRequired": "Speicherzugriff erforderlich", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "setupStorageAccessMessageAndroid11": "Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Einstellungen öffnen", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Berechtigung verweigert. Bitte erteile alle Berechtigungen um fortzufahren.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "{permissionType}-Berechtigung erforderlich", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "{permissionType}-Berechtigung ist erforderlich für\ndie beste Benutzererfahrung. Du kannst dies später in den Einstellungen ändern.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Als Standardordner verwenden?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Kein Ordner ausgewählt. Soll der Standard-Musikordner verwendet werden?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Standard verwenden", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Speicherort", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "Auf iOS werden Downloads im Dokumentenordner der App gespeichert. Du kannst sie über die Datei-App aufrufen.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "App-Dokumentenordner", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Empfohlen - zugänglich über die Datei-App", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Aus Dateien auswählen", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Wähle iCloud oder einen anderen Speicherort", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "iOS-Einschränkung: Leere Ordner können nicht ausgewählt werden. Wähle einen Ordner mit mindestens einer Datei.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive wird nicht unterstützt. Bitte verwende den \"Dokumente\" Ordner.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Spotify Titel in FLAC herunterladen", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStorageGranted": "Speicherberechtigung erlaubt!", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "Speicherzugriff erforderlich", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "SpotiFLAC benötigt Speicherrechte, um die heruntergeladenen Musikdateien zu speichern.", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "Benachrichtigungs-Berechtigung erteilt", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "Benachrichtigungen aktivieren", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupFolderChoose": "Speicherort auswählen", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "Wähle einen Ordner, in dem die heruntergeladene Musik gespeichert wird.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupSelectFolder": "Ordner wählen", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupEnableNotifications": "Benachrichtigungen aktivieren", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupNotificationBackgroundDescription": "Erhalte Benachrichtigungen über den Fortschritt und die Fertigstellung deiner Downloads, selbst wenn die App im Hintergrund läuft.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "Vorerst überspringen", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupNext": "Weiter", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Los geht‘s", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupAllowAccessToManageFiles": "Bitte aktiviere \"Zugriff auf alle Dateien erlauben\" auf dem nächsten Bildschirm.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "dialogCancel": "Abbrechen", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogSave": "Speichern", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "Löschen", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "Wiederholen", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClear": "Leeren", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogDone": "Fertig", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "Importieren", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDownload": "Herunterladen", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "dialogDiscard": "Verwerfen", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "Entfernen", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "Deinstallieren", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "Änderungen verwerfen?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "Du hast ungespeicherte Änderungen. Möchtest du sie verwerfen?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogClearAll": "Alles löschen", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogRemoveExtension": "Erweiterung entfernen", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Bist du sicher, dass du diese Erweiterung entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "Erweiterung deinstallieren?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "Bist du sicher, dass du {extensionName} entfernen möchtest?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "Verlauf löschen", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Bist du sicher, dass du den gesamten Downloadverlauf löschen möchtest? Dies kann nicht rückgängig gemacht werden.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "Ausgewählte löschen", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "Lösche {count} {count, plural, =1{Track} other{Tracks}} aus dem Verlauf?\n\nDies löscht auch die Dateien aus dem Speicher.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Playlist importieren", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "{count} Titel gefunden hinzufügen?", - "csvImportTracks": "{count} Titel aus CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "\"{trackName}\" hinzugefügt", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAddedTracksToQueue": "{count} Titel hinzugefügt", - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAlreadyDownloaded": "\"{trackName}\" bereits heruntergeladen", - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" existiert bereits in deiner Bibliothek", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "Verlauf gelöscht", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "Anmeldedaten gespeichert", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Anmeldedaten gelöscht", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{Titel} other{Titel}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Datei kann nicht geöffnet werden: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Bitte fülle alle Felder aus", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Warteschlange anzeigen", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "{platform} URL in die Zwischenablage kopiert", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "Datei nicht gefunden", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Bitte wähle eine .spotiflac-ext Datei", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Anbieterpriorität gespeichert", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Priorität des Metadaten-Anbieters gespeichert", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} installiert.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarExtensionUpdated": "{extensionName} aktualisiert.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarFailedToInstall": "Erweiterung konnte nicht installiert werden", - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "snackbarFailedToUpdate": "Erweiterung konnte nicht aktualisiert werden", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "errorRateLimited": "Anfragelimit überschritten", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "Zu viele Anfragen. Bitte warte einen Moment, bevor du es erneut suchst.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "Keine Titel gefunden", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "errorUrlNotRecognized": "Link wurde nicht erkannt", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "Dieser Link ist inkompatibel. Prüfe die URL und stelle sicher, dass eine kompatible Erweiterung installiert ist.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Laden fehlgeschlagen. Bitte erneut versuchen.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "Kann {item} nicht laden wegen fehlender Erweiterungsquelle", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Pause", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Fortfahren", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Abbrechen", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Alles Auswählen", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Alle abwählen", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Anmeldedaten entfernen", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Anmeldedaten speichern", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} ausgewählt", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Alle Titel sind ausgewählt", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Titel zum Löschen wählen", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Lade Metadaten... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "CSV wird gelesen...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Titel", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Künstler", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Alben", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Playlists", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Ergebnisse sortieren", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Standard", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Titel (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Titel (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Künstler (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Künstler (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Dauer (kürzeste)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Dauer (längste)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Veröffentlichungsdatum (älteste)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Veröffentlichungsdatum (Neueste)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "Abspielen", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Dateinamenformat", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Erweiterte Tags anzeigen", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Formatierte Tags für Track-Padding und Datumsmuster aktivieren", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "Keine Organisation", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "Nach Playlist", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Ordner für jede Playlist trennen", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "Nach Künstler", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "Nach Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Künstler/Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Heruntergeladene Dateien in Ordner organisieren", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Alle Dateien im Download-Ordner", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Trenne Ordner nach Künstler", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Trenne Ordner nach Album", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Verschachtelte Ordner für Künstler und Album", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Update verfügbar", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Später", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Download wird gestartet...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Download fehlgeschlagen", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Das Update konnte nicht heruntergeladen werden", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Eine neue Version ist verfügbar", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Aktuell", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "Neu", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "Wird heruntergeladen...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "Was ist neu", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "Herunterladen & Installieren", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Nicht erinnern", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "Anbieterpriorität", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Ziehen, um Download-Anbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn Titel heruntergeladen werden.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "Wenn kein Titel bei dem ersten Anbieter nicht verfügbar ist, wird die App automatisch den nächsten versuchen.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerPriorityFallbackExtensionsTitle": "Erweiterungs-Fallback", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Wähle aus, welche installierten Download-Erweiterungen beim automatischen Fallback verwendet werden sollen.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Hier werden nur aktivierte Erweiterungen mit Download-Provider-Funktion aufgelistet.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Erweiterung", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Metadaten Priorität", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Ziehe, um Metadatenanbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn sie nach Tracks suchen und Metadaten abrufen.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer hat keine Limits und wird als primäre empfohlen. Spotify kann nach vielen Anfragen begrenzen.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "Keine Limitierungen", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Hat vielleicht Limitierungen", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Logs", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopied": "Logs in Zwischenablage kopiert", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Logs durchsuchen ...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Stufe", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filter", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Logs teilen", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "Logs löschen", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "Logs leeren", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "extensionUtilityFunctions": "Hilfsfunktionen", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "Bist du dir sicher, dass Sie alle Logs löschen möchtest?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "Logs nach Schweregrad filtern", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "Noch keine Logs", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Logs werden hier angezeigt, während du die App benutzt", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "Einträge ({count} gefiltert)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "{count} Einträge", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Spotify-Anmeldedaten", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Gebe deine Client-ID und Secret ein, um dein eigenes Spotify Anwendungs Limit zu haben.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Client ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Client ID einfügen", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Client Secret", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Client Secret einfügen", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "channelStable": "Stabil", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "channelPreview": "Vorschau", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "sectionSearchSource": "Suchquelle", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "sectionDownload": "Herunterladen", - "@sectionDownload": { - "description": "Settings section header" - }, - "sectionPerformance": "Performance", - "@sectionPerformance": { - "description": "Settings section header" - }, - "sectionApp": "App", - "@sectionApp": { - "description": "Settings section header" - }, - "sectionData": "Daten", - "@sectionData": { - "description": "Settings section header" - }, - "sectionDebug": "Debug", - "@sectionDebug": { - "description": "Settings section header" - }, - "sectionService": "Anbieter", - "@sectionService": { - "description": "Settings section header" - }, - "sectionAudioQuality": "Audioqualität", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "sectionFileSettings": "Datei-Einstellungen", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "sectionLyrics": "Lyrics", - "@sectionLyrics": { - "description": "Settings section header" - }, - "lyricsMode": "Lyrics-Modus", - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "lyricsModeDescription": "Wähle wie Songtexte mit deinen Downloads gespeichert werden", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "In Datei einbetten", - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "lyricsModeEmbedSubtitle": "Lyrics in FLAC Metadaten gespeichert", - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "lyricsModeExternal": "Externe .lrc Datei", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "lyricsModeExternalSubtitle": "Separate .lrc Datei für Player wie Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "Beides", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Lyrics einbetten und als .lrc speichern", - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "sectionColor": "Farbe", - "@sectionColor": { - "description": "Settings section header" - }, - "sectionTheme": "Design", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Layout", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Sprache", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "App Sprache", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "settingsAppearanceSubtitle": "Design, Farben, Anzeige", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Anbieter, Qualität, Rückfall", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, Metadaten, Lyrics, Cover-Art", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Download-Anbieter verwalten", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "App-Logs zum Debuggen anzeigen", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Link wird geladen...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Drücke wieder \"zurück\" um die App zu beenden", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Alle {count} Titel herunterladen", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Dateipfad kopieren", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Vom Gerät entfernen", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Lade Lyrics", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Metadaten", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Datei-Info", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Lyrics", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "Datei nicht gefunden", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "In Deezer öffnen", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "In Spotify öffnen", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Name des Titels", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Künstler", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Album Künstler", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Album", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Titelnummer", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "CD-Nummer", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Länge", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Audioqualität", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Erscheinungsdatum", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Genre", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Urheberrecht", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "Heruntergeladen", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Lyrics kopieren", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsNotAvailable": "Lyrics sind für diesen Titel nicht verfügbar", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsNotInFile": "Keine Lyrics in dieser Datei gefunden", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Online abrufen", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "trackLyricsTimeout": "Anfrage Timeout. Versuche es später erneut.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Fehler beim Laden der Lyrics", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Lyrics einbetten", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Lyrics erfolgreich eingebettet", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Instrumentalspur", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "In Zwischenablage kopiert", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Vom Gerät entfernen?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "Dies wird die heruntergeladene Datei dauerhaft löschen und sie aus deinem Verlauf entfernen.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "Heute", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Gestern", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "Vor {count} Tagen", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "Vor {count} Wochen", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "Vor {count} Monaten", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "Alle", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Metadaten", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Herunterladen", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Utility", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Lyrics", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Integration", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Filter entfernen", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Erweiterungs-Repository hinzufügen", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" + "cacheCleanupUnused": "Unbenutzte Daten bereinigen", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "storeAddRepoDescription": "Gib eine GitHub Repository-URL ein, die eine Registry.json Datei enthält, um Erweiterungen zu durchsuchen und zu installieren.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "Repository-URL", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "z.B. https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Repository hinzufügen", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Repository ändern", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Erweiterungs-Repository", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Aktuelles Repository:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "Neue Repository-URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Fehler beim Laden der Repository", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "Keine Erweiterung verfügbar", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "Keine Erweiterungen gefunden", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Entwickler", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Fehler", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Eigenschaften", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Metadaten-Anbieter", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Download-Anbieter", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Lyrics-Anbieter", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "URL Handler", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Qualitätsoptionen", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Post-Processing Hooks", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Berechtigungen", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Einstellungen", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Erweiterung entfernen", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Aktualisiert", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Min App-Version", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Benutzerdefiniertes Track-Matching", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Post-processing", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} Hook(s) verfügbar", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionPatternsCount": "{count} Muster", - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionStrategy": "Strategie: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "extensionsProviderPrioritySection": "Provider-Priorität", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Installierte Erweiterungen", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "Keine Erweiterungen installiert", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Installiere .spotiflac-ext Dateien um neue Anbieter hinzuzufügen", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Erweiterung installieren", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Erweiterungen können neue Metadaten und Download-Anbieter hinzufügen. Installiere nur Erweiterungen von vertrauenswürdigen Quellen.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "Erweiterung erfolgreich installiert", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsDownloadPriority": "Download-Priorität", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Download-Service-Reihenfolge festlegen", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Fallback-Erweiterungen", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Wähle welche installierten Download-Erweiterungen als Fallback verwendet werden sollen", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "Keine Erweiterungen mit Download-Provider", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Metadaten Priorität", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Reihenfolge der Such- und Metadaten quellen festlegen", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Keine Erweiterungen mit Metadaten-Anbieter", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Such-Provider", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Keine Erweiterungen mit benutzerdefinierter Suche", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Wähle den Dienst für die Suche von Titel", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Benutzerdefinierte Suche", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Fehler beim Laden der Erweiterung", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Verlustfrei", - "@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-Bit / bis 96kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-Bit / bis 192kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "Verlustbehaftet 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Verlustbehaftetes Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Verlustbehaftetes 320kbps-Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Beste Kompatibilität, ~10MB pro Titel", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Beste Qualität, ~8MB pro Titel", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Kleinste Größe, ~4MB pro Track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "Die eigentliche Qualität hängt von der Verfügbarkeit des Dienstes ab", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Qualität vor Download fragen", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Download-Ordner", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Singles Ordner trennen", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Album-Ordnerstruktur", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Ordnerstruktur für Alben festlegen", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Album-Künstler für Ordner verwenden", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Primärer Künstler nur für Ordner", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Vorgestellte Künstler aus dem Ordnernamen entfernt (z.B. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Vollständiger Künstler für Ordnername", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Qualität wählen", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Herunterladen von", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "AMOLED Schwarz", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "AMOLED Hintergrund", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Alles löschen", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Bist du dir sicher, dass du alle Downloads löschen möchten?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Auto-Export fehlgeschlagener Downloads", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Fehlgeschlagene Downloads automatisch in eine TXT-Datei speichern", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Download Netzwerk", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "WLAN + Mobile Daten", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "Nur WLAN", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Wähle aus, welches Netzwerk für Downloads verwendet werden soll. Wenn nur WLAN aktiviert wird, werden Downloads auf mobilen Daten angehalten.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Künstler/Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Alben/Künster Name/Album Name/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Künstler / [Year] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Alben/Künster Name/[2005] Album Name/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Nur Alben", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Alben/Album Name/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Year] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Alben/[2005] Album Name/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Künstler / Album + Singles", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Künstler/Album/ und Künstler/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Künstler / Album (Singles flach)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Künstler/Album/ Und Künstler/Lied.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Ausgewählte löschen", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "{count} {count, plural, =1{Titel} other{Titel}} aus diesem Album löschen?\n\nDadurch werden auch die Dateien aus dem Speicher gelöscht.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} ausgewählt", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "Alle Titel sind ausgewählt", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Tippe auf Titel zum Auswählen", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Titel zum Löschen wählen", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "recentTypeArtist": "Künstler", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Album", - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "recentTypeSong": "Titel", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "recentEmpty": "Noch keine aktuellen Einträge", - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "recentShowAllDownloads": "Alle Downloads anzeigen", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" - }, - "recentPlaylistInfo": "Playlist: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "discographyDownload": "Diskographie herunterladen", - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "discographyDownloadAll": "Alle Herunterladen", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "discographyDownloadAllSubtitle": "{count} Titel von {albumCount} Releases", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographyAlbumsOnly": "Nur Alben", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "discographyAlbumsOnlySubtitle": "{count} Titel aus {albumCount} Alben", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySinglesOnly": "Nur Singles & EPs", - "@discographySinglesOnly": { - "description": "Option - download only singles" - }, - "discographySinglesOnlySubtitle": "{count} Titel von {albumCount} Singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySelectAlbums": "Alben auswählen...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "discographySelectAlbumsSubtitle": "Wähle bestimmte Alben oder Singles", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "Lade Titel...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "Lade {current} von {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} ausgewählt", - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyDownloadSelected": "Auswahl herunterladen", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "discographyAddedToQueue": "{count} Titel zur Warteschlange hinzugefügt", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} hinzugefügt, {skipped} bereits heruntergeladen", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "Es sind keine Alben verfügbar", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "Fehler beim Abrufen einiger Alben", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "Speicherzugriff", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "Zugriff auf alle Dateien", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Darf in jeden Ordner schreiben", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Nur auf Medienordner begrenzt", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Option bei Schreibfehlern bitte aktivieren (erforderlich ab Android 13).", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "Zugriff verweigert. Bitte aktiviere \"Zugriff auf alle Dateien\" manuell in den Systemeinstellungen.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "Zugriff auf alle Dateien ist deaktiviert. Die App verwendet nur begrenzten Zugriff auf den Speicher.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "Lokale Bibliothek", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Musik scannen & Duplikate erkennen", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "Speicher & Cache", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "Größe anzeigen und Daten im Cache leeren", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "Lokale Bibliothek", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryScanSettings": "Scan Einstellungen", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "Lokale Bibliothek aktivieren", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Scan und verfolge deine bestehende Musik", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "Bibliotheksordner", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "Tippe um Ordner auszuwählen", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Duplikat Indikator anzeigen", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Bei der Suche nach vorhandenen Titeln anzeigen", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryAutoScan": "Auto-Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Scanne die Bibliothek automatisch nach neuen Dateien", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Aus", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Bei jeder App Öffnung", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Täglich", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Wöchentlich", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Aktionen", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Bibliothek scannen", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Suche nach Audiodateien", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Wähle zuerst einen Ordner", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Fehlende Dateien bereinigen", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Bibliothek löschen", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Alle gescannten Titel entfernen", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Bibliothek löschen", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "Dadurch werden alle gescannten Titel aus deiner Bibliothek entfernt. Deine eigentlichen Musikdateien werden nicht gelöscht.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "Über die lokale Bibliothek", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Durchsucht deine bestehende Musiksammlung, um Duplikate beim Herunterladen zu erkennen. Unterstützt die Formate FLAC, M4A, MP3, Opus und OGG. Metadaten werden, sofern verfügbar, aus den Dateitags gelesen.", - "@libraryAboutDescription": { - "description": "Description of local library feature" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, "libraryTracksUnit": "{count, plural, =1{1 Titel} other{{count} Titel}}", "@libraryTracksUnit": { @@ -2458,1022 +36,59 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{1 Datei} other{{count} Datein}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "folderOrganizationNone": "Keine Organisation", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScanned": "Zuletzt gescannt: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryLastScannedNever": "Nie", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Scannen...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanFinalizing": "Bibliothek wird aktualisiert...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryScanProgress": "{progress}% von {total} Dateien", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "In Bibliothek", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Entfernte {count} fehlende Dateien aus der Bibliothek", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Bibliothek geleert", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Speicherzugriff erforderlich", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC benötigt Speicherzugriff, um deine Musikbibliothek zu scannen. Bitte erteile die Berechtigung in den Einstellungen.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Der ausgewählte Ordner existiert nicht", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Heruntergeladen", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Lokal", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "Alle", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Heruntergeladen", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Lokal", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filter", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Zurücksetzen", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Anwenden", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Quelle", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Qualität", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Verlustbehaftet", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterMetadata": "Metadaten", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Komplette Metadaten", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Metadaten fehlen", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Jahr fehlt", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Genre fehlt", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Fehlender Album-Künstler", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "libraryFilterSort": "Sortieren", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Neuste", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Älteste", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "timeJustNow": "Gerade eben", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{vor 1 Minute} other{vor {count} Minuten}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{vor 1 Stunde} other{vor {count} Stunden}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "Willkommen bei SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Lass uns lernen, wie du deine Lieblingsmusik in verlustfreier Qualität herunterlädst. Dieses schnelle Tutorial zeigt dir die Grundlagen.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Lade Musik von Spotify, Deezer herunter oder jeden unterstützten Link einfügen", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Automatische Metadaten, Cover und Lyrics einbetten", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Suche Musik", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "Es gibt zwei einfache Möglichkeiten, Musik zu finden, die du herunterladen möchtest.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Musik wird heruntergeladen", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Das Herunterladen von Musik ist einfach und schnell. So funktioniert es.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Deine Bibliothek", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "Die gesamte heruntergeladene Musik ist in der Bibliothek organisiert.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "Fortschritt und Warteschlange im Bibliothek‑Tab anzeigen", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Tippe auf einen Titel, um ihn mit deinem Musikplayer abzuspielen", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Wechsle zwischen Listen- und Gitteransicht für ein besseres Surfen", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Erweiterungen", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Erweitere die Fähigkeiten der App mit Community-Erweiterungen.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Im Repo Tab findest du nützliche Erweiterungen", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Neue Download- oder Suchanbieter hinzufügen", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Lyrics, erweiterte Metadaten und mehr Funktionen erhalten", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Passe deine Benutzererfahrung an", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personalisiere die App in den Einstellungen nach deiner Präferenz.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Download-Ordner und Ordner-Organisation ändern", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Standard Audioqualität und Formateinstellungen festlegen", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "App-Design und Aussehen anpassen", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "Das ist alles! Lade jetzt deine Lieblingsmusik herunter.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Vollen Neu-Scan erzwingen", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Alle Dateien erneut scannen und Cache ignorieren", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Verwaiste Downloads bereinigen", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Entfernte {count} verwaiste Einträge aus dem Verlauf", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "Keine verwaisten Einträge gefunden", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Speicher & Cache", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Cache-Übersicht", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Das Leeren des Caches entfernt nicht heruntergeladene Musikdateien.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Geschätzte Cache-Größe: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Zwischengespeicherte Daten", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Wartung", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "App-Cache Ordner", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP-Antworten, WebView Daten und andere temporäre App-Daten.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Temporärer Ordner", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Temporäre Dateien von Downloads und Audio-Konvertierung.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "Cover-Cache", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "cacheCoverImageDesc": "Album- und Titelcover heruntergeladen. Werden erneut heruntergeladen.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "cacheLibraryCover": "Bibliotheks-Cover-Cache", - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "cacheLibraryCoverDesc": "Cover aus lokalen Musikdateien extrahiert. Wird beim nächsten Scannen neu extrahiert.", - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "cacheExploreFeed": "Feed-Cache entdecken", - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "cacheExploreFeedDesc": "Startseiten-Inhalt (neue Releases, Trends). Wird bei einem Neustart aktualisiert.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "cacheTrackLookup": "Titel Such-Cache", - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "cacheTrackLookupDesc": "Spotify/Deezer Track-ID-Lookups. Das Löschen kann die nächsten Suchergebnisse verlangsamen.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "cacheCleanupUnusedDesc": "Verwaisten Downloadverlauf und Bibliothekseinträge für fehlende Dateien entfernen.", - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "cacheNoData": "Keine gecachten Daten", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "cacheSizeWithFiles": "{size} in {count} Dateien", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheEntries": "{count} Einträge", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheClearSuccess": "Entfernt: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Cache leeren?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "cacheClearConfirmMessage": "Dies löscht zwischengespeicherte Daten in {target}. Die Musikdateien werden nicht gelöscht.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearAllConfirmTitle": "Gesamten Cache leeren?", - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "cacheClearAllConfirmMessage": "Dadurch werden alle Cache-Kategorien auf dieser Seite gelöscht. Heruntergeladene Musikdateien werden nicht gelöscht.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "cacheClearAll": "Gesamten Cache leeren", - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "cacheCleanupUnused": "Unbenutzte Daten bereinigen", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" - }, - "cacheCleanupUnusedSubtitle": "Verwaisten Downloadverlauf und fehlende Bibliothekseinträge löschen", - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "cacheCleanupResult": "Bereinigung: {downloadCount} verwaiste Downloads, {libraryCount} fehlende Bibliothekseinträge", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "cacheRefreshStats": "Statistik aktualisieren", - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "trackSaveCoverArt": "Cover speichern", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "trackSaveCoverArtSubtitle": "Albumcover als .jpg Datei speichern", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Lyrics als .lrc speichern", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Lade Lyrics als .lrc Datei", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Speichere Lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackReEnrich": "Neu-anreichern", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "trackReEnrichOnlineSubtitle": "Metadaten online suchen und in Datei einbinden", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "trackReEnrichFieldsTitle": "Felder zum Aktualisieren", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Cover-Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "trackReEnrichFieldLyrics": "Lyrics", - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "trackReEnrichFieldBasicTags": "Album, Album-Künstler", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" - }, - "trackReEnrichFieldTrackInfo": "Track & Disc Nummer", - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "trackReEnrichFieldReleaseInfo": "Datum & ISRC", - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "trackReEnrichFieldExtra": "Genre, Label, Copyright", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "trackReEnrichSelectAll": "Alles Auswählen", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "trackEditMetadata": "Metadaten bearbeiten", - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "trackCoverSaved": "Cover in {fileName} gespeichert", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackCoverNoSource": "Keine Cover Quelle vorhanden", - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "trackLyricsSaved": "Lyrics in {fileName} gespeichert", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichProgress": "Metadaten neu anreichern...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "trackReEnrichSearching": "Suche Metadaten online...", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "trackReEnrichSuccess": "Metadaten erfolgreich neu angereichert", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "trackReEnrichFfmpegFailed": "FFmpeg Metadaten-Einbettung fehlgeschlagen", - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "queueFlacAction": "Warteschlange FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "queueFlacConfirmMessage": "Suche Online-Matches für ausgewählte Titel und Playlists für FLAC-Downloads.\n\nVorhandene Dateien werden weder geändert noch gelöscht.\n\nNur eindeutige Treffer werden automatisch zur Warteschlange hinzugefügt.\n\n{count} ausgewählt", - "@queueFlacConfirmMessage": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueFlacFindingProgress": "Suche nach FLAC-Übereinstimmungen... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "Keine zuverlässigen Online-Übereinstimmungen für die Auswahl gefunden", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "queueFlacQueuedWithSkipped": "{addedCount} Titel zur Warteschlange hinzugefügt, {skippedCount} übersprungen", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "trackSaveFailed": "Fehler: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "trackConvertFormat": "Format konvertieren", - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "trackConvertFormatSubtitle": "Zu AAC/M4A, MP3, Opus, ALAC oder FLAC konvertieren", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Audio konvertieren", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Zielformat", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "trackConvertConfirmTitle": "Konvertierung bestätigen", "@trackConvertConfirmTitle": { "description": "Confirmation dialog title" }, - "trackConvertConfirmMessage": "Konvertieren von {sourceFormat} in {targetFormat} bei {bitrate}?\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "trackConvertConfirmMessageLossless": "Konvertieren von {sourceFormat} in {targetFormat}? (kein Qualitätsverlust)\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - } - } - }, - "trackConvertLosslessHint": "Verlustfreie Konvertierung kein Qualitätsverlust", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "trackConvertConverting": "Konvertiere Audio...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "trackConvertSuccess": "Konvertiert in {format} erfolgreich", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "trackConvertFailed": "Konvertierung fehlgeschlagen", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "cueSplitTitle": "CUE-Sheet aufteilen", - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "cueSplitSubtitle": "CUE+FLAC in einzelne Titel aufteilen", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "cueSplitArtist": "Künstler: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "cueSplitTrackCount": "{count} Titel", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "CUE-Album aufteilen", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "Soll „{album}“ in {count} einzelne FLAC-Dateien aufgeteilt werden?\n\nDie Dateien werden im selben Ordner gespeichert.", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "Aus", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "CUE-Sheet wird geteilt... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "Wähle aus, welche installierten Download-Erweiterungen beim automatischen Fallback verwendet werden sollen.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "{count} Titel erfolgreich aufgeteilt", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { "count": { "type": "int" } } }, - "cueSplitFailed": "CUE-Aufteilung fehlgeschlagen", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "cueSplitNoAudioFile": "Audiodatei für dieses CUE-Sheet nicht gefunden", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "cueSplitButton": "In Titel aufteilen", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "actionCreate": "Erstellen", - "@actionCreate": { - "description": "Generic action button - create" - }, - "collectionFoldersTitle": "Meine Ordner", - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "collectionWishlist": "Wunschliste", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "collectionLoved": "Lieblingssongs", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "collectionPlaylists": "Playlists", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "collectionPlaylist": "Playlist", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "collectionAddToPlaylist": "Zur Playlist hinzufügen", - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "collectionCreatePlaylist": "Playlist erstellen", - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "collectionNoPlaylistsYet": "Noch keine Playlists", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "collectionNoPlaylistsSubtitle": "Playlist erstellen, um Titel zu kategorisieren", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedToPlaylist": "Zu \"{playlistName} \" hinzugefügt", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Bereits in \"{playlistName}\"", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Playlist erstellt", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "collectionPlaylistNameHint": "Playlist-Name", - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" - }, - "collectionPlaylistNameRequired": "Playlist-Name ist erforderlich", - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "collectionRenamePlaylist": "Playlist umbenennen", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "collectionDeletePlaylist": "Playlist löschen", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "collectionDeletePlaylistMessage": "Willst du \"{playlistName}\" und alle darin enthaltenen Titel löschen?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist gelöscht", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Playlist umbenannt", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "collectionWishlistEmptyTitle": "Wunschliste ist leer", - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "collectionWishlistEmptySubtitle": "Tippe auf das + bei den Titeln, um sie zum späteren Herunterladen zu speichern", - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "collectionLovedEmptyTitle": "Lieblingssongs sind leer", - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "collectionLovedEmptySubtitle": "Tippe auf das Herz, um deine Favoriten zu behalten", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "collectionPlaylistEmptyTitle": "Die Playlist ist leer", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "collectionPlaylistEmptySubtitle": "Drücke lange + auf einem beliebigen Titel, um ihn hier hinzuzufügen", - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "collectionRemoveFromPlaylist": "Von Playlist entfernen", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "collectionRemoveFromFolder": "Aus Ordner entfernen", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "collectionRemoved": "\"{trackName}\" entfernt", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" zu Lieblingssongs hinzugefügt", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromLoved": "\"{trackName}\" aus Lieblingssongs entfernt", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToWishlist": "\"{trackName}\" zur Wunschliste hinzugefügt", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromWishlist": "\"{trackName}\" aus der Wunschliste entfernt", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "trackOptionAddToLoved": "Zu Lieblingssongs hinzufügen", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "trackOptionRemoveFromLoved": "Aus Lieblingssongs entfernt", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "trackOptionAddToWishlist": "Zur Wunschliste hinzufügen", - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" - }, - "trackOptionRemoveFromWishlist": "Von der Wunschliste entfernen", - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "collectionPlaylistChangeCover": "Coverbild ändern", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" - }, - "collectionPlaylistRemoveCover": "Cover entfernen", - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, "selectionShareCount": "Teile {count} {count, plural, =1{Titel} other{Titel}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", @@ -3483,42 +98,102 @@ } } }, - "selectionShareNoFiles": "Keine teilbare Dateien gefunden", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "selectionConvertCount": "Konvertiere {count} {count, plural, =1{Titel} other{Titel}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "Keine konvertierbare Titel ausgewählt", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Batch-Konvertierung", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "selectionBatchConvertConfirmMessage": "Konvertiere {count} {format} {count, plural, =1{Titel} other{Titel}} zu {bitrate}?\n\nOriginaldateien werden nach der Konvertierung gelöscht.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "trackCoverReplace": "Cover ersetzen", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, + "downloadAppleElrcWordSyncEnabled": "Rohe Zeitstempel erhalten", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "Titel", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "Logs teilen", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "Erweiterung installieren", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "Überprüfe deine Internetverbindung", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "Keine Erweiterungen installiert", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "CUE-Aufteilung fehlgeschlagen", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Unterstützte URL einfügen oder nach Namen suchen", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "selectionBatchConvertConfirmMessageLossless": "Konvertiere {count} {count, plural, =1{Titel} other{Titel}} in {format}? (kein Qualitätsverlust)\n\nOriginaldateien werden nach der Konvertierung gelöscht.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", @@ -3531,18 +206,297 @@ } } }, - "selectionBatchConvertProgress": "Konvertiere {current} von {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Veröffentlichungsdatum (älteste)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "Ersteller von I Don't Have Spotify (IDHS). Der Fallback-Link-Resolver, der den Tag rettet!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "Farbe", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Cover-Cache", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "CUE-Album aufteilen", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Entfernt: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "Cover-Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "Bitte wähle eine .spotiflac-ext Datei", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Playlist zum Herunterladen wählen", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Zu Favoriten hinzufügen", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{count} Titel von {albumCount} Singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, + "optionsExtensionStore": "Erweiterungs-Repo", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "{count} aus dem Download-Verlauf (von der Liste ausgeschlossen)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "Nur Singles & EPs", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "Bette Metadaten ein...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "Konvertiere {count} {count, plural, =1{Titel} other{Titel}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Cover-Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Lyrics, erweiterte Metadaten und mehr Funktionen erhalten", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Album öffnen {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 Titel erfolgreich heruntergeladen} other{{count} Titel erfolgreich heruntergeladen}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "Herunterladen", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Telegram Kanal", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "Post-Processing Hooks", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "Herunterladen", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "Ausgewählte löschen", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Cover auswählen", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "{success} von {total} Titeln in {format} konvertiert", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3558,906 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} heruntergeladen", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} Informationen nicht verfügbar", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Ordner benannt nach dem Tag des Albumkünstlers", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Ordner benannt nach dem Tag des Künstlers", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "lyricsProvidersTitle": "Priorität des Lyrics-Anbieters", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" - }, - "lyricsProvidersDescription": "Lyrics aktivieren, deaktivieren und neu ordnen. Anbieter werden von oben nach unten ausprobiert, bis Lyrics gefunden werden.", - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "lyricsProvidersEnabledSection": "({count}) aktiviert", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersDisabledSection": "({count}) deaktiviert", - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersAtLeastOne": "Mindestens ein Anbieter muss aktiviert bleiben", - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "lyricsProvidersSaved": "Priorität des Lyrics-Anbieters gespeichert", - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "lyricsProvidersDiscardContent": "Ungespeicherte Änderungen die verloren gehen.", - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "lyricsProviderLrclibDesc": "Open-Source-Synchronisierte Lyrics-Datenbank", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (gut für asiatische Lieder)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "lyricsProviderMusixmatchDesc": "Größte Lyrics-Datenbank (mehrsprachig)", - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "lyricsProviderAppleMusicDesc": "Wort-für-Wort-synchronisierte Lyrics (via Proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "lyricsProviderQqMusicDesc": "QQ Music (gut für chinesische Lieder, via Proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "lyricsProviderExtensionDesc": "Erweiterungsanbieter", - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "safMigrationTitle": "Speicheraktualisierung erforderlich", - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "safMigrationMessage1": "SpotiFLAC verwendet jetzt Android Storage Access Framework (SAF) beim Herunterladen. Dies behebt Fehler bei Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "safMigrationMessage2": "Bitte wähle dein Download-Ordner erneut aus, um zum neuen System zu wechseln.", - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "safMigrationSuccess": "Download-Ordner auf SAF-Modus aktualisiert", - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "settingsDonate": "Unterstütze die Entwicklung", - "@settingsDonate": { - "description": "Settings menu item - donate" - }, - "settingsDonateSubtitle": "Kaufe dem Entwickler einen Kaffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "tooltipLoveAll": "Alle lieben", - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" - }, - "tooltipAddToPlaylist": "Zur Wiedergabeliste hinzufügen", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "snackbarRemovedTracksFromLoved": "{count} Titel von geliebt entfernt", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedTracksToLoved": "{count} titel zu geliebt hinzugefügt", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogDownloadAllTitle": "Alle Herunterladen", - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "dialogDownloadAllMessage": "{count} titel herunterladen?", - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "homeSkipAlreadyDownloaded": "Bereits heruntergeladene Titel überspringen", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "homeGoToAlbum": "Zum Album gehen", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "homeAlbumInfoUnavailable": "Albuminfo nicht verfügbar", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "snackbarLoadingCueSheet": "CAE-Sheet wird geladen...", - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "snackbarMetadataSaved": "Metadaten erfolgreich gespeichert", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "snackbarFailedToEmbedLyrics": "Fehler beim Einbinden der Lyrics", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "snackbarFailedToWriteStorage": "Fehler beim Zurückschreiben in den Speicher", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "snackbarError": "Fehler: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", - "placeholders": { - "error": { + "type": { "type": "String" } } }, - "snackbarNoActionDefined": "Keine Aktion für Taste definiert", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "Keine Titel in diesem Album gefunden", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "Design", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "Wählen Sie den Speicherort für Ihre heruntergeladenen Titel", - "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "storageModeAppFolder": "App-Ordner (empfohlen)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "storageModeAppFolderSubtitle": "Standardmäßig in Music/SpotiFLAC speichern", - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "storageModeSaf": "Benutzerdefinierter Ordner (SAF)", - "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "storageModeSafSubtitle": "Wähle einen beliebigen Ordner, inklusive SD-Karte", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadFilenameDescription": "Verwende {artist}, {title}, {album}, {track}, {year}, {date}, {disc} als Platzhalter.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilenameInsertTag": "Tippe, um Tag einzufügen:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadSeparateSinglesEnabled": "Singles und EPs werden in einem separaten Ordner gespeichert", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadSeparateSinglesDisabled": "Singles und Alben im selben Ordner gespeichert", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "downloadArtistNameFilters": "Künstlernamen-Filter", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Playlist-Quellordner", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "Für jede Playlist wird ein Unterordner erstellt", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "Alle Titel direkt im Download-Ordner gespeichert", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Wird durch die Ordnerorganisationseinstellung verarbeitet", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "SongLink-Region", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Netzwerkkompatibilitätsmodus", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Verwendung der Legacy-TLS-Einstellungen für ältere Netzwerke", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Standard-Netzwerkeinstellungen verwenden", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Metadaten-Einbettung zuerst aktivieren", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: Übersetzung einschließen", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinesische Übersetzungszeilen enthalten", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original Lyrics verwenden", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Romanisierung einschließen", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanisierungszeilen enthalten", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "Keine Romanisierung", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Personen-Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Sängerlabel für Duette und Gruppentitel enthalten", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standardlyrics ohne Lautsprecher-Labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Musixmatch Sprache", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (Originalsprache)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Mitwirkende Künstler filtern", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Mitwirkende Künstler vom Albumname des Künstlers entfernt", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Volle Album Künstler String verwendet", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "Keine Anbieter aktiviert", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Sprach-Code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Gib einen BCP-47 Sprachcode ein (z.B. en, de, ja), um übersetzte Lyrics von Musixmatch anzufordern.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Auto", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "WLAN oder mobile Daten verwenden", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads bei mobilen Daten pausieren", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region, die beim Auflösen von Titellinks über SongLink verwendet wird. Wähle das Land, in dem der Streaming-Dienste verfügbar sind.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the SongLink region picker" - }, - "snackbarUnsupportedAudioFormat": "Nicht unterstütztes Audioformat", - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "cacheRefresh": "Aktualisieren", - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" - }, - "dialogDownloadPlaylistsMessage": "Lade {trackCount} {trackCount, plural, =1{Titel} other{Titel}} von {playlistCount} {playlistCount, plural, =1{Playlist} other{Playlists}}?", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "bulkDownloadPlaylistsButton": "Lade {count} {count, plural, =1{Playlist} other{Playlists}} herunter", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "bulkDownloadSelectPlaylists": "Playlist zum Herunterladen wählen", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "snackbarSelectedPlaylistsEmpty": "Ausgewählte Playlisten haben keine Titel", - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "playlistsCount": "{count, plural, =1{1 Playlist} other{{count} Playlists}}", - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAutoFill": "Aus online ausfüllen", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "editMetadataAutoFillDesc": "Wähle Felder aus, die automatisch aus Online-Metadaten ausgefüllt werden sollen", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "editMetadataAutoFillFetch": "Abrufen & Ausfüllen", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "editMetadataAutoFillSearching": "Online suchen...", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "editMetadataAutoFillNoResults": "Keine passenden Metadaten online gefunden", - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "editMetadataAutoFillDone": "{count} {count, plural, =1{Feld} other{Felder}} aus Online-Metadaten gefüllt", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAutoFillNoneSelected": "Wähle mindestens ein Feld zum automatischen Ausfüllen aus", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "editMetadataFieldTitle": "Titel", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "editMetadataFieldArtist": "Künstler", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "editMetadataFieldAlbum": "Album", - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "editMetadataFieldAlbumArtist": "Album Künstler", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "editMetadataFieldDate": "Datum", - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "editMetadataFieldTrackNum": "Titel #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" - }, - "editMetadataFieldDiscNum": "Disk #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "editMetadataFieldGenre": "Genre", - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "editMetadataFieldCopyright": "Urheberrecht", - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" - }, - "editMetadataFieldCover": "Cover-Art", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "editMetadataSelectAll": "Alle", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" - }, - "editMetadataSelectEmpty": "Nur leer", - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "queueDownloadingCount": "{count} werden heruntergeladen", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueDownloadedHeader": "Heruntergeladen", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "queueFilteringIndicator": "Filtere...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "queueTrackCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueAlbumCount": "{count, plural, =1{1 Album} other{{count} Alben}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueEmptyAlbums": "Keine Album-Downloads", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "queueEmptyAlbumsSubtitle": "Lade mehrere Titel eines Albums herunter, um sie hier zu sehen", - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "queueEmptySingles": "Kein Single Download", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "queueEmptySinglesSubtitle": "Einzelne Titel-Downloads werden hier angezeigt", - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "queueEmptyHistory": "Kein Download-Verlauf", - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "queueEmptyHistorySubtitle": "Heruntergeladene Titel werden hier angezeigt", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "selectionAllPlaylistsSelected": "Alle Playlists ausgewählt", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "selectionTapPlaylistsToSelect": "Zum Auswählen auf Playlists tippen", - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "selectionSelectPlaylistsToDelete": "Playlist zum Löschen wählen", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "audioAnalysisTitle": "Audio-Qualitätsanalyse", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "audioAnalysisDescription": "Verlustfreie Qualität mit Spektrumanalyse überprüfen", - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "audioAnalysisAnalyzing": "Audio wird analysiert...", - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "audioAnalysisSampleRate": "Sample Rate", - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "audioAnalysisBitDepth": "Bit-Tiefe", - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "audioAnalysisChannels": "Kanäle", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "audioAnalysisDuration": "Länge", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "audioAnalysisNyquist": "Nyquist", - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "audioAnalysisFileSize": "Größe", - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "audioAnalysisDynamicRange": "Dynamischer Bereich", - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" - }, - "audioAnalysisPeak": "Maximum", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "audioAnalysisSamples": "Proben", - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "audioAnalysisRescan": "Neu analysieren", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "audioAnalysisRescanning": "Audio wird analysiert...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Mit {providerName} suchen", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Anbieter", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "extensionsHomeFeedDescription": "Wählen Sie die Erweiterung aus, die den Start-Feed auf dem Hauptbildschirm anzeigt", - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "extensionsHomeFeedAuto": "Auto", - "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Automatisch die besten verfügbaren auswählen", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "extensionsHomeFeedUse": "{extensionName} Home Feed verwenden", - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "extensionsNoHomeFeedExtensions": "Keine Erweiterungen mit Home-Feed", - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Download abbrechen?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "Dadurch wird der aktive Download für \"{trackName}\" abgebrochen.", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" zur Wunschliste hinzugefügt", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Behalten", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "metadataSaveFailedFfmpeg": "Fehler beim Speichern der Metadaten über FFmpeg", - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" - }, - "metadataSaveFailedStorage": "Metadaten konnten nicht zurück in den Speicher geschrieben werden", - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "snackbarFolderPickerFailed": "Fehler beim Öffnen des Ordners: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", + "logAffectedDomains": "Betroffen: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Fehler beim Laden des Albums", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Fehler beim Laden der Playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "Keine Titel gefunden", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Fehler beim Laden des Interpreten", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "Anbieterpriorität", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Download Fortschritt", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Zeigt Download-Fortschritt für Titel an", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Bibliotheksscan", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Zeigt den Fortschritt des lokalen Bibliotheksscans an", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "{trackName} wird heruntergeladen", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifFinalizingTrack": "{trackName} wird fertiggestellt", - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifEmbeddingMetadata": "Bette Metadaten ein...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" - }, - "notifAlreadyInLibraryCount": "Bereits in der Bibliothek ({completed}/{total})", - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifAlreadyInLibrary": "Bereits in der Bibliothek", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" - }, - "notifDownloadCompleteCount": "Download abgeschlossen ({completed}/{total})", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifDownloadComplete": "Download abgeschlossen", - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "notifDownloadsFinished": "Downloads abgeschlossen ({completed} fertig, {failed} fehlgeschlagen)", - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "notifAllDownloadsComplete": "Alle Downloads abgeschlossen", - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 Titel erfolgreich heruntergeladen} other{{count} Titel erfolgreich heruntergeladen}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifScanningLibrary": "Scanne lokale Bibliothek", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" - }, - "notifLibraryScanProgressWithTotal": "{scanned}/{total} Dateien • {percentage}%", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "notifLibraryScanProgressNoTotal": "{scanned} gescannte Dateien • {percentage}%", - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "notifLibraryScanComplete": "Bibliotheksscan abgeschlossen", - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" - }, - "notifLibraryScanCompleteBody": "{count} titel indiziert", - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanExcluded": "{count} ausgeschlossen", - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanErrors": "{count} Fehler", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanFailed": "Bibliotheksscan fehlgeschlagen", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "notifLibraryScanCancelled": "Bibliotheksscan abgebrochen", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" - }, - "notifLibraryScanStopped": "Scan wurde vor Abschluss gestoppt.", - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "notifDownloadingUpdate": "SpotiFLAC Mobile v{version} wird heruntergeladen", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "Vom Gerät entfernen?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "Keine Anbieter aktiviert", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Album, Album-Künstler", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Wähle einen beliebigen Ordner, inklusive SD-Karte", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4472,132 +653,514 @@ } } }, - "notifUpdateReady": "Update bereit", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Vorgestellte Künstler aus dem Ordnernamen entfernt (z.B. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} heruntergeladen. Zum Installieren tippen.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Scanne lokale Bibliothek", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "notifUpdateFailed": "Update fehlgeschlagen", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" - }, - "notifUpdateFailedBody": "Update konnte nicht heruntergeladen werden. Versuche es später erneut.", - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "settingsFiles": "Dateien & Ordner", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "settingsFilesSubtitle": "Speicherort, Dateiname, Ordnerstruktur", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "settingsMetadata": "Metadaten", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "settingsMetadataSubtitle": "Cover Art, Tags, ReplayGain, Anbieter", - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "settingsLyrics": "Lyrics", - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "settingsLyricsSubtitle": "Einbetten, Modus, Anbieter, Sprachoptionen", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" - }, - "settingsApp": "App", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "settingsAppSubtitle": "Updates, Daten, Erweiterungsrepo, Debug", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "sectionMetadataProviders": "Anbieter", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "sectionDuplicates": "Duplikate", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "sectionLyricsProviderOptions": "Anbieter-Optionen", - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "metadataProvidersTitle": "Priorität des Metadaten-Anbieters", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "metadataProvidersSubtitle": "Zieh, um Such- und Metadatenquellenreihenfolge zu setzen", "@metadataProvidersSubtitle": { "description": "Subtitle for metadata provider priority item" }, - "downloadDeduplication": "Doppelte Downloads überspringen", - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" + "setupGetStarted": "Los geht‘s", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Bereits heruntergeladene Titel werden übersprungen", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "Alle Titel werden unabhängig vom Verlauf heruntergeladen", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "Layout", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Fallback-Erweiterungen", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Wähle, welche Erweiterungen als Fallback verwendet werden können", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" + "queueFinalizingDownload": "Download wird abgeschlossen", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" }, - "homeEmptyTitle": "Noch keine Suchanbieter", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Installiere eine Erweiterung um fortzufahren.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Sprache auswählen", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Wählen deine bevorzugte Sprache für die App. Dies kann später in den Einstellungen geändert werden.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "Systemstandard", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Quelle: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "source": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "extensionsMetadataPriority": "Metadaten Priorität", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "updateCurrent": "Aktuell", + "@updateCurrent": { + "description": "Label for current version" + }, + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (gut für asiatische Lieder)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "Du kannst erneut Scannen, wenn er fertig ist.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "Lösche {count} {count, plural, =1{Track} other{Tracks}} aus dem Verlauf?\n\nDies löscht auch die Dateien aus dem Speicher.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrich": "Neu-anreichern", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "Speicherzugriff erforderlich", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "Für jede Playlist wird ein Unterordner erstellt", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Bist du sicher, dass du den gesamten Downloadverlauf löschen möchtest? Dies kann nicht rückgängig gemacht werden.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Mitwirkende Künstler vom Albumname des Künstlers entfernt", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Gerade eben", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Verwaiste Downloads bereinigen", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Lieblingskünstler", + "audioAnalysisRescanning": "Audio wird analysiert...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Playlists", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "Logs", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "Vorschau", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{Playlist} other{Playlists}} gelöscht", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "Startseite", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "Min App-Version", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 Download vom Nutzer abgebrochen} other{{count} Downloads vom Nutzer abgebrochen}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Konvertiere {current} von {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "Client-ID: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Nie", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "Titelnummer", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist-Quellordner", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "Mitwirkende", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Speicher", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "Mit anderen Nutzern chatten", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "Alle Playlists ausgewählt", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Spotify/Deezer Track-ID-Lookups. Das Löschen kann die nächsten Suchergebnisse verlangsamen.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Link wurde nicht erkannt", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinesische Übersetzungszeilen enthalten", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Tippe auf das Herz, um deine Favoriten zu behalten", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "Keine Limitierungen", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadaten erfolgreich neu angereichert ({successCount}/{total}) - fehlgeschlagen: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Label fehlt", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "Metadaten", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Aus Lieblingssongs entfernt", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Fehler beim Laden des Albums", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "Client ID einfügen", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "Suchquelle", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "Zugriff auf alle Dateien", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, "extensionsInstalledCount": "{count} Erweiterungen erfolgreich installiert", "@extensionsInstalledCount": { "description": "Success message after installing multiple extensions", @@ -4608,6 +1171,3228 @@ } } }, + "snackbarFailedToEmbedLyrics": "Fehler beim Einbinden der Lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads abgebrochen", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Album- und Titelcover heruntergeladen. Werden erneut heruntergeladen.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "Alles löschen", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Vollständiger Künstler für Ordnername", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Aus Ordner entfernen", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "Metadaten", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "Zu viele Anfragen. Bitte warte einen Moment, bevor du es erneut suchst.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "Datei nicht gefunden", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer hat keine Limits und wird als primäre empfohlen. Spotify kann nach vielen Anfragen begrenzen.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "PC Quellcode", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Aus online ausfüllen", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{Titel} other{Titel}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Open-Source-Synchronisierte Lyrics-Datenbank", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Gib einen BCP-47 Sprachcode ein (z.B. en, de, ja), um übersetzte Lyrics von Musixmatch anzufordern.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "{platform} URL in die Zwischenablage kopiert", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Lade {current} von {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-Scrollen AN", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "Anbieter", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "{count} Titel zur Warteschlange hinzugefügt", + "cueSplitTrackCount": "{count} Titel", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Playlist importieren", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Lokale Bibliothek", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Logs kopieren", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads bei mobilen Daten pausieren", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Veröffentlichungsdatum (Neueste)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "Alle Titel werden unabhängig vom Verlauf heruntergeladen", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "Singles & EPs", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Erweiterungs-Fallback", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Playlist: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "Detaillierte Protokollierung", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "Kleinste Größe, ~4MB pro Track", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Aktionen", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "Kein Ordner ausgewählt. Soll der Standard-Musikordner verwendet werden?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "Fehler: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Im Repo Tab findest du nützliche Erweiterungen", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Extension providers are required", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Wort-für-Wort-synchronisierte Lyrics (via Proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "Optionen", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "Das Update konnte nicht heruntergeladen werden", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Geschätzte Cache-Größe: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "Wiederholen", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Tippe auf einen Titel, um ihn mit deinem Musikplayer abzuspielen", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Dienst offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "Alle abwählen", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "Unterstützt: Titel, Album, Playlist, Künstler-URLs", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Aus Favoriten entfernen", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Die Playlist ist leer", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Neuste", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "Alle Dateien im Download-Ordner", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "Alben", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Duplikate", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "Das ausgewählte Cover ersetzt das aktuell eingebettete Cover, wenn auf speichern gedrückt wird.", + "cacheSectionMaintenance": "Wartung", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Konvertiere {count} {format} {count, plural, =1{Titel} other{Titel}} zu {bitrate}?\n\nOriginaldateien werden nach der Konvertierung gelöscht.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-Bit / bis 192kHz", + "snackbarRemovedTracksFromLoved": "{count} Titel von geliebt entfernt", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "Künstler/Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "Datei kann nicht geöffnet werden: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "Erforderlich - zum Konfigurieren tippen", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "Lyrics sind für diesen Titel nicht verfügbar", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "Utility", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Zu \"{playlistName} \" hinzugefügt", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Cache leeren?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Year] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Speicher & Cache", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "Keine Erweiterungen mit Metadaten-Anbieter", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Titel (Z-A)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Audio-Qualitätsanalyse", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16-bit / 44,1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Bibliothek wird aktualisiert...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Automatischer Fallback", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Dateien & Ordner", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "Mobile-Version Entwickler", + "errorCouldNotKeepFolderAccess": "Konnte nicht auf den ausgewählten Ordner zugreifen", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Bereits heruntergeladene Titel überspringen", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "Deinstallieren", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Playlist löschen", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "Herunterladen", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "Künstler", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "URL Handler", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Erweitert", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{vor 1 Minute} other{vor {count} Minuten}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "Systemstandard", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} Einträge", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "Reihenfolge der Such- und Metadaten quellen festlegen", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Titel zum Löschen wählen", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Download-Ordner und Ordner-Organisation ändern", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Nur auf Medienordner begrenzt", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "Herunterladen", + "settingsFilesSubtitle": "Speicherort, Dateiname, Ordnerstruktur", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Zieh, um Such- und Metadatenquellenreihenfolge zu setzen", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "Titel zum Löschen wählen", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "Abbrechen", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "Benachrichtigungen aktivieren", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "Entwickler", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "Dateinamenformat", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "Suchverlauf...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Temporäre Dateien von Downloads und Audio-Konvertierung.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "Lyrics einbetten", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "Client Secret einfügen", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "Verlauf gelöscht", + "downloadNetworkCompatibilityModeDisabled": "Standard-Netzwerkeinstellungen verwenden", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "Lyrics-Anbieter", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "Alle", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Suche Musik", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "In Spotify öffnen", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Heruntergeladen", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Fehler beim Abrufen einiger Alben", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 Titel} other{{count} Titel}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Dienst zur Suche nach Titel oder Albumnamen", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "{count} werden heruntergeladen", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "Audioqualität", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Entfernte {count} fehlende Dateien aus der Bibliothek", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "Noch keine Lieblingskünstler", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "{count} titel zu geliebt hinzugefügt", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "Dadurch wird der aktive Download für \"{trackName}\" abgebrochen.", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "Größe anzeigen und Daten im Cache leeren", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} titel indiziert", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Alben auswählen...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Musik-Metadaten durchsuchen, Erweiterungen verwalten und deine Bibliothek organisieren.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "Benutzerdefiniertes Track-Matching", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "Eigenschaften", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Lade Lyrics als .lrc Datei", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Zu viele Anfragen an den Dienst", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Verlustbehaftetes 320kbps-Format", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover Art, Tags, ReplayGain, Anbieter", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Metadaten online suchen und in Datei einbinden", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Das Herunterladen von Musik ist einfach und schnell. So funktioniert es.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Willst du \"{playlistName}\" und alle darin enthaltenen Titel löschen?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Metadaten erfolgreich neu angereichert", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "\"{trackName}\" hinzugefügt", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Bei jeder App Öffnung", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Kanäle", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "Liste", + "updateDownloadInstall": "Herunterladen & Installieren", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Aus", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Titel (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" aus Lieblingssongs entfernt", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "Audioqualität", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Konvertiert in {format} erfolgreich", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "Bist du sicher, dass du {extensionName} entfernen möchtest?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android Dienst für Downloads von Erweiterungen", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "Aktualisieren", + "libraryFilterMetadataMissingAny": "Metadaten fehlen", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Wähle Felder aus, die automatisch aus Online-Metadaten ausgefüllt werden sollen", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "SongLink-Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Suche Online-Matches für ausgewählte Titel und Playlists für FLAC-Downloads.\n\nVorhandene Dateien werden weder geändert noch gelöscht.\n\nNur eindeutige Treffer werden automatisch zur Warteschlange hinzugefügt.\n\n{count} ausgewählt", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Zur Wiedergabeliste hinzufügen", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "Berechtigungen", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "Ankündigungen und Updates", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "Priorität des Metadaten-Anbieters", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Dekodiertes Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "Bereits in \"{playlistName}\"", + "discographyAlbumsOnlySubtitle": "{count} Titel aus {albumCount} Alben", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "Benachrichtigungen aktivieren", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "Design, Farben, Anzeige", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "Abspielen", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Durchsucht deine bestehende Musiksammlung, um Duplikate beim Herunterladen zu erkennen. Unterstützt die Formate FLAC, M4A, MP3, Opus und OGG. Metadaten werden, sofern verfügbar, aus den Dateitags gelesen.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "Qualität vor Download fragen", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "Instrumentalspur", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Doppelte Downloads überspringen", + "libraryFilterSortOldest": "Älteste", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "Vorerst überspringen", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "Neue Repository-URL", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "Dies löscht zwischengespeicherte Daten in {target}. Die Musikdateien werden nicht gelöscht.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "Abspielen", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "Update-Kanal", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "Fehlgeschlagene Downloads automatisch in eine TXT-Datei speichern", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Künstler (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Album Künstler", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "Keine zuverlässigen Online-Übereinstimmungen für die Auswahl gefunden", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "In Deezer öffnen", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "Wähle iCloud oder einen anderen Speicherort", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} monatliche Hörer", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Zwischengespeicherte Daten", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "Download abgeschlossen", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "Singles und EPs werden in einem separaten Ordner gespeichert", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "App-Dokumentenordner", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "Fehler beim Laden der Repository", + "settingsDownloadNetwork": "Download Netzwerk", + "metadataSaveFailedStorage": "Metadaten konnten nicht zurück in den Speicher geschrieben werden", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Einzelne beigefügte Werte", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Titel", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Künstler (Z-A)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Anbieter, Qualität, Rückfall", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Zuletzt gescannt: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "iOS-Einschränkung: Leere Ordner können nicht ausgewählt werden. Wähle einen Ordner mit mindestens einer Datei.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "Neu", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "Download-Anbieter verwalten", + "sortAlphaAsc": "A-Z", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Alles Auswählen", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "Alben/Künster Name/[2005] Album Name/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{Sache} other{Sachen}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Lade Titel...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "Keine Album-Downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "Fehler", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "({count}) aktiviert", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "{trackName} wird heruntergeladen", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "Erscheinungsdatum", + "discographySelectedCount": "{count} ausgewählt", + "collectionArtistCount": "{count, plural, =1{1 Künstler} other{{count} Künstler}}", + "logIssueNetworkErrorLabel": "NETZWERKFEHLER", + "updateStartingDownload": "Download wird gestartet...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "CD-Nummer", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "Erweiterung verwenden: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Automatische Metadaten, Cover und Lyrics einbetten", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "Keine verwaisten Einträge gefunden", + "discographySkippedDownloaded": "{added} hinzugefügt, {skipped} bereits heruntergeladen", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Priorität des Lyrics-Anbieters", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Fehler: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "Ungespeicherte Änderungen die verloren gehen.", + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Konvertieren von {sourceFormat} in {targetFormat}? (kein Qualitätsverlust)\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", + "discographyAlbumsOnly": "Nur Alben", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Wähle welche installierten Download-Erweiterungen als Fallback verwendet werden sollen", + "aboutSocial": "Sozial", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Ausgewähltes Cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Bereits heruntergeladene Titel werden übersprungen", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "Noch keine Suchanbieter", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "Installiert", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Bei der Suche nach vorhandenen Titeln anzeigen", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "Herunterladen", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "Fehler beim Laden der Lyrics", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "Berechtigung verweigert. Bitte erteile alle Berechtigungen um fortzufahren.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "Nur WLAN", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} aktualisiert.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Installiere eine Erweiterung um fortzufahren.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Musik wird heruntergeladen", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Fallback, Metadaten, Lyrics, Cover-Art", + "navLibrary": "Bibliothek", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "Alle", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "Keine Erweiterung verfügbar", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "Vorschau kann Fehler oder unvollständige Funktionen enthalten", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Bibliotheksscan abgeschlossen", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Unterstützte URL einfügen oder suchen...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "Installiere .spotiflac-ext Dateien um neue Anbieter hinzuzufügen", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "Besonderer Dank", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "Installieren", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "Alben", + "extensionCustomUrlHandlingSubtitle": "Diese Erweiterung kann Links von diesen Seiten benutzen", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Formatierte Tags für Track-Padding und Datumsmuster aktivieren", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "Einträge ({count} gefiltert)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Repository hinzufügen", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "Problem melden", + "snackbarFailedToWriteStorage": "Fehler beim Zurückschreiben in den Speicher", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Ungültiger Ordner ausgewählt", + "allFilesAccessDisabledMessage": "Zugriff auf alle Dateien ist deaktiviert. Die App verwendet nur begrenzten Zugriff auf den Speicher.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Sprach-Code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "Du hast ungespeicherte Änderungen. Möchtest du sie verwerfen?", + "setupChooseFromFiles": "Aus Dateien auswählen", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" aus der Wunschliste entfernt", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "Erweiterung erfolgreich installiert", + "progressReadingCsv": "CSV wird gelesen...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "Default Search", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Einen Künstler wert wie \"Artist A, Artist B\" für maximale Spieler-Kompatibilität schreiben.", + "downloadLossy320": "Verlustbehaftet 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Warteschlange FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Anbieter-Optionen", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Titel abwählen", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "Kein Download-Verlauf", + "optionsTitle": "Optionen", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "Leeren", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "Option bei Schreibfehlern bitte aktivieren (erforderlich ab Android 13).", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "Konvertierung bestätigen", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "Playlist gelöscht", + "metadataMayRateLimit": "Hat vielleicht Limitierungen", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "Alle lieben", + "downloadDirectory": "Download-Ordner", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "Bibliotheksordner", + "optionsMaxQualityCoverSubtitle": "Cover in höchster Auflösung herunterladen", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "Startseiten-Inhalt (neue Releases, Trends). Wird bei einem Neustart aktualisiert.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "Öffne Track {trackName} von {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Playlist erstellen, um Titel zu kategorisieren", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Größe", + "extensionHealthServiceOnline": "Dienste online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "{count} Einträge", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Konvertieren von {sourceFormat} in {targetFormat} bei {bitrate}?\n\nDie Originaldatei wird nach der Konvertierung gelöscht.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "Nach Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "App", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Deaktiviert: keine Lautstärke-Normalisierungs-Tags", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Einbetten, Modus, Anbieter, Sprachoptionen", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKIERUNG ERKANNT", + "storeFilterIntegration": "Integration", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "Heruntergeladen", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "Auf iOS werden Downloads im Dokumentenordner der App gespeichert. Du kannst sie über die Datei-App aufrufen.", + "optionsArtistTagModeDescription": "Wähle aus, wie mehrere Künstler in eingebetteten Tags geschrieben sind.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "Titel", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "Datei-Einstellungen", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spektralschnitt", + "dialogDelete": "Löschen", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "Die gesamte heruntergeladene Musik ist in der Bibliothek organisiert.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "Anmeldedaten gespeichert", + "cacheCleanupResult": "Bereinigung: {downloadCount} verwaiste Downloads, {libraryCount} fehlende Bibliothekseinträge", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Verlustfreie Konvertierung kein Qualitätsverlust", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Playlist umbenennen", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Gesamte Fehler: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Automatisch die besten verfügbaren auswählen", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Wählen deine bevorzugte Sprache für die App. Dies kann später in den Einstellungen geändert werden.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Künstler", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Drücke lange + auf einem beliebigen Titel, um ihn hier hinzuzufügen", + "artistCompilations": "Zusammenstellungen", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Fehler beim Öffnen des Ordners: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Bibliotheksscan", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "Öffne {title}, {count} {count, plural, =1{Item} other{Items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "Datei-Info", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Fehlender Album-Künstler", + "audioAnalysisNoClipping": "Kein Clipping", + "tutorialSettingsDesc": "Personalisiere die App in den Einstellungen nach deiner Präferenz.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "Separate .lrc Datei für Player wie Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Use the default metadata search", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "Lade Lyrics", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Zurücksetzen", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Erweiterungs-Repo", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Bibliothek geleert", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download abgeschlossen", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Lokale Bibliothek", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "Alle Titel sind ausgewählt", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 Album} other{{count} Alben}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Bibliothek löschen", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "Alles löschen", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "von {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Erweitere die Fähigkeiten der App mit Community-Erweiterungen.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Genre", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "Nach Playlist", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Cover speichern", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "Mindestens ein Anbieter muss aktiviert bleiben", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "Standard verwenden", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Logs werden hier angezeigt, während du die App benutzt", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Speichere Lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Cover in {fileName} gespeichert", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{Prüfung} other{Prüfungen}} konfiguriert", + "cleanupOrphanedDownloadsSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Download Fortschritt", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "Lyrics", + "libraryAutoScan": "Auto-Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC verwendet jetzt Android Storage Access Framework (SAF) beim Herunterladen. Dies behebt Fehler bei Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "Speicherzugriff erforderlich", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "Raster", + "trackConvertConverting": "Konvertiere Audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "Schreibe einen Künstler Tag pro Künstler für FLAC und Opus; MP3 und M4A bleiben beigetreten.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Wähle aus, welcher Tab zuerst für neue Suchergebnisse geöffnet wird.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "Es gibt zwei einfache Möglichkeiten, Musik zu finden, die du herunterladen möchtest.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "Dadurch werden alle Cache-Kategorien auf dieser Seite gelöscht. Heruntergeladene Musikdateien werden nicht gelöscht.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Home Feed Anbieter", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unbekanntes Album", + "trackCoverCurrent": "Aktuelles Cover", + "downloadSongLinkRegionDesc": "Region, die beim Auflösen von Titellinks über SongLink verwendet wird. Wähle das Land, in dem der Streaming-Dienste verfügbar sind.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "Fertig", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "Repository-URL", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress}% von {total} Dateien", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Lieblingssongs sind leer", + "tutorialExtensionsTitle": "Erweiterungen", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Dauer (kürzeste)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "Dateipfad kopieren", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Künstler/Album/ Und Künstler/Lied.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Titel #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "Erweiterung konnte nicht aktualisiert werden", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Bereits in der Bibliothek", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Playlist-Name", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Sprache auswählen", + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "Spotify-Suche wird am 3. März 2026 aufgrund von Änderungen der Spotify-API entfernt. Bitte wechsel vorher zu Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC benötigt Speicherzugriff, um deine Musikbibliothek zu scannen. Bitte erteile die Berechtigung in den Einstellungen.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Bist du sicher, dass du diese Erweiterung entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "Speicherort", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Verwendung der Legacy-TLS-Einstellungen für ältere Netzwerke", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Zu Lieblingssongs hinzufügen", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "App-Cache Ordner", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Größte Lyrics-Datenbank (mehrsprachig)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "Post-processing", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "Logs in Zwischenablage kopiert", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Künstler wird gesucht...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "Als Standardordner verwenden?", + "tutorialSearchHint": "Einfügen oder suchen...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Musixmatch Sprache", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "Externe .lrc Datei", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "Logs durchsuchen ...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "Client ID", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "benötigt", + "actionCancel": "Abbrechen", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Deaktiviert (erweitert): Metadateneinbettung überspringen", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Einzelnes Dateinamenformat", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Das Leeren des Caches entfernt nicht heruntergeladene Musikdateien.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Falsches ISRC-Format", + "libraryFilterMetadataMissingTrackNumber": "Fehlende Tracknummer", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Pro Kanal Statistik", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "Kein Single Download", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Spotify Titel in FLAC herunterladen", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "Vom Gerät entfernen", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Cache-Übersicht", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "z.B. https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Speicheraktualisierung erforderlich", + "snackbarMetadataSaved": "Metadaten erfolgreich gespeichert", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "Logs leeren", + "extensionsCustomSearch": "Benutzerdefinierte Suche", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} in {count} Dateien", + "actionRemoveCredentials": "Anmeldedaten entfernen", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "Keine teilbare Dateien gefunden", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "{count} Titel hinzugefügt", + "downloadFilenameInsertTag": "Tippe, um Tag einzufügen:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" entfernt aus Lieblingskünstlern", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Herunterladen - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Bibliotheksscan fehlgeschlagen", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Neu analysieren", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{1 Datei} other{{count} Datein}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Wähle zuerst einen Ordner", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Alben", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Nicht konfiguriert", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "Ordner für jede Playlist trennen", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Erweiterungsanbieter", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Audio konvertieren", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "Vorerst überspringen", + "sectionDownload": "Herunterladen", + "downloadLossyOpus256Subtitle": "Beste Qualität, ~8MB pro Titel", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Benötigt v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Ziehe, um Metadatenanbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn sie nach Tracks suchen und Metadaten abrufen.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "Erweiterungen können neue Metadaten und Download-Anbieter hinzufügen. Installiere nur Erweiterungen von vertrauenswürdigen Quellen.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Jahr fehlt", + "extensionsDownloadPriority": "Download-Priorität", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Bibliothek scannen", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "Download fehlgeschlagen", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "AMOLED Hintergrund", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Zeigt Download-Fortschritt für Titel an", + "setupIcloudNotSupported": "iCloud Drive wird nicht unterstützt. Bitte verwende den \"Dokumente\" Ordner.", + "trackLyricsEmbeddedSource": "Eingebettet", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, "extensionsInstallPartialSuccess": "{installed} von {attempted} Erweiterungen installiert", "@extensionsInstallPartialSuccess": { "description": "Message when installing multiple extensions partially succeeds", @@ -4622,155 +4407,99 @@ } } }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Beste mobile Kompatibilität, M4A Container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Lieblingskünstler", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 Künstler} other{{count} Künstler}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", "placeholders": { "count": { "type": "int" } } }, - "collectionFavoriteArtistsEmptyTitle": "Noch keine Lieblingskünstler", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "notifLibraryScanCancelled": "Bibliotheksscan abgebrochen", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" }, - "collectionFavoriteArtistsEmptySubtitle": "Tippe auf das Herz auf einer Künstlerseite, um sie hier zu sehen", - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" + "collectionPlaylistNameRequired": "Playlist-Name ist erforderlich", + "libraryCleanupMissingFiles": "Fehlende Dateien bereinigen", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" }, - "collectionAddedToFavoriteArtists": "\"{artistName}\" zu Lieblingskünstlern hinzugefügt", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" entfernt aus Lieblingskünstlern", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "artistOptionAddToFavorites": "Zu Favoriten hinzufügen", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "artistOptionRemoveFromFavorites": "Aus Favoriten entfernen", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" - }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "downloadAppleElrcWordSyncEnabled": "Rohe Zeitstempel erhalten", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "downloadAppleElrcWordSyncDisabled": "Sichere Line-by-line Apple Music Texte", - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "audioAnalysisCodec": "Codec", - "@audioAnalysisCodec": { - "description": "Audio codec metric label" - }, - "audioAnalysisContainer": "Container", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "audioAnalysisDecodedFormat": "Dekodiertes Format", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" + "searchSortTitle": "Ergebnisse sortieren", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" }, "audioAnalysisLufs": "LUFS", - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" + "extensionsErrorLoading": "Fehler beim Laden der Erweiterung", + "@actionPaste": { + "description": "Generic action - paste from clipboard" }, - "audioAnalysisClipping": "Clipping", - "@audioAnalysisClipping": { - "description": "Clipping metric label" + "aboutFeatureRequestSubtitle": "Schlage neue Funktionen für die App vor", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" }, - "audioAnalysisNoClipping": "Kein Clipping", - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" + "@aboutTitle": { + "description": "About page title" }, - "audioAnalysisSpectralCutoff": "Spektralschnitt", - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" }, - "audioAnalysisChannelStats": "Pro Kanal Statistik", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" + "@actionGo": { + "description": "Generic action button label" }, - "extensionsHomeFeedOff": "Aus", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "Aktualisiert", + "@extensionUpdated": { + "description": "Extension detail - last update" }, - "extensionsHomeFeedOffSubtitle": "Start-Feed nicht auf dem Hauptbildschirm anzeigen", - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" + "downloadLossyFormat": "Verlustbehaftetes Format", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" }, - "notifDownloadsFinishedBody": "{completed, plural, =1{1 Titel heruntergeladen} other{{completed} Titel heruntergeladen}}, {failed, plural, =1{1 fehlgeschlagen} other{{failed} fehlgeschlagen}}", - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", + "snackbarAlreadyInLibrary": "\"{trackName}\" existiert bereits in deiner Bibliothek", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" + "trackName": { + "type": "String" } } }, - "notifDownloadsCanceledTitle": "Downloads abgebrochen", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Teile Links von diesen Seiten mit SpotiFLAC Mobile und diese Erweiterung wird sie verarbeiten.", + "libraryFilterQuality": "Qualität", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 Download vom Nutzer abgebrochen} other{{count} Downloads vom Nutzer abgebrochen}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", + "editMetadataAutoFillDone": "{count} {count, plural, =1{Feld} other{Felder}} aus Online-Metadaten gefüllt", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", "placeholders": { "count": { "type": "int" } } }, - "searchTracks": "Titel", - "@searchTracks": { - "description": "Search filter label - tracks" + "@discographyDownload": { + "description": "Button - download artist discography" }, - "homeSearchHintDefault": "Unterstützte URL einfügen oder suchen...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "trackReEnrichFieldsTitle": "Felder zum Aktualisieren", + "aboutFeatureRequest": "Feature vorschlagen", + "downloadSingleFilenameFormatDescription": "Dateinamenmuster für Singles und EPs. Verwendet die gleichen Tags wie das Albumformat.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" }, - "homeSearchHintProvider": "Mit {providerName} suchen...", - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", + "queueClearAllMessage": "Bist du dir sicher, dass du alle Downloads löschen möchten?", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Zuletzt geprüft {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", "placeholders": { - "providerName": { + "time": { "type": "String" } } @@ -4779,253 +4508,519 @@ "@homeImportCsvTooltip": { "description": "Tooltip for importing a CSV file into Home search" }, - "homeChangeSearchProviderTooltip": "Suchanbieter ändern", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" }, - "actionPaste": "Einfügen", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" }, - "searchTracksHint": "Titel suchen...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Nach Titel suchen", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Einfügen oder suchen...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "tutorialDownloadCompletedSemantics": "Download abgeschlossen", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "tutorialDownloadInProgressSemantics": "Download wird ausgeführt", - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "tutorialStartDownloadSemantics": "Download starten", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "optionsEmbedMetadata": "Eingebettete Metadaten", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "optionsEmbedMetadataSubtitleOn": "Schreibe Metadaten, Cover und eingebettete Songtexte in Dateien", - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "optionsEmbedMetadataSubtitleOff": "Deaktiviert (erweitert): Metadateneinbettung überspringen", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Deaktiviert, wenn Metadateneinbettung aus ist", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "Kein eingebettetes Albumcover gefunden", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "trackCoverReplace": "Cover ersetzen", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "trackCoverPick": "Cover auswählen", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "trackCoverClearSelected": "Ausgewähltes Cover löschen", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "trackCoverCurrent": "Aktuelles Cover", - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "trackCoverSelected": "Ausgewähltes Cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "trackCoverReplaceNotice": "Das ausgewählte Cover ersetzt das aktuell eingebettete Cover, wenn auf speichern gedrückt wird.", - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Download wird abgeschlossen", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Heruntergeladene Datei fehlt", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "queueDownloadCompleted": "Download abgeschlossen", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "queueRateLimitTitle": "Service rate limited", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "appearanceSelectAccentColor": "Wähle Akzentfarbe {hex}", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "logAutoScrollOn": "Auto-Scrollen AN", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "logAutoScrollOff": "Auto-Scrollen AUS", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "logCopyLogs": "Logs kopieren", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "logClearSearch": "Suche löschen", + "dialogClearHistoryTitle": "Verlauf löschen", "@logClearSearch": { "description": "Tooltip for clearing the log search field" }, - "logIssueIspBlockingLabel": "ISP BLOCKIERUNG ERKANNT", - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "dialogImport": "Importieren", + "@dialogImport": { + "description": "Dialog button - import data" }, - "logIssueIspBlockingDescription": "Dein ISP blockiert möglicherweise den Zugriff auf den Download Dienst", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" }, - "logIssueIspBlockingSuggestion": "Versuche es einem VPN oder ändere DNS auf 1.1.1.1 oder 8.8.8.8", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" + "notifLibraryScanErrors": "{count} Fehler", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "Erweiterung deinstallieren?", + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "Dies wird die heruntergeladene Datei dauerhaft löschen und sie aus deinem Verlauf entfernen.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "System", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "Künstler / Album + Singles", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Wähle mindestens ein Feld zum automatischen Ausfüllen aus", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Komponist", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "Speicherzugriff erforderlich", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "Löschen", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Fehlende Disc-Nummer", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "Priorität des Metadaten-Anbieters gespeichert", + "setupPermissionRequired": "{permissionType}-Berechtigung erforderlich", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Eingeschränkt", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "Keine Lyrics in dieser Datei gefunden", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Spotify-Anmeldedaten", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Künstlernamen-Filter", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Alle Downloads anzeigen", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Nummer", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tippe auf \"Mit Spotify verbinden\" um dieses Feld auszufüllen.", + "setupNext": "Weiter", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Täglich", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-Scrollen AUS", + "trackConvertFailed": "Konvertierung fehlgeschlagen", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "Deinstallieren", + "safMigrationSuccess": "Download-Ordner auf SAF-Modus aktualisiert", + "optionsClearHistorySubtitle": "Alle heruntergeladenen Titel aus dem Verlauf entfernen", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "Keine Erweiterungen mit Home-Feed", + "optionsUpdateChannelStable": "Nur stabile Versionen", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "Playlists", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Netzwerkkompatibilitätsmodus", + "settingsAppearance": "Erscheinungsbild", "logIssueRateLimitedLabel": "LIMIT ERKANNT", "@logIssueRateLimitedLabel": { "description": "Diagnostic badge label when the service rate limits requests" }, - "logIssueRateLimitedDescription": "Zu viele Anfragen an den Dienst", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" + "logIssueSummary": "Problemübersicht", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" }, - "logIssueRateLimitedSuggestion": "Warte ein paar Minuten, bevor du es erneut versuchst", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "Aktuelles Repository:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" }, - "logIssueNetworkErrorLabel": "NETZWERKFEHLER", - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" + "@trackLyrics": { + "description": "Tab title - lyrics" }, - "logIssueNetworkErrorDescription": "Verbindungsprobleme erkannt", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "@backupImportButton": { + "description": "Button to pick a backup file to restore" }, - "logIssueNetworkErrorSuggestion": "Überprüfe deine Internetverbindung", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "@setupFolderChoose": { + "description": "Button to choose folder" }, - "logIssueTrackNotFoundLabel": "TITEL NICHT GEFUNDEN", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" + "storageModeAppFolderSubtitle": "Standardmäßig in Music/SpotiFLAC speichern", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "logIssueTrackNotFoundDescription": "Einige Titel konnten auf Download-Diensten nicht gefunden werden", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" + "@regionCountryAU": { + "description": "Country name for SongLink region picker" }, - "logIssueTrackNotFoundSuggestion": "Der Titel ist möglicherweise nicht in verlustfreier Qualität verfügbar", - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" }, - "clickableLookingUpArtist": "Künstler wird gesucht...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" + "libraryFilterApply": "Anwenden", + "@libraryFilterApply": { + "description": "Apply filters button" }, - "clickableInformationUnavailable": "{type} Informationen nicht verfügbar", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Bitte aktiviere \"Zugriff auf alle Dateien erlauben\" auf dem nächsten Bildschirm.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "Lyrics", + "extensionSettingNotSet": "Nicht eingestellt", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: Übersetzung einschließen", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "{count} Titel erfolgreich aufgeteilt", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", "placeholders": { - "type": { - "type": "String" - } - } - }, - "extensionDetailsTags": "Tags", - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "extensionDetailsInformation": "Info", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "extensionUtilityFunctions": "Hilfsfunktionen", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" - }, - "actionDismiss": "Schließen", - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "setupChangeFolderTooltip": "Ordner ändern", - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" - }, - "a11yOpenTrackByArtist": "Öffne Track {trackName} von {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "a11yOpenItem": "{itemType} {name} öffnen", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "a11yOpenItemCount": "Öffne {title}, {count} {count, plural, =1{Item} other{Items}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, "count": { "type": "int" } } }, - "a11yOpenAlbumByArtistTrackCount": "Öffne Album {albumName} von {artistName}, {trackCount} Titel", + "cueSplitArtist": "Künstler: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Wunschliste", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Abrufen & Ausfüllen", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "Ziehen, um Download-Anbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn Titel heruntergeladen werden.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Einzelne Titel-Downloads werden hier angezeigt", + "downloadLossyOpus128": "Opus 128kbps", + "downloadUseAlbumArtistForFolders": "Album-Künstler für Ordner verwenden", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", + "updateLater": "Später", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "Fortfahren", + "optionsDetailedLoggingOff": "Für Fehlerberichte aktivieren", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Mitwirkende Künstler filtern", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Ordner benannt nach dem Tag des Künstlers", + "storeSearch": "Erweiterungen suchen...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Telegram Community", + "lyricsModeBoth": "Beides", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Scanne die Bibliothek automatisch nach neuen Dateien", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Lokale Bibliothek aktivieren", + "queueFlacFindingProgress": "Suche nach FLAC-Übereinstimmungen... ({current}/{total})", + "trackConvertTargetFormat": "Zielformat", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "Einstellungen", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "Anfrage Timeout. Versuche es später erneut.", + "settingsExtensions": "Erweiterungen", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Heruntergeladen", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "Dynamische Farben", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Sichere Line-by-line Apple Music Texte", + "credentialsTitle": "Spotify-Anmeldedaten", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "Erscheinungsbild", + "downloadNeteaseIncludeRomanizationDisabled": "Keine Romanisierung", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 Titel} other{{count} Titel}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Suche löschen", + "trackSaveLyrics": "Lyrics als .lrc speichern", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Download abgeschlossen", + "snackbarAlreadyDownloaded": "\"{trackName}\" bereits heruntergeladen", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Trenne Ordner nach Album", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Nach Titel suchen", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Lyrics einbetten und als .lrc speichern", + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "Lyrics", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "Strategie: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "Tags für FLAC/Opus aufteilen", + "extensionsHomeFeedUse": "{extensionName} Home Feed verwenden", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Download abbrechen?", + "updateWhatsNew": "Was ist neu", + "updateNewVersionReady": "Eine neue Version ist verfügbar", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Titel auswählen", + "libraryClearSubtitle": "Alle gescannten Titel entfernen", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Alle", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Repo", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "Scan Einstellungen", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "Länge", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Titel suchen...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Künstler", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "In Bibliothek", + "pressBackAgainToExit": "Drücke wieder \"zurück\" um die App zu beenden", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "Benachrichtigungs-Berechtigung erteilt", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Unterstütze die Entwicklung", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "Nicht erinnern", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Online suchen...", + "discographyDownloadSelected": "Auswahl herunterladen", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Filtere...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Choose the default search provider to switch back from an extension", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Soll „{album}“ in {count} einzelne FLAC-Dateien aufgeteilt werden?\n\nDie Dateien werden im selben Ordner gespeichert.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Temporärer Ordner", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Duplikat Indikator anzeigen", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Mit {providerName} suchen...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "Nach Updates suchen", + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "recentTypeAlbum": "Album", + "providerExtension": "Erweiterung", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "Keine Cover Quelle vorhanden", + "libraryFilterMetadata": "Metadaten", + "albumFolderArtistYearAlbum": "Künstler / [Year] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5040,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} von {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Stabil", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "App-Design und Aussehen anpassen", + "setupAppDocumentsFolderSubtitle": "Empfohlen - zugänglich über die Datei-App", + "a11yPlayTrackByArtist": "Spiele {trackName} von {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -5052,6 +5062,320 @@ } } }, + "dialogRemove": "Entfernen", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Lade {count} {count, plural, =1{Playlist} other{Playlists}} herunter", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "Andere Dienste versuchen, wenn Download fehlschlägt", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} Muster", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "Dieser Link ist inkompatibel. Prüfe die URL und stelle sicher, dass eine kompatible Erweiterung installiert ist.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Künstler Tag-Modus", + "libraryFilterMetadataComplete": "Komplette Metadaten", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Scanne Lautstärke und füge ReplayGain-Tags ein (EBU R128)", + "libraryScanning": "Scannen...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Aktualisieren", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "Speichere synchronisierte Liedtexte zusammen mit heruntergeladenen Titeln", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Lade mehrere Titel eines Albums herunter, um sie hier zu sehen", + "extensionEnterValue": "Wert eingeben", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Lieblingssongs", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Erweiterungs-Repository hinzufügen", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "CUE+FLAC in einzelne Titel aufteilen", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "Noch keine Playlists", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Verlaufseinträge für Dateien löschen, die nicht mehr existieren", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "Nach Künstler", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "Übersetzer", + "notifAlreadyInLibraryCount": "Bereits in der Bibliothek ({completed}/{total})", + "editMetadataFieldTitle": "Titel", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Fehler beim Laden des Interpreten", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "Die eigentliche Qualität hängt von der Verfügbarkeit des Dienstes ab", + "downloadFilenameDescription": "Verwende {artist}, {title}, {album}, {track}, {year}, {date}, {disc} als Platzhalter.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Z-A", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service-Gesundheit", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC benötigt Speicherrechte, um die heruntergeladenen Musikdateien zu speichern.", + "tutorialReadyMessage": "Das ist alles! Lade jetzt deine Lieblingsmusik herunter.", + "tutorialLibraryTip3": "Wechsle zwischen Listen- und Gitteransicht für ein besseres Surfen", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "Hell", + "queueEmptyHistorySubtitle": "Heruntergeladene Titel werden hier angezeigt", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "{addedCount} Titel zur Warteschlange hinzugefügt, {skippedCount} übersprungen", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "Speicherort auswählen", + "dialogDownloadAllTitle": "Alle Herunterladen", + "providerPriorityInfo": "Wenn kein Titel bei dem ersten Anbieter nicht verfügbar ist, wird die App automatisch den nächsten versuchen.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "Es sind keine Alben verfügbar", + "downloadAppleQqMultiPersonDisabled": "Standardlyrics ohne Lautsprecher-Labels", + "cacheNoData": "Keine gecachten Daten", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Download starten", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Versuche es einem VPN oder ändere DNS auf 1.1.1.1 oder 8.8.8.8", + "aboutTitle": "Über", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "Verlaufsansicht", + "audioAnalysisSampleRate": "Sample Rate", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "Titel Such-Cache", + "extensionsHomeFeedOffSubtitle": "Start-Feed nicht auf dem Hauptbildschirm anzeigen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Status aktualisieren", + "notifAllDownloadsComplete": "Alle Downloads abgeschlossen", + "downloadNeteaseIncludeRomanizationEnabled": "Romanisierungszeilen enthalten", + "editMetadataFieldDateHint": "JJJJ-MM-TT oder JJJJJ", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "Teilen", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{count} Titel von {albumCount} Releases", + "settingsDonateSubtitle": "Kaufe dem Entwickler einen Kaffee", + "libraryFilterDownloaded": "Heruntergeladen", + "downloadNetworkAnySubtitle": "WLAN oder mobile Daten verwenden", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Scan wurde vor Abschluss gestoppt.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "Lyrics kopieren", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "Album-Ordnerstruktur", + "downloadMusixmatchAuto": "Auto", + "actionDismiss": "Schließen", + "storeFilterAll": "Alle", + "extensionsDisabled": "Deaktiviert", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "{count} titel herunterladen?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Deine Bibliothek", + "optionsCheckUpdatesSubtitle": "Benachrichtigen, wenn neue Version verfügbar", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "Vor {count} Monaten", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Legacy", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Playlist umbenannt", + "collectionCreatePlaylist": "Playlist erstellen", + "homeGoToAlbum": "Zum Album gehen", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Trenne Ordner nach Künstler", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "Version {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Primärer Künstler nur für Ordner", + "tutorialExtensionsTip2": "Neue Download- oder Suchanbieter hinzufügen", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "Willkommen bei SpotiFLAC!", "a11ySelectAlbum": "Wähle Album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -5061,89 +5385,679 @@ } } }, - "a11yOpenAlbum": "Album öffnen {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "Mobiler Quellcode", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Quelle", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Speicherzugriff", + "logFilterBySeverity": "Logs nach Schweregrad filtern", + "libraryFolderNotExist": "Der ausgewählte Ordner existiert nicht", + "optionsEmbedMetadataSubtitleOn": "Schreibe Metadaten, Cover und eingebettete Songtexte in Dateien", + "albumFolderArtistAlbum": "Künstler/Album", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "Zugriff verweigert. Bitte aktiviere \"Zugriff auf alle Dateien\" manuell in den Systemeinstellungen.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Nur leer", + "settingsLocalLibrarySubtitle": "Musik scannen & Duplikate erkennen", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "Erweiterungsanbieter verwenden", + "cacheCleanupUnusedSubtitle": "Verwaisten Downloadverlauf und fehlende Bibliothekseinträge löschen", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Genre fehlt", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "editMetadataFieldDateHint": "JJJJ-MM-TT oder JJJJJ", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "setupFolderDescription": "Wähle einen Ordner, in dem die heruntergeladene Musik gespeichert wird.", + "extensionDetailsTags": "Tags", + "unknownArtist": "Unbekannter Künstler", + "trackFetchOnlineLyrics": "Online abrufen", + "snackbarNoActionDefined": "Keine Aktion für Taste definiert", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, + "downloadAllCount": "Alle {count} Titel herunterladen", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "Disc {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "Anmeldedaten speichern", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "Von der Wunschliste entfernen", + "extensionsFallbackTitle": "Fallback-Erweiterungen", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Fehler beim Speichern der Metadaten über FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Ausgewählte löschen", + "selectionSelectPlaylistsToDelete": "Playlist zum Löschen wählen", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Gib eine GitHub Repository-URL ein, die eine Registry.json Datei enthält, um Erweiterungen zu durchsuchen und zu installieren.", + "appearanceThemeDark": "Dunkel", + "downloadedAlbumTapToSelect": "Tippe auf Titel zum Auswählen", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "Keine passenden Metadaten online gefunden", + "updateDownloading": "Wird heruntergeladen...", + "trackLyricsSource": "Quelle: {source}", + "logFilterLevel": "Stufe", + "logNoLogsYet": "Noch keine Logs", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Öffne in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "Dadurch werden alle gescannten Titel aus deiner Bibliothek entfernt. Deine eigentlichen Musikdateien werden nicht gelöscht.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Auto", + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "Heute", + "a11yOpenItem": "{itemType} {name} öffnen", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Bit-Tiefe", "editMetadataFieldTrackTotal": "Titel insgesamt", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "Disc gesamt", "@editMetadataFieldDiscTotal": { "description": "Label for total discs field in the edit metadata sheet" }, - "editMetadataFieldComposer": "Komponist", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "editMetadataFieldComment": "Kommentar", - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "editMetadataAdvanced": "Erweitert", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "libraryFilterMetadataMissingTrackNumber": "Fehlende Tracknummer", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "libraryFilterMetadataMissingDiscNumber": "Fehlende Disc-Nummer", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "libraryFilterMetadataMissingArtist": "Fehlender Künstler", - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Falsches ISRC-Format", - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" - }, - "libraryFilterMetadataMissingLabel": "Label fehlt", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "collectionDeletePlaylistsMessage": "Lösche {count} {count, plural, =1{Playlist} other{Playlists}}?", - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Ordner benannt nach dem Tag des Albumkünstlers", + "optionsSpotifyWarning": "Spotify erfordert eigene API-Anmeldedaten. Kostenlos erhältlich auf developer.spotify.com", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{Playlist} other{Playlists}} gelöscht", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedTracksToPlaylist": "{count} {count, plural, =1{Titel} other{Titel}} zu {playlistName} hinzugefügt", - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Metadaten bearbeiten", + "discographyDownloadAll": "Alle Herunterladen", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "Alben/Künster Name/Album Name/", + "extensionHealthServiceUnknown": "Dienst-Status unbekannt", + "navHome": "Startseite", + "queueDownloadStarting": "Starte...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} gescannte Dateien • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "selectionSelected": "{count} ausgewählt", + "extensionDetailsInformation": "Info", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Diskographie herunterladen", + "editMetadataFieldCopyright": "Urheberrecht", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Sortieren", + "cacheLibraryCoverDesc": "Cover aus lokalen Musikdateien extrahiert. Wird beim nächsten Scannen neu extrahiert.", + "dialogRemoveExtension": "Erweiterung entfernen", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Metadaten-Einbettung zuerst aktivieren", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "Alles Auswählen", + "settingsDownloadNetworkSubtitle": "Wähle aus, welches Netzwerk für Downloads verwendet werden soll. Wenn nur WLAN aktiviert wird, werden Downloads auf mobilen Daten angehalten.", + "downloadFolderOrganization": "Ordnerstruktur", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "Alle Titel sind ausgewählt", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "App-Logs zum Debuggen anzeigen", + "albumFolderYearAlbumSubtitle": "Alben/[2005] Album Name/", + "cancelDownloadKeep": "Behalten", + "optionsDetailedLoggingOn": "Detaillierte Logs werden aufgezeichnet", + "safMigrationMessage2": "Bitte wähle dein Download-Ordner erneut aus, um zum neuen System zu wechseln.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Update fehlgeschlagen", + "downloadCreatePlaylistSourceFolderRedundant": "Wird durch die Ordnerorganisationseinstellung verarbeitet", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Wählen Sie den Speicherort für Ihre heruntergeladenen Titel", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "({count}) deaktiviert", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Lokal", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "Anbieter", + "lyricsProviderQqMusicDesc": "QQ Music (gut für chinesische Lieder, via Proxy)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Verwaisten Downloadverlauf und Bibliothekseinträge für fehlende Dateien entfernen.", + "selectionTapPlaylistsToSelect": "Zum Auswählen auf Playlists tippen", + "notifUpdateFailedBody": "Update konnte nicht heruntergeladen werden. Versuche es später erneut.", + "downloadNeteaseIncludeTranslationDisabled": "Original Lyrics verwenden", + "artistPopular": "Beliebt", + "extensionRemoveButton": "Erweiterung entfernen", + "allFilesAccessEnabledSubtitle": "Darf in jeden Ordner schreiben", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Such-Provider", + "tutorialWelcomeDesc": "Lass uns lernen, wie du deine Lieblingsmusik in verlustfreier Qualität herunterlädst. Dieses schnelle Tutorial zeigt dir die Grundlagen.", + "selectionBatchConvertConfirmTitle": "Batch-Konvertierung", + "extensionMetadataProvider": "Metadaten-Anbieter", + "queueDownloadedFileMissing": "Heruntergeladene Datei fehlt", + "logClearLogs": "Logs löschen", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Lade Musik von Spotify, Deezer herunter oder jeden unterstützten Link einfügen", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Warte ein paar Minuten, bevor du es erneut versuchst", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "Künstler", + "extensionCustomUrlHandling": "Benutzerdefinierte URL-Handling", + "appearanceDynamicColorSubtitle": "Farben deines Hintergrundbilds verwenden", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "Standard", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choose how album folders are structured", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "App-Ordner (empfohlen)", + "collectionPlaylistCreated": "Playlist erstellt", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Albumcover als .jpg Datei speichern", + "actionPaste": "Einfügen", + "extensionSettingsCount": "{count} {count, plural, =1{Einstellung} other{Einstellungen}}", + "downloadNativeWorker": "Nativer Download Dienst", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "Statistik aktualisieren", + "collectionPlaylistChangeCover": "Coverbild ändern", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "Download-Verlauf löschen", + "trackGenre": "Genre", + "snackbarSelectedPlaylistsEmpty": "Ausgewählte Playlisten haben keine Titel", + "collectionAddedTracksToPlaylist": "{count} {count, plural, =1{Titel} other{Titel}} zu {playlistName} hinzugefügt", + "downloadNeteaseIncludeRomanization": "Netease: Romanisierung einschließen", + "libraryFilterMetadataMissingArtist": "Fehlender Künstler", + "extensionsNoCustomSearch": "Keine Erweiterungen mit benutzerdefinierter Suche", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "Download-Anbieter", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "Lyrics-Modus", + "aboutReportIssueSubtitle": "Melde Probleme, die dir auffallen", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "AMOLED Schwarz", + "logIssueNetworkErrorDescription": "Verbindungsprobleme erkannt", + "folderOrganizationByArtistAlbumSubtitle": "Verschachtelte Ordner für Künstler und Album", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "Berechtigung erlauben", + "lyricsProvidersDescription": "Lyrics aktivieren, deaktivieren und neu ordnen. Anbieter werden von oben nach unten ausprobiert, bis Lyrics gefunden werden.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "Vor {count} Tagen", + "extensionsHomeFeedDescription": "Wählen Sie die Erweiterung aus, die den Start-Feed auf dem Hauptbildschirm anzeigt", + "downloadLossyMp3Subtitle": "Beste Kompatibilität, ~10MB pro Titel", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "Wunschliste ist leer", + "downloadAppleQqMultiPersonEnabled": "Sängerlabel für Duette und Gruppentitel enthalten", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Dienst Eingeschränkt", + "optionsUseExtensionProvidersOn": "Extension providers are enabled", + "selectionConvertNoConvertible": "Keine konvertierbare Titel ausgewählt", + "snackbarCredentialsCleared": "Anmeldedaten gelöscht", + "setupStorageGranted": "Speicherberechtigung erlaubt!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Deaktiviert, wenn Metadateneinbettung aus ist", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} ausgeschlossen", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Ordner ändern", + "logIssueIspBlockingDescription": "Dein ISP blockiert möglicherweise den Zugriff auf den Download Dienst", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "Bibliothek löschen", + "collectionRemoveFromPlaylist": "Von Playlist entfernen", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 Titel heruntergeladen} other{{completed} Titel heruntergeladen}}, {failed, plural, =1{1 fehlgeschlagen} other{{failed} fehlgeschlagen}}", + "storeCategoryMetadata": "Metadaten", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Disc gesamt", + "tutorialLibraryTip1": "Fortschritt und Warteschlange im Bibliothek‑Tab anzeigen", + "playlistsCount": "{count, plural, =1{1 Playlist} other{{count} Playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "Alle Titel direkt im Download-Ordner gespeichert", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "Lokal", + "tutorialDownloadInProgressSemantics": "Download wird ausgeführt", + "searchSortDurationLong": "Dauer (längste)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "Über die lokale Bibliothek", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Audiodatei für dieses CUE-Sheet nicht gefunden", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} heruntergeladen. Zum Installieren tippen.", + "appearanceSelectAccentColor": "Wähle Akzentfarbe {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "Rescan ReplayGain", + "downloadSeparateSinglesFolder": "Singles Ordner trennen", + "trackAlbumArtist": "Album Künstler", + "qualityFlacLossless": "FLAC Verlustfrei", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Passe deine Benutzererfahrung an", + "extensionActionFailed": "Aktion fehlgeschlagen", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Personen-Lyrics", + "downloadFallbackExtensionsSubtitle": "Wähle, welche Erweiterungen als Fallback verwendet werden können", + "notifChannelLibraryScanDesc": "Zeigt den Fortschritt des lokalen Bibliotheksscans an", + "storeExtensionsCount": "{count} {count, plural, =1{Erweiterung} other{Erweiterungen}}", + "trackCoverNoEmbeddedArt": "Kein eingebettetes Albumcover gefunden", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" entfernt", + "setupStorageAccessMessageAndroid11": "Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.", + "notifDownloadsFinished": "Downloads abgeschlossen ({completed} fertig, {failed} fehlgeschlagen)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} Dateien • {percentage}%", + "optionsPrimaryProvider": "Primärer Anbieter", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "Der Titel ist möglicherweise nicht in verlustfreier Qualität verfügbar", + "collectionAddedToLoved": "\"{trackName}\" zu Lieblingssongs hinzugefügt", + "albumFolderArtistAlbumFlat": "Künstler / Album (Singles flach)", + "homeAlbumInfoUnavailable": "Albuminfo nicht verfügbar", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unbekannt", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "Auto-Export fehlgeschlagener Downloads", + "logFilterSection": "Filter", + "dialogDiscardChanges": "Änderungen verwerfen?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Titel", + "searchAlbums": "Alben", + "trackConvertFormat": "Format konvertieren", + "metadataProviderPriorityTitle": "Metadaten Priorität", + "libraryFolderHint": "Tippe um Ordner auszuwählen", + "downloadedAlbumDeleteMessage": "{count} {count, plural, =1{Titel} other{Titel}} aus diesem Album löschen?\n\nDadurch werden auch die Dateien aus dem Speicher gelöscht.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "Album", + "updateAvailable": "Update verfügbar", + "optionsEmbedLyrics": "Liedtexte einbetten", + "trackReEnrichProgress": "Metadaten neu anreichern...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Maximum", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Repo-Tab in der Navigation anzeigen", + "settingsTitle": "Einstellungen", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Feed-Cache entdecken", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} ausgewählt", + "downloadAskQualitySubtitle": "Qualitätsauswahl für jeden Download anzeigen", + "filenameShowAdvancedTags": "Erweiterte Tags anzeigen", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback-Erweiterungen", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "Bibliotheks-Cover-Cache", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "Beste mobile Kompatibilität, M4A Container", + "snackbarFillAllFields": "Bitte fülle alle Felder aus", + "actionCreate": "Erstellen", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} heruntergeladen", + "snackbarLoadingCueSheet": "CAE-Sheet wird geladen...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "Schöpfer des ursprünglichen SpotiFLAC", + "a11yTrackByArtist": "{trackName} von {artistName}", + "audioAnalysisDynamicRange": "Dynamischer Bereich", + "homeChangeSearchProviderTooltip": "Suchanbieter ändern", + "loadingSharedLink": "Link wird geladen...", + "lyricsModeEmbedSubtitle": "Lyrics in FLAC Metadaten gespeichert", + "setupNotificationBackgroundDescription": "Erhalte Benachrichtigungen über den Fortschritt und die Fertigstellung deiner Downloads, selbst wenn die App im Hintergrund läuft.", + "snackbarViewQueue": "Warteschlange anzeigen", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles und Alben im selben Ordner gespeichert", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Wähle bestimmte Alben oder Singles", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "Laden fehlgeschlagen. Bitte erneut versuchen.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "Speichern", + "trackReEnrichSearching": "Suche Metadaten online...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Verlustfreie Qualität mit Spektrumanalyse überprüfen", + "downloadFilenameFormat": "Dateinamenformat", + "cueSplitTitle": "CUE-Sheet aufteilen", + "settingsAppSubtitle": "Updates, Daten, Erweiterungsrepo, Debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "Kann {item} nicht laden wegen fehlender Erweiterungsquelle", + "albumFolderAlbumOnlySubtitle": "Alben/Album Name/", + "errorLoadPlaylist": "Fehler beim Laden der Playlist", + "logIssueTrackNotFoundLabel": "TITEL NICHT GEFUNDEN", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "Verwerfen", + "storageModeSaf": "Benutzerdefinierter Ordner (SAF)", + "errorRateLimited": "Anfragelimit überschritten", + "downloadSelectQuality": "Qualität wählen", + "dialogDownloadPlaylistsMessage": "Lade {trackCount} {trackCount, plural, =1{Titel} other{Titel}} von {playlistCount} {playlistCount, plural, =1{Playlist} other{Playlists}}?", + "collectionFoldersTitle": "Meine Ordner", + "credentialsClientSecret": "Client Secret", + "progressFetchingMetadata": "Lade Metadaten... {current}/{total}", + "settingsDownloadNetworkAny": "WLAN + Mobile Daten", + "audioAnalysisDuration": "Länge", + "audioAnalysisAnalyzing": "Audio wird analysiert...", + "credentialsDescription": "Gebe deine Client-ID und Secret ein, um dein eigenes Spotify Anwendungs Limit zu haben.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Disk #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Play preview", + "setupPermissionRequiredMessage": "{permissionType}-Berechtigung ist erforderlich für\ndie beste Benutzererfahrung. Du kannst dies später in den Einstellungen ändern.", + "aboutVersion": "Version", + "qualityHiResFlacSubtitle": "24-Bit / bis 96kHz", + "audioAnalysisSamples": "Proben", + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "sectionMetadataProviders": "Anbieter", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "Urheberrecht", + "libraryForceFullScanSubtitle": "Alle Dateien erneut scannen und Cache ignorieren", + "trackCopiedToClipboard": "In Zwischenablage kopiert", + "optionsEmbedMetadata": "Eingebettete Metadaten", "collectionAddedTracksToPlaylistWithExisting": "{count} {count, plural, =1{Titel} other{Titel}} zu {playlistName} ({alreadyCount} bereits in der Playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5159,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{Sache} other{Sachen}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Integration", + "storeClearFilters": "Filter entfernen", + "navSettings": "Einstellungen", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "App", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Volle Album Künstler String verwendet", + "trackConvertFormatSubtitle": "Zu AAC/M4A, MP3, Opus, ALAC oder FLAC konvertieren", + "albumFolderArtistAlbumSinglesSubtitle": "Künstler/Album/ und Künstler/Singles/", + "collectionDeletePlaylistsMessage": "Lösche {count} {count, plural, =1{Playlist} other{Playlists}}?", + "lyricsProvidersSaved": "Priorität des Lyrics-Anbieters gespeichert", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "Name des Titels", + "homeRecent": "Zuletzt", + "recentEmpty": "Noch keine aktuellen Einträge", + "cacheClearAll": "Gesamten Cache leeren", + "trackReEnrichFieldReleaseInfo": "Datum & ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Öffne Album {albumName} von {artistName}, {trackCount} Titel", + "editMetadataFieldAlbum": "Album", + "settingsAbout": "Über", + "libraryFilterTitle": "Filter", + "cleanupOrphanedDownloadsResult": "Entfernte {count} verwaiste Einträge aus dem Verlauf", + "extensionHooksAvailable": "{count} Hook(s) verfügbar", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "Lyrics erfolgreich eingebettet", + "optionsUpdateChannelPreview": "Vorschau-Versionen erhalten", + "collectionAddedToFavoriteArtists": "\"{artistName}\" zu Lieblingskünstlern hinzugefügt", + "libraryForceFullScan": "Vollen Neu-Scan erzwingen", + "snackbarProviderPrioritySaved": "Anbieterpriorität gespeichert", + "collectionFavoriteArtistsEmptySubtitle": "Tippe auf das Herz auf einer Künstlerseite, um sie hier zu sehen", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Dienststatus", + "dateWeeksAgo": "Vor {count} Wochen", + "historyFilterSingles": "Singles", + "tutorialSettingsTip2": "Standard Audioqualität und Formateinstellungen festlegen", + "trackLyricsSaved": "Lyrics in {fileName} gespeichert", + "cacheClearAllConfirmTitle": "Gesamten Cache leeren?", + "noTracksFoundForAlbum": "Keine Titel in diesem Album gefunden", + "sectionLanguage": "Sprache", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "Ordner wählen", + "dateYesterday": "Gestern", + "collectionAddToPlaylist": "Zur Playlist hinzufügen", + "snackbarUnsupportedAudioFormat": "Nicht unterstütztes Audioformat", + "libraryScanCancelled": "Scan abgebrochen", + "appearanceLanguage": "App Sprache", + "extensionsTitle": "Erweiterungen", + "dialogImportPlaylistMessage": "{count} Titel gefunden hinzufügen?", + "permissionNotification": "Benachrichtigung", + "notifUpdateReady": "Update bereit", + "lyricsModeDescription": "Wähle wie Songtexte mit deinen Downloads gespeichert werden", + "downloadFrom": "Herunterladen von", + "collectionWishlistEmptySubtitle": "Tippe auf das + bei den Titeln, um sie zum späteren Herunterladen zu speichern", + "cueSplitSplitting": "CUE-Sheet wird geteilt... ({current}/{total})", + "optionsMaxQualityCover": "Maximale Cover-Qualität", + "trackOptionAddToWishlist": "Zur Wunschliste hinzufügen", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Download abgeschlossen ({completed}/{total})", + "extensionsNoDownloadProvider": "Keine Erweiterungen mit Download-Provider", + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "collectionPlaylistRemoveCover": "Cover entfernen", + "storeEmptyNoResults": "Keine Erweiterungen gefunden", + "logIssueTrackNotFoundDescription": "Einige Titel konnten auf Download-Diensten nicht gefunden werden", + "editMetadataFieldComment": "Kommentar", + "settingsMetadata": "Metadaten", + "settingsCache": "Speicher & Cache", + "providerPriorityFallbackExtensionsHint": "Hier werden nur aktivierte Erweiterungen mit Download-Provider-Funktion aufgelistet.", + "libraryFilterAll": "Alle", + "notifDownloadingUpdate": "SpotiFLAC Mobile v{version} wird heruntergeladen", + "extensionsProviderPrioritySection": "Provider-Priorität", + "storeChangeRepoTooltip": "Repository ändern", + "snackbarFailedToInstall": "Erweiterung konnte nicht installiert werden", + "libraryScanSubtitle": "Suche nach Audiodateien", + "snackbarExtensionInstalled": "{extensionName} installiert.", + "setupOpenSettings": "Einstellungen öffnen", + "extensionsInstalledSection": "Installierte Erweiterungen", + "aboutLinks": "Links", + "trackCoverClearSelected": "Ausgewähltes Cover löschen", + "libraryAutoScanWeekly": "Wöchentlich", + "downloadMusixmatchLanguageAuto": "Auto (Originalsprache)", + "optionsDefaultSearchTab": "Standard Such-Tab", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "Heruntergeladene Dateien in Ordner organisieren", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "In Datei einbetten", + "trackReEnrichFfmpegFailed": "FFmpeg Metadaten-Einbettung fehlgeschlagen", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Verlustbehaftet", + "actionPause": "Pause", + "csvImportTracks": "{count} Titel aus CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackReEnrichSuccessWithFailures": "Metadaten erfolgreich neu angereichert ({successCount}/{total}) - fehlgeschlagen: {failedCount}", - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "selectionDeleteTracksCount": "Lösche {count} {count, plural, =1{Titel} other{Titel}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueDownloadSpeedStatus": "Herunterladen - {speed} MB/s", - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } - }, - "queueDownloadStarting": "Starte...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "a11ySelectTrack": "Titel auswählen", - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "a11yDeselectTrack": "Titel abwählen", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "a11yPlayTrackByArtist": "Spiele {trackName} von {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "storeExtensionsCount": "{count} {count, plural, =1{Erweiterung} other{Erweiterungen}}", - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeRequiresVersion": "Benötigt v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { + "providerName": { "type": "String" } } }, "actionGo": "Los", - "@actionGo": { - "description": "Generic action button label" - }, - "logIssueSummary": "Problemübersicht", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "logTotalErrors": "Gesamte Fehler: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffectedDomains": "Betroffen: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "libraryScanCancelled": "Scan abgebrochen", - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "libraryScanCancelledSubtitle": "Du kannst erneut Scannen, wenn er fertig ist.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "libraryDownloadsHistoryExcluded": "{count} aus dem Download-Verlauf (von der Liste ausgeschlossen)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadNativeWorker": "Nativer Download Dienst", - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "downloadNativeWorkerSubtitle": "Beta Android Dienst für Downloads von Erweiterungen", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "extensionServiceStatus": "Dienststatus", - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "extensionServiceHealth": "Service-Gesundheit", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "extensionHealthChecksConfigured": "{count} {count, plural, =1{Prüfung} other{Prüfungen}} konfiguriert", - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionOauthConnectHint": "Tippe auf \"Mit Spotify verbinden\" um dieses Feld auszufüllen.", - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "extensionLastChecked": "Zuletzt geprüft {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "extensionRefreshStatus": "Status aktualisieren", - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "extensionCustomUrlHandling": "Benutzerdefinierte URL-Handling", - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "extensionCustomUrlHandlingSubtitle": "Diese Erweiterung kann Links von diesen Seiten benutzen", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "extensionCustomUrlHandlingShareHint": "Teile Links von diesen Seiten mit SpotiFLAC Mobile und diese Erweiterung wird sie verarbeiten.", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "extensionSettingsCount": "{count} {count, plural, =1{Einstellung} other{Einstellungen}}", - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionHealthOnline": "Online", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "extensionHealthDegraded": "Eingeschränkt", - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "extensionHealthNotConfigured": "Nicht konfiguriert", - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "extensionHealthUnknown": "Unbekannt", - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "extensionHealthRequired": "benötigt", - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "extensionSettingNotSet": "Nicht eingestellt", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "extensionActionFailed": "Aktion fehlgeschlagen", - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "extensionEnterValue": "Wert eingeben", - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "extensionHealthServiceOnline": "Dienste online", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, - "extensionHealthServiceDegraded": "Dienst Eingeschränkt", - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "extensionHealthServiceOffline": "Dienst offline", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" - }, - "extensionHealthServiceUnknown": "Dienst-Status unbekannt", - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" - }, - "audioAnalysisStereo": "Stereo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "audioAnalysisMono": "Mono", - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "trackOpenInService": "Öffne in {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "trackLyricsEmbeddedSource": "Eingebettet", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "unknownAlbum": "Unbekanntes Album", - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "unknownArtist": "Unbekannter Künstler", - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "permissionStorage": "Speicher", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionNotification": "Benachrichtigung", - "@permissionNotification": { - "description": "Notification permission type label" - }, - "errorInvalidFolderSelected": "Ungültiger Ordner ausgewählt", - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "errorCouldNotKeepFolderAccess": "Konnte nicht auf den ausgewählten Ordner zugreifen", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Alle", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "storeCategoryMetadata": "Metadaten", - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "storeCategoryDownload": "Herunterladen", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "storeCategoryUtility": "Utility", - "@storeCategoryUtility": { - "description": "Store extension category - utility" - }, - "storeCategoryLyrics": "Lyrics", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "storeCategoryIntegration": "Integration", - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "artistReleases": "Releases", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "editMetadataSelectNone": "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": {} - } - } + "sectionDebug": "Debug", + "editMetadataFieldDate": "Datum", + "timeHoursAgo": "{count, plural, =1{vor 1 Stunde} other{vor {count} Stunden}}", + "sectionPerformance": "Performance", + "extensionsSearchWith": "Mit {providerName} suchen", + "extensionsDownloadPrioritySubtitle": "Download-Service-Reihenfolge festlegen", + "cacheAppDirectoryDesc": "HTTP-Antworten, WebView Daten und andere temporäre App-Daten.", + "sectionData": "Daten", + "notifFinalizingTrack": "{trackName} wird fertiggestellt", + "snackbarFileNotFound": "Datei nicht gefunden", + "extensionQualityOptions": "Qualitätsoptionen", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "Erweiterungs-Repository", + "extensionsSearchProviderDescription": "Wähle den Dienst für die Suche von Titel", + "albumFolderAlbumOnly": "Nur Alben", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "In Titel aufteilen" } diff --git a/lib/l10n/arb/app_es_ES.arb b/lib/l10n/arb/app_es_ES.arb index f035aef3..d8a71b7a 100644 --- a/lib/l10n/arb/app_es_ES.arb +++ b/lib/l10n/arb/app_es_ES.arb @@ -1,7 +1,7 @@ { "@@locale": "es_ES", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", + "appName": "SpotiFLAC Móvil", "@appName": { "description": "App name - DO NOT TRANSLATE" }, @@ -29,7 +29,15 @@ "@homeSubtitle": { "description": "Subtitle shown below search box" }, - "homeSupports": "Soporte de URL: pista, álbum, listas de reproducción, artistas", + "homeEmptyTitle": "Aún no hay proveedores de búsqueda", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Instalar una extensión para continuar.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "homeSupports": "Compatible con: URL de pistas, álbumes, listas de reproducción y artistas", "@homeSupports": { "description": "Info text about supported URL types" }, @@ -89,11 +97,11 @@ "@downloadFilenameFormat": { "description": "Setting for output filename pattern" }, - "downloadSingleFilenameFormat": "Formato de título único", + "downloadSingleFilenameFormat": "Formato del nombre de archivo para pistas individuales", "@downloadSingleFilenameFormat": { "description": "Setting for output filename pattern for singles/EPs" }, - "downloadSingleFilenameFormatDescription": "Patrón de título para sencillos y mini-álbumes. Usa las mismas etiquetas que un álbum completo.", + "downloadSingleFilenameFormatDescription": "Patrón de nombre de archivo para sencillos y EP. Utiliza las mismas etiquetas que el formato para álbumes.", "@downloadSingleFilenameFormatDescription": { "description": "Subtitle description for single filename format setting" }, @@ -117,7 +125,7 @@ "@appearanceThemeDark": { "description": "Dark theme" }, - "appearanceDynamicColor": "Color dinámico", + "appearanceDynamicColor": "Color Dinámico", "@appearanceDynamicColor": { "description": "Material You dynamic colors" }, @@ -125,7 +133,7 @@ "@appearanceDynamicColorSubtitle": { "description": "Subtitle for dynamic color" }, - "appearanceHistoryView": "Vista de Historial", + "appearanceHistoryView": "Vista del Historial", "@appearanceHistoryView": { "description": "Layout style for history" }, @@ -141,11 +149,11 @@ "@optionsTitle": { "description": "Options settings page title" }, - "optionsPrimaryProvider": "Proveedor principal", + "optionsPrimaryProvider": "Proveedor Principal", "@optionsPrimaryProvider": { "description": "Main search provider setting" }, - "optionsPrimaryProviderSubtitle": "Servicio usado para buscar por canción o nombre del álbum", + "optionsPrimaryProviderSubtitle": "Servicio utilizado para buscar por nombre de pista o álbum", "@optionsPrimaryProviderSubtitle": { "description": "Subtitle for primary provider" }, @@ -158,31 +166,23 @@ } } }, - "optionsDefaultSearchTab": "Pestaña de búsqueda por defecto", + "optionsDefaultSearchTab": "Pestaña de búsqueda predeterminada", "@optionsDefaultSearchTab": { "description": "Title for the preferred default search tab setting" }, - "optionsDefaultSearchTabSubtitle": "Escoger cuál pestaña se abre primero para nuevos resultados de búsqueda.", + "optionsDefaultSearchTabSubtitle": "Elige qué pestaña se abre primero al mostrar nuevos resultados de búsqueda.", "@optionsDefaultSearchTabSubtitle": { "description": "Subtitle for the preferred default search tab setting" }, - "optionsDefaultSearchTabAlbums": "Álbumes", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Pistas", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", + "optionsSwitchBack": "Elija el proveedor de búsqueda por defecto para volver de una extensión", "@optionsSwitchBack": { "description": "Hint to switch back from extension search" }, - "optionsAutoFallback": "Alternativa automática", + "optionsAutoFallback": "Cambio automático", "@optionsAutoFallback": { "description": "Auto-retry with other services" }, - "optionsAutoFallbackSubtitle": "Pruebe otros servicios si falla la descarga", + "optionsAutoFallbackSubtitle": "Probar otros servicios si la descarga falla", "@optionsAutoFallbackSubtitle": { "description": "Subtitle for auto fallback" }, @@ -190,11 +190,11 @@ "@optionsUseExtensionProviders": { "description": "Legacy setting label for extension download providers" }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", + "optionsUseExtensionProvidersOn": "Proveedores de extensiones habilitados", "@optionsUseExtensionProvidersOn": { "description": "Status when extension providers enabled" }, - "optionsUseExtensionProvidersOff": "Extension providers are required", + "optionsUseExtensionProvidersOff": "Proveedores de extensiones habilitados", "@optionsUseExtensionProvidersOff": { "description": "Legacy status when extension providers would be disabled" }, @@ -202,63 +202,121 @@ "@optionsEmbedLyrics": { "description": "Embed lyrics in audio files" }, - "optionsEmbedLyricsSubtitle": "Guardar letras sincronizadas con las pistas descargadas", + "optionsEmbedLyricsSubtitle": "Guarda las letras sincronizadas junto a las pistas descargadas", "@optionsEmbedLyricsSubtitle": { "description": "Subtitle for embed lyrics" }, - "optionsMaxQualityCover": "Carátula de calidad máxima", + "optionsMaxQualityCover": "Máxima calidad de portada", "@optionsMaxQualityCover": { "description": "Download highest quality album art" }, - "optionsMaxQualityCoverSubtitle": "Descargar carátula de resolución máxima", + "optionsMaxQualityCoverSubtitle": "Descargar la portada en la mayor resolución", "@optionsMaxQualityCoverSubtitle": { "description": "Subtitle for max quality cover" }, - "optionsReplayGain": "Nivelación de ganancia", + "optionsReplayGain": "ReplayGain", "@optionsReplayGain": { "description": "Title for ReplayGain setting toggle" }, - "optionsReplayGainSubtitleOn": "Analizar volumen e incrustar etiquetas de RG (EBU-R128)", + "optionsReplayGainSubtitleOn": "Analizar la sonoridad e incrustar etiquetas ReplayGain (EBU R128)", "@optionsReplayGainSubtitleOn": { "description": "Subtitle when ReplayGain is enabled" }, - "optionsReplayGainSubtitleOff": "Desactivado: sin etiquetas de normalización de volumen", + "optionsReplayGainSubtitleOff": "Desactivado: no hay etiquetas de normalización de sonoridad", "@optionsReplayGainSubtitleOff": { "description": "Subtitle when ReplayGain is disabled" }, + "trackReplayGain": "Reescanear ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainSubtitle": "Analizar el volumen y guardar las etiquetas ReplayGain", + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "trackReplayGainScanning": "Analizando el nivel de volumen...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "Etiquetas ReplayGain agregadas", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "No se pudieron agregar las etiquetas ReplayGain", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchConfirmTitle": "Agregar ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "replayGainBatchConfirmMessage": "¿Analizar el volumen y escribir las etiquetas ReplayGain en {count} pista(s)?", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchAnalyzing": "Analizando ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "replayGainBatchSuccess": "Se agregaron las etiquetas ReplayGain a {success} de {total} pistas", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, "optionsArtistTagMode": "Modo de etiqueta de artista", "@optionsArtistTagMode": { "description": "Setting title for how artist metadata is written into files" }, - "optionsArtistTagModeDescription": "Elija cómo se ingresan múltiples artistas en etiquetas incrustadas.", + "optionsArtistTagModeDescription": "Elige cómo se escriben varios artistas en las etiquetas incrustadas.", "@optionsArtistTagModeDescription": { "description": "Bottom-sheet description for artist tag mode setting" }, - "optionsArtistTagModeJoined": "Valor único ingresado", + "optionsArtistTagModeJoined": "Valor único combinado", "@optionsArtistTagModeJoined": { "description": "Artist tag mode option that joins multiple artists into one value" }, - "optionsArtistTagModeJoinedSubtitle": "Escribe un valor ARTIST, como \"Artista A, Artista B\" para mejor compatibilidad en reproductores.", + "optionsArtistTagModeJoinedSubtitle": "Escribir un solo valor de ARTISTA como «Artista A, Artista B» para máxima compatibilidad con reproductores.", "@optionsArtistTagModeJoinedSubtitle": { "description": "Subtitle for joined artist tag mode" }, - "optionsArtistTagModeSplitVorbis": "Dividir etiquetas para FLAC/OPUS", + "optionsArtistTagModeSplitVorbis": "Separar etiquetas para FLAC/Opus", "@optionsArtistTagModeSplitVorbis": { "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "optionsArtistTagModeSplitVorbisSubtitle": "Escribe una etiqueta de artista por artista para FLAC y OPUS; MP3 y M4A se mantienen agrupados.", + "optionsArtistTagModeSplitVorbisSubtitle": "Escribe una etiqueta de artista por cada artista en FLAC y Opus; MP3 y M4A se mantienen combinados.", "@optionsArtistTagModeSplitVorbisSubtitle": { "description": "Subtitle for split Vorbis artist tag mode" }, - "optionsExtensionStore": "Extensión Repo", + "optionsExtensionStore": "Repositorio de extensiones", "@optionsExtensionStore": { "description": "Show/hide store tab" }, - "optionsExtensionStoreSubtitle": "Mostar barra de navegación repo", + "optionsExtensionStoreSubtitle": "Mostrar la pestaña del repositorio en la navegación", "@optionsExtensionStoreSubtitle": { "description": "Subtitle for extension store toggle" }, - "optionsCheckUpdates": "Comprobar actualizaciones", + "optionsCheckUpdates": "Buscar actualizaciones", "@optionsCheckUpdates": { "description": "Auto update check toggle" }, @@ -274,15 +332,15 @@ "@optionsUpdateChannelStable": { "description": "Only stable updates" }, - "optionsUpdateChannelPreview": "Versión preliminar", + "optionsUpdateChannelPreview": "Obtener versiones preliminares", "@optionsUpdateChannelPreview": { "description": "Include beta/preview updates" }, - "optionsUpdateChannelWarning": "La Versión preliminar puede contener errores o características incompletas", + "optionsUpdateChannelWarning": "La versión preliminar puede contener errores o funciones incompletas", "@optionsUpdateChannelWarning": { "description": "Warning about preview channel" }, - "optionsClearHistory": "Borrar el historial de descargas", + "optionsClearHistory": "Borrar historial de descargas", "@optionsClearHistory": { "description": "Delete all download history" }, @@ -294,11 +352,11 @@ "@optionsDetailedLogging": { "description": "Enable verbose logs for debugging" }, - "optionsDetailedLoggingOn": "Registros detallados están siendo registrados", + "optionsDetailedLoggingOn": "Se están registrando logs detallados", "@optionsDetailedLoggingOn": { "description": "Status when logging enabled" }, - "optionsDetailedLoggingOff": "Habilitar para informes de errores", + "optionsDetailedLoggingOff": "Activar para informes de errores", "@optionsDetailedLoggingOff": { "description": "Status when logging disabled" }, @@ -315,15 +373,15 @@ } } }, - "optionsSpotifyCredentialsRequired": "Requerido - toque para configurar", + "optionsSpotifyCredentialsRequired": "Requerido: toca para configurar", "@optionsSpotifyCredentialsRequired": { "description": "Prompt to set up credentials" }, - "optionsSpotifyWarning": "Spotify requiere tus propias credenciales API. Obténgalas gratis de developer.spotify.com", + "optionsSpotifyWarning": "Spotify requiere tus propias credenciales de API. Consíguelas gratis en developer.spotify.com", "@optionsSpotifyWarning": { "description": "Info about Spotify API requirement" }, - "optionsSpotifyDeprecationWarning": "La función de búsqueda de Spotify dejará de estar disponible el 3 de marzo de 2026 debido a cambios en la API de Spotify. Te recomendamos que te pases a Deezer.", + "optionsSpotifyDeprecationWarning": "La búsqueda de Spotify quedará obsoleta el 3 de marzo de 2026 debido a cambios en la API de Spotify. Por favor, cambia a Deezer.", "@optionsSpotifyDeprecationWarning": { "description": "Warning about Spotify API deprecation" }, @@ -331,7 +389,7 @@ "@extensionsTitle": { "description": "Extensions page title" }, - "extensionsDisabled": "Deshabilitado", + "extensionsDisabled": "Desactivado", "@extensionsDisabled": { "description": "Extension status - inactive" }, @@ -357,7 +415,7 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "storeTitle": "Extensión Repo", + "storeTitle": "Repositorio de extensiones", "@storeTitle": { "description": "Store screen title" }, @@ -393,7 +451,7 @@ "@aboutOriginalCreator": { "description": "Role description for original creator" }, - "aboutLogoArtist": "¡El talentoso artista que creó nuestro hermoso logo!", + "aboutLogoArtist": "¡El talentoso artista que creó el hermoso logo de nuestra app!", "@aboutLogoArtist": { "description": "Role description for logo artist" }, @@ -409,11 +467,11 @@ "@aboutLinks": { "description": "Section for external links" }, - "aboutMobileSource": "Código fuente móvil", + "aboutMobileSource": "Código fuente de la versión móvil", "@aboutMobileSource": { "description": "Link to mobile GitHub repo" }, - "aboutPCSource": "Código fuente de PC", + "aboutPCSource": "Código fuente de la versión para PC", "@aboutPCSource": { "description": "Link to PC GitHub repo" }, @@ -465,11 +523,11 @@ "@aboutVersion": { "description": "Version info label" }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "aboutBinimumDesc": "El creador de QQDL & HiFi API. Este proyecto ayudó a impulsar el soporte para descargas sin pérdida de calidad.", "@aboutBinimumDesc": { "description": "Credit description for binimum" }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "aboutSachinsenalDesc": "El creador del proyecto HiFi original. Sentó las bases para la integración de fuentes de audio sin pérdida de calidad.", "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, @@ -670,6 +728,18 @@ "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, + "setupLanguageTitle": "Elegir idioma", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "setupLanguageDescription": "Selecciona tu idioma preferido para la aplicación. Puedes cambiar esto luego en Configuración.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "setupLanguageSystemDefault": "Idioma predeterminado", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, "dialogCancel": "Cancelar", "@dialogCancel": { "description": "Dialog button - cancel action" @@ -702,6 +772,18 @@ "@dialogDownload": { "description": "Confirm button in Download All dialog" }, + "previewPlay": "Reproducir vista previa", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Detener vista previa", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Vista previa no disponible", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, "dialogDiscard": "Descartar", "@dialogDiscard": { "description": "Dialog button - discard changes" @@ -928,6 +1010,10 @@ "@errorNoTracksFound": { "description": "Error - search returned no results" }, + "searchEmptyResultSubtitle": "Prueba con otra palabra clave", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, "errorUrlNotRecognized": "Enlace no reconocido", "@errorUrlNotRecognized": { "description": "Error title - URL not handled by any extension or service" @@ -1198,7 +1284,7 @@ "@providerPriorityFallbackExtensionsHint": { "description": "Hint below the extension fallback selection list" }, - "providerBuiltIn": "Legacy", + "providerBuiltIn": "Heredado", "@providerBuiltIn": { "description": "Legacy label retained for old generated localization compatibility" }, @@ -1554,6 +1640,15 @@ "@trackCopyLyrics": { "description": "Action - copy lyrics to clipboard" }, + "trackLyricsSource": "Fuente: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, "trackLyricsNotAvailable": "Letras no disponibles para este tema", "@trackLyricsNotAvailable": { "description": "Message when lyrics not found" @@ -1713,11 +1808,11 @@ "@storeEmptyNoResults": { "description": "Message when search/filter returns no results" }, - "extensionDefaultProvider": "Default Search", + "extensionDefaultProvider": "Búsqueda predeterminada", "@extensionDefaultProvider": { "description": "Default search provider option" }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", + "extensionDefaultProviderSubtitle": "Usar la búsqueda de metadatos predeterminada", "@extensionDefaultProviderSubtitle": { "description": "Subtitle for default provider" }, @@ -1844,6 +1939,30 @@ "@extensionsInstalledSuccess": { "description": "Success message after install" }, + "extensionsInstalledCount": "{count} Extensiones instaladas correctamente", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "extensionsInstallPartialSuccess": "{installed} Instalados de {attempted} extensiones", + "@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": "Prioridad de descarga", "@extensionsDownloadPriority": { "description": "Setting - download provider order" @@ -1932,21 +2051,29 @@ "@downloadLossy320Format": { "description": "Title of the lossy format picker bottom sheet" }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "downloadLossy320FormatDesc": "Elige el formato de salida para las descargas con pérdida de calidad a 320 kbps. Cuando sea necesario, el audio original se convertirá al formato seleccionado.", "@downloadLossy320FormatDesc": { "description": "Description in the lossy format picker" }, "downloadLossyMp3": "MP3 (320 kbps)", "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" + "description": "Lossy format option - MP3 320kbps" }, "downloadLossyMp3Subtitle": "Mejor compatibilidad, ~10 MB por pista", "@downloadLossyMp3Subtitle": { "description": "Subtitle for MP3 320kbps lossy option" }, + "downloadLossyAac": "AAC/M4A (320 kbps)", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "downloadLossyAacSubtitle": "La mejor compatibilidad con dispositivos móviles, formato M4A", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, "downloadLossyOpus256": "OPUS (256 kbps)", "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" + "description": "Lossy format option - Opus 256kbps" }, "downloadLossyOpus256Subtitle": "Mejor calidad de OPUS, ~8 MB por pista", "@downloadLossyOpus256Subtitle": { @@ -1954,7 +2081,7 @@ }, "downloadLossyOpus128": "OPUS (128 kbps)", "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" + "description": "Lossy format option - Opus 128kbps" }, "downloadLossyOpus128Subtitle": "Tamaño mínimo: ~4 MB por pista", "@downloadLossyOpus128Subtitle": { @@ -2449,7 +2576,7 @@ "@libraryAboutDescription": { "description": "Description of local library feature" }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "libraryTracksUnit": "{count, plural, =1{pista} other{pistas}}", "@libraryTracksUnit": { "description": "Unit label for tracks count (without the number itself)", "placeholders": { @@ -2458,7 +2585,7 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "libraryFilesUnit": "{count, plural, =1{archivo} other{archivos}}", "@libraryFilesUnit": { "description": "Unit label for files count during library scanning", "placeholders": { @@ -2671,7 +2798,7 @@ "@tutorialWelcomeTip1": { "description": "Tutorial welcome tip 1" }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "tutorialWelcomeTip2": "Obtén audio de calidad FLAC mediante las extensiones de descarga instaladas", "@tutorialWelcomeTip2": { "description": "Tutorial welcome tip 2" }, @@ -3185,11 +3312,11 @@ "@trackConvertFailed": { "description": "Snackbar when conversion fails" }, - "cueSplitTitle": "Split CUE Sheet", + "cueSplitTitle": "Dividir hoja CUE", "@cueSplitTitle": { "description": "Title for CUE split bottom sheet" }, - "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", + "cueSplitSubtitle": "Dividir CUE + FLAC en pistas individuales", "@cueSplitSubtitle": { "description": "Subtitle for CUE split menu item" }, @@ -3220,11 +3347,11 @@ } } }, - "cueSplitConfirmTitle": "Split CUE Album", + "cueSplitConfirmTitle": "Dividir álbum CUE", "@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": "¿Dividir \"{album}\" en archivos FLAC individuales {count}?\n\nLos archivos se guardarán en el mismo directorio.", "@cueSplitConfirmMessage": { "description": "CUE split confirmation dialog message", "placeholders": { @@ -3236,7 +3363,7 @@ } } }, - "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", + "cueSplitSplitting": "Dividiendo hoja CUE... ({current}/{total})", "@cueSplitSplitting": { "description": "Snackbar while splitting CUE", "placeholders": { @@ -3248,7 +3375,7 @@ } } }, - "cueSplitSuccess": "Split into {count} tracks successfully", + "cueSplitSuccess": "Se dividió correctamente en {count} pistas", "@cueSplitSuccess": { "description": "Snackbar after successful CUE split", "placeholders": { @@ -3257,11 +3384,11 @@ } } }, - "cueSplitFailed": "CUE split failed", + "cueSplitFailed": "Fallo al dividir CUE", "@cueSplitFailed": { "description": "Snackbar when CUE split fails" }, - "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", + "cueSplitNoAudioFile": "No se encontró el archivo de audio para esta hoja CUE", "@cueSplitNoAudioFile": { "description": "Error when CUE audio file is missing" }, @@ -3281,10 +3408,14 @@ "@collectionWishlist": { "description": "Custom folder for saved tracks to download later" }, - "collectionLoved": "Loved", + "collectionLoved": "Me gusta", "@collectionLoved": { "description": "Custom folder for favorite tracks" }, + "collectionFavoriteArtists": "Artistas favoritos", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, "collectionPlaylists": "Listas de reproducción", "@collectionPlaylists": { "description": "Custom user playlists folder" @@ -3309,7 +3440,7 @@ "@collectionNoPlaylistsSubtitle": { "description": "Empty state subtitle when user has no playlists" }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "collectionPlaylistTracks": "{count, plural, =1{1 pista} other{{count} pistas}}", "@collectionPlaylistTracks": { "description": "Track count label for custom playlists", "placeholders": { @@ -3318,6 +3449,15 @@ } } }, + "collectionArtistCount": "{count, plural, =1{1 artista} other{{count} artistas}}", + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, "collectionAddedToPlaylist": "Añadida a \"{playlistName}\"", "@collectionAddedToPlaylist": { "description": "Snackbar after adding track to playlist", @@ -3344,7 +3484,7 @@ "@collectionPlaylistNameHint": { "description": "Hint text for playlist name input" }, - "collectionPlaylistNameRequired": "Playlist name is required", + "collectionPlaylistNameRequired": "El nombre de la lista de reproducción es obligatorio", "@collectionPlaylistNameRequired": { "description": "Validation error for empty playlist name" }, @@ -3356,7 +3496,7 @@ "@collectionDeletePlaylist": { "description": "Action to delete playlist" }, - "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", + "collectionDeletePlaylistMessage": "¿Eliminar \"{playlistName}\" y todas las pistas que contiene?", "@collectionDeletePlaylistMessage": { "description": "Confirmation message for deleting playlist", "placeholders": { @@ -3369,7 +3509,7 @@ "@collectionPlaylistDeleted": { "description": "Snackbar after deleting playlist" }, - "collectionPlaylistRenamed": "Playlist renamed", + "collectionPlaylistRenamed": "Lista de reproducción renombrada", "@collectionPlaylistRenamed": { "description": "Snackbar after renaming playlist" }, @@ -3377,23 +3517,31 @@ "@collectionWishlistEmptyTitle": { "description": "Wishlist empty state title" }, - "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "collectionWishlistEmptySubtitle": "Toca el botón + en las pistas para guardar las que quieras descargar más tarde", "@collectionWishlistEmptySubtitle": { "description": "Wishlist empty state subtitle" }, - "collectionLovedEmptyTitle": "Loved folder is empty", + "collectionLovedEmptyTitle": "La carpeta «Me gusta» está vacía", "@collectionLovedEmptyTitle": { "description": "Loved empty state title" }, - "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "collectionLovedEmptySubtitle": "Toca «Me gusta» en las pistas para guardar tus favoritas.", "@collectionLovedEmptySubtitle": { "description": "Loved empty state subtitle" }, + "collectionFavoriteArtistsEmptyTitle": "Aún no hay artistas favoritos", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "collectionFavoriteArtistsEmptySubtitle": "Toca el corazón en la página del artista para guardarlo aquí", + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, "collectionPlaylistEmptyTitle": "La lista de reproducción está vacía", "@collectionPlaylistEmptyTitle": { "description": "Playlist empty state title" }, - "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", + "collectionPlaylistEmptySubtitle": "Mantén presionado el botón + en cualquier pista para añadirla aquí", "@collectionPlaylistEmptySubtitle": { "description": "Playlist empty state subtitle" }, @@ -3405,7 +3553,7 @@ "@collectionRemoveFromFolder": { "description": "Tooltip for removing track from wishlist/loved folder" }, - "collectionRemoved": "\"{trackName}\" removed", + "collectionRemoved": "Se eliminó \"{trackName}\"", "@collectionRemoved": { "description": "Snackbar after removing a track from a collection", "placeholders": { @@ -3414,7 +3562,7 @@ } } }, - "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "collectionAddedToLoved": "\"{trackName}\" se agregó a «Me gusta»", "@collectionAddedToLoved": { "description": "Snackbar after adding track to loved folder", "placeholders": { @@ -3423,7 +3571,7 @@ } } }, - "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "collectionRemovedFromLoved": "\"{trackName}\" se eliminó de «Me gusta»", "@collectionRemovedFromLoved": { "description": "Snackbar after removing track from loved folder", "placeholders": { @@ -3432,7 +3580,7 @@ } } }, - "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "collectionAddedToWishlist": "\"{trackName}\" se agregó a la lista de deseos", "@collectionAddedToWishlist": { "description": "Snackbar after adding track to wishlist", "placeholders": { @@ -3441,7 +3589,7 @@ } } }, - "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "collectionRemovedFromWishlist": "\"{trackName}\" se eliminó de la lista de deseos", "@collectionRemovedFromWishlist": { "description": "Snackbar after removing track from wishlist", "placeholders": { @@ -3450,11 +3598,29 @@ } } }, - "trackOptionAddToLoved": "Add to Loved", + "collectionAddedToFavoriteArtists": "\"{artistName}\" se agregó a Artistas favoritos", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" se eliminó de Artistas favoritos", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "trackOptionAddToLoved": "Agregar a «Me gusta»", "@trackOptionAddToLoved": { "description": "Bottom sheet action label - add track to loved folder" }, - "trackOptionRemoveFromLoved": "Remove from Loved", + "trackOptionRemoveFromLoved": "Quitar de «Me gusta»", "@trackOptionRemoveFromLoved": { "description": "Bottom sheet action label - remove track from loved folder" }, @@ -3462,10 +3628,18 @@ "@trackOptionAddToWishlist": { "description": "Bottom sheet action label - add track to wishlist" }, - "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "trackOptionRemoveFromWishlist": "Quitar de la lista de deseos", "@trackOptionRemoveFromWishlist": { "description": "Bottom sheet action label - remove track from wishlist" }, + "artistOptionAddToFavorites": "Añadir a artistas favoritos", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "artistOptionRemoveFromFavorites": "Quitar de Artistas favoritos", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, "collectionPlaylistChangeCover": "Cambiar imagen de portada", "@collectionPlaylistChangeCover": { "description": "Bottom sheet action to pick a custom cover image for a playlist" @@ -3474,7 +3648,7 @@ "@collectionPlaylistRemoveCover": { "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", + "selectionShareCount": "Compartir {count} {count, plural, =1{pista} other{pistas}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", "placeholders": { @@ -3483,11 +3657,11 @@ } } }, - "selectionShareNoFiles": "No shareable files found", + "selectionShareNoFiles": "No se encontraron archivos para compartir", "@selectionShareNoFiles": { "description": "Snackbar when no selected files exist on disk" }, - "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "selectionConvertCount": "Convertir {count} {count, plural, =1{pista} other{pistas}}", "@selectionConvertCount": { "description": "Convert button text with count in selection mode", "placeholders": { @@ -3496,7 +3670,7 @@ } } }, - "selectionConvertNoConvertible": "No convertible tracks selected", + "selectionConvertNoConvertible": "No se seleccionaron pistas que se puedan convertir", "@selectionConvertNoConvertible": { "description": "Snackbar when no selected tracks support conversion" }, @@ -3504,7 +3678,7 @@ "@selectionBatchConvertConfirmTitle": { "description": "Confirmation dialog title for batch conversion" }, - "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "selectionBatchConvertConfirmMessage": "¿Convertir {count} {count, plural, =1{pista} other{pistas}} a {format} con una tasa de bits de {bitrate}?\n\nLos archivos originales se eliminarán después de la conversión.", "@selectionBatchConvertConfirmMessage": { "description": "Confirmation dialog message for batch conversion", "placeholders": { @@ -3519,7 +3693,7 @@ } } }, - "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", + "selectionBatchConvertConfirmMessageLossless": "¿Convertir {count} {count, plural, =1{pista} other{pistas}} a {format}? (Sin pérdida — no hay pérdida de calidad)\n\nLos archivos originales se eliminarán después de la conversión.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", "placeholders": { @@ -3531,7 +3705,7 @@ } } }, - "selectionBatchConvertProgress": "Converting {current} of {total}...", + "selectionBatchConvertProgress": "Convirtiendo {current} de {total}...", "@selectionBatchConvertProgress": { "description": "Snackbar during batch conversion progress", "placeholders": { @@ -3543,7 +3717,7 @@ } } }, - "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", + "selectionBatchConvertSuccess": "Se convirtieron {success} de {total} pistas a {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", "placeholders": { @@ -3567,23 +3741,23 @@ } } }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Carpeta nombrada según la etiqueta Artista del álbum", "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" + "description": "Subtitle when album artist is used for folder names" }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Carpeta nombrada según la etiqueta Artista de la pista", "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" + "description": "Subtitle when track artist is used for folder names" }, "lyricsProvidersTitle": "Prioridad de proveedores de letras", "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "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": "Activa, desactiva y reordena las fuentes de letras. Los proveedores se prueban de arriba hacia abajo hasta encontrar letras.", "@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": "Los proveedores de letras de extensiones se ejecutan antes que los proveedores integrados. Debe permanecer habilitado al menos un proveedor.", "@lyricsProvidersInfoText": { "description": "Info tip on lyrics provider priority page" }, @@ -3605,67 +3779,234 @@ } } }, - "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "lyricsProvidersAtLeastOne": "Debe permanecer habilitado al menos un proveedor", "@lyricsProvidersAtLeastOne": { "description": "Snackbar when user tries to disable the last enabled provider" }, - "lyricsProvidersSaved": "Lyrics provider priority saved", + "lyricsProvidersSaved": "Prioridad de proveedores de letras guardada", "@lyricsProvidersSaved": { "description": "Snackbar after saving lyrics provider priority" }, - "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "lyricsProvidersDiscardContent": "Tienes cambios sin guardar que se perderán.", "@lyricsProvidersDiscardContent": { "description": "Body text of the discard-changes dialog on lyrics provider page" }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "lyricsProviderLrclibDesc": "Base de datos de letras sincronizadas de código abierto", "@lyricsProviderLrclibDesc": { "description": "Description for LRCLIB provider" }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (buena para canciones asiáticas)", "@lyricsProviderNeteaseDesc": { "description": "Description for Netease provider" }, - "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "lyricsProviderMusixmatchDesc": "La base de datos de letras más grande (multilingüe)", "@lyricsProviderMusixmatchDesc": { "description": "Description for Musixmatch provider" }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "lyricsProviderAppleMusicDesc": "Letras sincronizadas palabra por palabra (a través de proxy)", "@lyricsProviderAppleMusicDesc": { "description": "Description for Apple Music provider" }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "lyricsProviderQqMusicDesc": "QQ Music (buena para canciones chinas, a\ntravés de proxy)", "@lyricsProviderQqMusicDesc": { "description": "Description for QQ Music provider" }, + "lyricsProviderLyricsPlusDesc": "Letras tipo karaoke palabra por palabra (Apple/ Musixmatch/Spotify/QQ, a través de proxy)", + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, "lyricsProviderExtensionDesc": "Proveedor de extensiones", "@lyricsProviderExtensionDesc": { "description": "Generic description for extension-based lyrics providers" }, - "safMigrationTitle": "Storage Update Required", + "safMigrationTitle": "Se requiere actualización del almacenamiento", "@safMigrationTitle": { "description": "Title of SAF migration dialog" }, - "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "safMigrationMessage1": "SpotiFLAC ahora utiliza el Android Storage Access Framework (SAF) para las descargas. Esto soluciona los errores de «permiso denegado» en Android 10 y versiones posteriores.", "@safMigrationMessage1": { "description": "First paragraph of SAF migration dialog" }, - "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "safMigrationMessage2": "Por favor, vuelve a seleccionar la carpeta de descargas para cambiar al nuevo sistema de almacenamiento.", "@safMigrationMessage2": { "description": "Second paragraph of SAF migration dialog" }, - "safMigrationSuccess": "Download folder updated to SAF mode", + "safMigrationSuccess": "Carpeta de descargas actualizada al modo SAF", "@safMigrationSuccess": { "description": "Snackbar after successfully migrating to SAF" }, "settingsDonate": "Apoya el desarrollo", "@settingsDonate": { - "description": "Settings menu item - donate" + "description": "Settings menu item - donate page" }, "settingsDonateSubtitle": "Compra un café al desarrollador", "@settingsDonateSubtitle": { "description": "Subtitle for donate menu item" }, - "tooltipLoveAll": "Love All", + "settingsBackup": "Copia de seguridad y Restauración", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "settingsBackupSubtitle": "Transfiere tu biblioteca, historial y configuración a un nuevo dispositivo", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "backupTitle": "Copia de seguridad y Restauración", + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "backupExportSectionTitle": "Crear copia de seguridad", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "backupExportSectionDescription": "Guarda tu configuración, historial de descargas, pistas con «Me gusta», lista de deseos, artistas favoritos y listas de reproducción en un solo archivo que puedes conservar o transferir a otro teléfono.", + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "backupExportButton": "Crear archivo de copia de seguridad", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "backupImportSectionTitle": "Restaurar copia de seguridad", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "backupImportSectionDescription": "Selecciona un archivo de copia de seguridad para restaurar tus datos. Esto reemplazará la configuración, el historial y la biblioteca actuales en este dispositivo.", + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "backupImportButton": "Elegir archivo de copia de seguridad", + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "backupCreating": "Creando copia de seguridad...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "backupCreated": "Copia de seguridad creada", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "No se pudo crear la copia de seguridad", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupEmpty": "Aún no hay nada que respaldar", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "backupRestoreConfirmTitle": "¿Restaurar esta copia de seguridad?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "backupRestoreConfirmMessage": "Esto reemplazará tu configuración actual, historial de descargas, pistas con «Me gusta», lista de deseos y listas de reproducción con el contenido de la copia de seguridad. Esto no se puede deshacer.", + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "backupRestoreConfirmButton": "Restaurar", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "backupRestoring": "Restaurando copia de seguridad...", + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "backupRestored": "Copia de seguridad restaurada correctamente", + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "backupRestoreFailed": "Fallo al restaurar la copia de seguridad", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "backupInvalidFile": "Este archivo no es una copia de seguridad válida de SpotiFLAC", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "backupRestoreRestartHint": "Reinicie la aplicación para asegurarse de que cada cambio se aplique.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "backupContentsTitle": "Contenido de la copia de seguridad", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "backupContentsSettings": "Configuración de la aplicación", + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "backupContentsHistory": "{count} historial {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsLiked": "{count} {count, plural, =1{pista con «Me gusta»} other{pistas con «Me gusta»}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsWishlist": "{count} {count, plural, =1{pista en la lista de deseos} other{pistas en la lista de deseos}}", + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsPlaylists": "{count, plural, =1{1 lista de reproducción} other{{count} listas de reproducción}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 artista favorito} other{{count} artistas favoritos}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsExtensions": "{count, plural, =1{1 extensión} other{{count} extensiones}}", + "@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": "Los tokens y las claves API de las extensiones se guardarán en el archivo de copia de seguridad. Mantenga el archivo privado. Cuando está desactivado, volverá a introducirlos después de restaurar.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipLoveAll": "Favoritos", "@tooltipLoveAll": { "description": "Tooltip for the Love All button on album/playlist screens" }, @@ -3673,7 +4014,7 @@ "@tooltipAddToPlaylist": { "description": "Tooltip for the Add to Playlist button" }, - "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "snackbarRemovedTracksFromLoved": "Eliminadas {count} pistas de Favoritos", "@snackbarRemovedTracksFromLoved": { "description": "Snackbar after removing multiple tracks from Loved folder", "placeholders": { @@ -3682,7 +4023,7 @@ } } }, - "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "snackbarAddedTracksToLoved": "Agregadas {count} pistas de Favoritos", "@snackbarAddedTracksToLoved": { "description": "Snackbar after adding multiple tracks to Loved folder", "placeholders": { @@ -3695,7 +4036,7 @@ "@dialogDownloadAllTitle": { "description": "Dialog title for bulk download confirmation" }, - "dialogDownloadAllMessage": "Download {count} tracks?", + "dialogDownloadAllMessage": "¿Descargar {count} pistas?", "@dialogDownloadAllMessage": { "description": "Body of the Download All confirmation dialog", "placeholders": { @@ -3704,7 +4045,7 @@ } } }, - "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "homeSkipAlreadyDownloaded": "Omitir canciones ya descargadas", "@homeSkipAlreadyDownloaded": { "description": "Checkbox label in import dialog to skip already-downloaded songs" }, @@ -3712,23 +4053,23 @@ "@homeGoToAlbum": { "description": "Context menu item to navigate to the album page" }, - "homeAlbumInfoUnavailable": "Album info not available", + "homeAlbumInfoUnavailable": "La información del álbum no está disponible", "@homeAlbumInfoUnavailable": { "description": "Snackbar when album info cannot be loaded" }, - "snackbarLoadingCueSheet": "Loading CUE sheet...", + "snackbarLoadingCueSheet": "Cargando hoja CUE...", "@snackbarLoadingCueSheet": { "description": "Snackbar while loading a CUE sheet file" }, - "snackbarMetadataSaved": "Metadata saved successfully", + "snackbarMetadataSaved": "Metadatos guardados correctamente", "@snackbarMetadataSaved": { "description": "Snackbar after successfully saving track metadata" }, - "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "snackbarFailedToEmbedLyrics": "Error al incrustar letras", "@snackbarFailedToEmbedLyrics": { "description": "Snackbar when lyrics embedding fails" }, - "snackbarFailedToWriteStorage": "Failed to write back to storage", + "snackbarFailedToWriteStorage": "Error al escribir de vuelta al almacenamiento", "@snackbarFailedToWriteStorage": { "description": "Snackbar when writing metadata back to file fails" }, @@ -3741,29 +4082,29 @@ } } }, - "snackbarNoActionDefined": "No action defined for this button", + "snackbarNoActionDefined": "Ninguna acción definida para este botón", "@snackbarNoActionDefined": { "description": "Snackbar when an extension button has no action configured" }, - "noTracksFoundForAlbum": "No tracks found for this album", + "noTracksFoundForAlbum": "No se encontraron pistas para este álbum", "@noTracksFoundForAlbum": { "description": "Empty state message when an album has no tracks" }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "downloadLocationSubtitle": "Elige dónde guardar tus pistas descargadas", "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "description": "Subtitle shown in the download location picker sheet" }, - "storageModeAppFolder": "App Folder (Recommended)", + "storageModeAppFolder": "Carpeta de la App (Recomendado)", "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "description": "Storage mode option - app-managed folder" }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "storageModeAppFolderSubtitle": "Guarda en Music/SpotiFLAC por defecto", "@storageModeAppFolderSubtitle": { "description": "Subtitle for app folder storage mode" }, "storageModeSaf": "Carpeta personalizada (SAF)", "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "description": "Storage mode option - Storage Access Framework" }, "storageModeSafSubtitle": "Escoge cualquier carpeta, incluyendo la tarjeta SD", "@storageModeSafSubtitle": { @@ -3771,155 +4112,179 @@ }, "downloadFilenameDescription": "Usa {artist}, {title}, {album}, {track}, {year}, {date}, {disc} como marcadores de posición.", "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "description": "Description shown in filename format editor" }, - "downloadFilenameInsertTag": "Tap to insert tag:", + "downloadFilenameInsertTag": "Toca para insertar etiqueta:", "@downloadFilenameInsertTag": { "description": "Label above filename tag chips" }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "downloadSeparateSinglesEnabled": "Sencillos y EPs guardados en una carpeta separada", "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "description": "Subtitle when separate singles folder is on" }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "downloadSeparateSinglesDisabled": "Sencillos y álbumes guardados en la misma carpeta", "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "description": "Subtitle when separate singles folder is off" }, - "downloadArtistNameFilters": "Artist Name Filters", + "downloadArtistNameFilters": "Filtros de Nombre del Artista", "@downloadArtistNameFilters": { "description": "Setting title for artist folder filter options" }, "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" + "description": "Setting to create a subfolder per playlist source" }, "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" + "description": "Subtitle when playlist folder is enabled" }, "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" + "description": "Subtitle when playlist folder is disabled" }, "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" + "description": "Subtitle when folder organization is already set to playlist" }, "downloadSongLinkRegion": "Región de SongLink", "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" + "description": "Setting for SongLink region used during fallback resolution" }, "downloadNetworkCompatibilityMode": "Modo de compatibilidad de red", "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" + "description": "Setting for legacy TLS/network handling" }, "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" + "description": "Subtitle when network compatibility mode is on" }, "downloadNetworkCompatibilityModeDisabled": "Utilizando ajustes de red estándar", "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" + "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": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" + "description": "Subtitle when quality picker is disabled due to extension service" }, "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" + "description": "Legacy info shown when a provider does not expose quality options" }, "downloadEmbedLyricsDisabled": "Enable metadata embedding first", "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" }, "downloadNeteaseIncludeTranslation": "Netease: Include Translation", "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" + "description": "Setting to include translated lyrics from Netease" }, "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" + "description": "Subtitle when Netease translation is on" }, "downloadNeteaseIncludeTranslationDisabled": "Solo letras originales", "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" + "description": "Subtitle when Netease translation is off" }, "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" + "description": "Setting to include romanized lyrics from Netease" }, "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" + "description": "Subtitle when Netease romanization is on" }, "downloadNeteaseIncludeRomanizationDisabled": "No romanization", "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" + "description": "Subtitle when Netease romanization is off" }, "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" + "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 word-by-word is enabled" + "description": "Subtitle when multi-person lyrics is on" }, "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" + "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": "Idioma de Musixmatch", "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" + "description": "Setting for Musixmatch lyrics translation language" }, "downloadMusixmatchLanguageAuto": "Auto (original language)", "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" + "description": "Subtitle when no language is set" }, "downloadFilterContributing": "Filter Contributing Artists", "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" + "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 enabled" + "description": "Subtitle when contributing artist filter is on" }, "downloadFilterContributingDisabled": "Full Album Artist string used", "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" + "description": "Subtitle when contributing artist filter is off" }, "downloadProvidersNoneEnabled": "No hay proveedores activos", "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" + "description": "Shown when no lyrics providers are active" }, "downloadMusixmatchLanguageCode": "Código de idioma", "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" + "description": "Label for Musixmatch language input field" }, "downloadMusixmatchLanguageHint": "e.g. en, de, ja", "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" + "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": "Introduce un código de idioma BCP-47 (por ejemplo, en, de, ja) para solicitar letras traducidas desde Musixmatch.", "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" + "description": "Description in Musixmatch language picker" }, - "downloadMusixmatchAuto": "Auto", + "downloadMusixmatchAuto": "Automático", "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" + "description": "Button to clear Musixmatch language (use auto)" }, "downloadNetworkAnySubtitle": "Usar Wi-Fi o datos móviles", "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" + "description": "Subtitle for any-network option in picker" }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "downloadNetworkWifiOnlySubtitle": "Las descargas se pausan con datos móviles", "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" + "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": "Región usada al resolver enlaces de pistas mediante SongLink. Elige el país donde estén disponibles tus servicios de streaming.", "@downloadSongLinkRegionDesc": { - "description": "Description in the SongLink region picker" + "description": "Description in SongLink region picker" }, "snackbarUnsupportedAudioFormat": "Formato de audio no soportado", "@snackbarUnsupportedAudioFormat": { @@ -3929,7 +4294,7 @@ "@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": "¿Descargar {trackCount} {trackCount, plural, =1{pista} other{pistas}} de {playlistCount} {playlistCount, plural, =1{lista de reproducción} other{listas de reproducción}}?", "@dialogDownloadPlaylistsMessage": { "description": "Dialog message for bulk playlist download confirmation", "placeholders": { @@ -3941,7 +4306,7 @@ } } }, - "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "bulkDownloadPlaylistsButton": "Descargar {count} {count, plural, =1{lista de reproducción} other{listas de reproducción}}", "@bulkDownloadPlaylistsButton": { "description": "Button label for bulk downloading selected playlists", "placeholders": { @@ -3950,7 +4315,7 @@ } } }, - "bulkDownloadSelectPlaylists": "Select playlists to download", + "bulkDownloadSelectPlaylists": "Selecciona listas de reproducción para descargar", "@bulkDownloadSelectPlaylists": { "description": "Button label when no playlists are selected for download" }, @@ -3958,7 +4323,7 @@ "@snackbarSelectedPlaylistsEmpty": { "description": "Snackbar when selected playlists contain no tracks" }, - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "playlistsCount": "{count, plural, =1{1 lista de reproducción} other{{count} listas de reproducción}}", "@playlistsCount": { "description": "Playlist count display", "placeholders": { @@ -3967,11 +4332,11 @@ } } }, - "editMetadataAutoFill": "Auto-fill from online", + "editMetadataAutoFill": "Autocompletar desde internet", "@editMetadataAutoFill": { "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" }, - "editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata", + "editMetadataAutoFillDesc": "Selecciona los campos para rellenar automáticamente con metadatos en línea", "@editMetadataAutoFillDesc": { "description": "Description for the auto-fill section" }, @@ -3987,7 +4352,7 @@ "@editMetadataAutoFillNoResults": { "description": "Snackbar when online metadata search returns no results" }, - "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", + "editMetadataAutoFillDone": "Se completaron {count} {count, plural, =1{campo} other{campos}} con metadatos en línea", "@editMetadataAutoFillDone": { "description": "Snackbar confirming how many fields were auto-filled", "placeholders": { @@ -3996,7 +4361,7 @@ } } }, - "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "editMetadataAutoFillNoneSelected": "Selecciona al menos un campo para autocompletar", "@editMetadataAutoFillNoneSelected": { "description": "Snackbar when user taps Fetch without selecting any fields" }, @@ -4036,7 +4401,7 @@ "@editMetadataFieldIsrc": { "description": "Chip label for ISRC field in auto-fill selector" }, - "editMetadataFieldLabel": "Label", + "editMetadataFieldLabel": "Discográfica", "@editMetadataFieldLabel": { "description": "Chip label for label field in auto-fill selector" }, @@ -4073,7 +4438,7 @@ "@queueFilteringIndicator": { "description": "Shown while filter results are being computed" }, - "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "queueTrackCount": "{count, plural, =1{1 pista} other{{count} pistas}}", "@queueTrackCount": { "description": "Track count label with plural support", "placeholders": { @@ -4082,7 +4447,7 @@ } } }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "queueAlbumCount": "{count, plural, =1{1 álbum} other{{count} álbumes}}", "@queueAlbumCount": { "description": "Album count label with plural support", "placeholders": { @@ -4103,7 +4468,7 @@ "@queueEmptySingles": { "description": "Empty state title when no single track downloads exist" }, - "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "queueEmptySinglesSubtitle": "Las descargas de pistas individuales aparecerán aquí", "@queueEmptySinglesSubtitle": { "description": "Empty state subtitle for single track downloads" }, @@ -4143,6 +4508,18 @@ "@audioAnalysisSampleRate": { "description": "Sample rate metric label" }, + "audioAnalysisCodec": "Códec", + "@audioAnalysisCodec": { + "description": "Audio codec metric label" + }, + "audioAnalysisContainer": "Contenedor", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "audioAnalysisDecodedFormat": "Formato decodificado", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, "audioAnalysisBitDepth": "Profundidad de bits", "@audioAnalysisBitDepth": { "description": "Bit depth metric label" @@ -4175,6 +4552,30 @@ "@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" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, "audioAnalysisSamples": "Muestras", "@audioAnalysisSamples": { "description": "Total samples metric label" @@ -4206,12 +4607,20 @@ }, "extensionsHomeFeedAuto": "Auto", "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" + "description": "Label for auto-selected search provider" }, "extensionsHomeFeedAutoSubtitle": "Seleccionar automáticamente la mejor disponible", "@extensionsHomeFeedAutoSubtitle": { "description": "Extensions page - subtitle for auto home feed option" }, + "extensionsHomeFeedOff": "Desactivado", + "@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", @@ -4374,6 +4783,31 @@ } } }, + "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": "Descargas canceladas", + "@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": "Escaneando biblioteca local", "@notifScanningLibrary": { "description": "Notification title while scanning local library" @@ -4493,271 +4927,6 @@ "@notifUpdateFailedBody": { "description": "Notification body when app update download fails" }, - "settingsFiles": "Archivos y carpetas", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "settingsFilesSubtitle": "Directorio de descarga, nombre de archivo y estructura de carpetas", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "settingsMetadata": "Información", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "settingsMetadataSubtitle": "Carátula, etiquetas, ReplayGain, proveedores", - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "settingsLyrics": "Letra", - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "settingsLyricsSubtitle": "Insertar, modo, proveedores, opciones de idioma", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" - }, - "settingsApp": "Aplicación", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "settingsAppSubtitle": "Actualizaciones, datos, extensiones repo, depuración", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "sectionMetadataProviders": "Proveedores", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "sectionDuplicates": "Duplicados", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "sectionLyricsProviderOptions": "Opciones del proveedor", - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "metadataProvidersTitle": "Prioridad de proveedor de información", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "metadataProvidersSubtitle": "Arrastre para establecer orden de búsqueda y origen de información", - "@metadataProvidersSubtitle": { - "description": "Subtitle for metadata provider priority item" - }, - "downloadDeduplication": "Saltar descargas duplicadas", - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" - }, - "downloadDeduplicationEnabled": "Las pistas previamente descargadas se omitirán", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" - }, - "downloadDeduplicationDisabled": "Todas las pistas se descargarán independientemente del historial", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "downloadFallbackExtensions": "Reslpado de extensiones", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" - }, - "downloadFallbackExtensionsSubtitle": "Elige qué extensiones se pueden utilizar como alternativa", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "homeEmptyTitle": "J", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Instalar una extensión para continuar.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Elegir idioma", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Selecciona tu idioma preferido para la aplicación. Puedes cambiar esto luego en Configuración.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "Idioma predeterminado", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Fuente: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "extensionsInstalledCount": "{count} Extensiones instaladas correctamente", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "{installed} Instalados de {attempted} extensiones", - "@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" - } - } - }, - "downloadLossyAac": "AAC/M4A (320 kbps)", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "La mejor compatibilidad con dispositivos móviles, formato M4A", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Artistas favoritos", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionFavoriteArtistsEmptyTitle": "Aún no hay artistas favoritos", - "@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" - }, - "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" - } - } - }, - "artistOptionAddToFavorites": "Añadir a artistas favoritos", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" - }, - "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" - }, - "audioAnalysisCodec": "Códec", - "@audioAnalysisCodec": { - "description": "Audio codec metric label" - }, - "audioAnalysisContainer": "Contenedor", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "audioAnalysisDecodedFormat": "Formato decodificado", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format 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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "extensionsHomeFeedOff": "Desactivado", - "@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" - }, - "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": "Descargas canceladas", - "@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" - } - } - }, "searchTracks": "Pistas", "@searchTracks": { "description": "Search filter label - tracks" @@ -5070,6 +5239,86 @@ } } }, + "optionsDefaultSearchTabAlbums": "Álbumes", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "optionsDefaultSearchTabTracks": "Pistas", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "settingsFiles": "Archivos y carpetas", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "settingsFilesSubtitle": "Directorio de descarga, nombre de archivo y estructura de carpetas", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "settingsMetadata": "Información", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "settingsMetadataSubtitle": "Carátula, etiquetas, ReplayGain, proveedores", + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "settingsLyrics": "Letra", + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "settingsLyricsSubtitle": "Insertar, modo, proveedores, opciones de idioma", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "settingsApp": "Aplicación", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "settingsAppSubtitle": "Actualizaciones, datos, extensiones repo, depuración", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "sectionMetadataProviders": "Proveedores", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "sectionDuplicates": "Duplicados", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "sectionLyricsProviderOptions": "Opciones del proveedor", + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "metadataProvidersTitle": "Prioridad de proveedor de información", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "metadataProvidersSubtitle": "Arrastre para establecer orden de búsqueda y origen de información", + "@metadataProvidersSubtitle": { + "description": "Subtitle for metadata provider priority item" + }, + "downloadDeduplication": "Saltar descargas duplicadas", + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "downloadDeduplicationEnabled": "Las pistas previamente descargadas se omitirán", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "downloadDeduplicationDisabled": "Todas las pistas se descargarán independientemente del historial", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "downloadFallbackExtensions": "Reslpado de extensiones", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "downloadFallbackExtensionsSubtitle": "Elige qué extensiones se pueden utilizar como alternativa", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, "editMetadataFieldDateHint": "AAA-MM-DD o AAAA", "@editMetadataFieldDateHint": { "description": "Hint text for the edit metadata date field" @@ -5537,5 +5786,423 @@ "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": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@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" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "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" + }, + "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" } -} +} \ No newline at end of file diff --git a/lib/l10n/arb/app_fr.arb b/lib/l10n/arb/app_fr.arb index 84597718..4259d277 100644 --- a/lib/l10n/arb/app_fr.arb +++ b/lib/l10n/arb/app_fr.arb @@ -1,2453 +1,31 @@ { "@@locale": "fr", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Analysez et gérez votre bibliothèque musicale", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Accueil", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Bibliothèque", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Paramètres", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Dépôt", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Accueil", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Collez une URL prise en charge ou effectuez une recherche par nom", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeSupports": "Prise en charge : URL de titres, d’albums, de playlists et d’artistes", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "Récent", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyFilterAll": "Tous", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Albums", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Titres", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historySearchHint": "Historique de recherche...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Paramètres", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "Télécharger", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "Apparence", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "Options", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Extensions", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "À propos", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Télécharger", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Afficher le sélecteur de qualité pour chaque téléchargement", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Nom du fichier", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadSingleFilenameFormat": "Format de nom de fichier unique", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Modèle de nom de fichier pour les singles et les EP. Utilise les mêmes balises que le format album.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "downloadFolderOrganization": "Organisation du dossier", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Apparence", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "Système", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Clair", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Sombre", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Couleur dynamique", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Utilisez les couleurs de votre fond d'écran", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "Historique", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Liste", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Grille", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Options", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "Fournisseur principal", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Service permettant d'effectuer une recherche par titre de morceau ou d'album", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Utilisation de l'extension : {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsDefaultSearchTab": "Onglet de recherche par défaut", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Choisissez l'onglet qui s'ouvre en premier pour les nouveaux résultats de recherche.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Titres", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Récupération automatique", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Essayez d'autres services si le téléchargement échoue", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Utiliser des fournisseurs d'extension", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Intégrer les paroles", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Enregistrez les paroles synchronisées avec vos morceaux téléchargés", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "Pochette de qualité supérieure", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Télécharger la pochette en haute résolution", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Analyser le niveau sonore et intégrer des balises ReplayGain (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Désactivé : aucune balise de normalisation du volume", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Mode « Artiste »", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Choisissez comment les noms de plusieurs artistes doivent apparaître dans les balises intégrées.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Valeur unique combinée", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Indiquez une seule valeur ARTIST, par exemple « Artiste A, Artiste B », pour garantir une compatibilité maximale avec les lecteurs.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Diviser les balises pour FLAC/Opus", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Créez une balise « artiste » par artiste pour les fichiers FLAC et Opus ; les fichiers MP3 et M4A restent regroupés.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "optionsExtensionStore": "Référentiel d'extensions", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Afficher l'onglet « Dépôt » dans le menu de navigation", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "Vérifier les mises à jour", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "M'avertir lorsqu'une nouvelle version est disponible", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "optionsUpdateChannel": "Chaîne de mise à jour", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "optionsUpdateChannelStable": "Uniquement les versions stables", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "optionsUpdateChannelPreview": "Accédez aux versions préliminaires", - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "optionsUpdateChannelWarning": "La version préliminaire peut contenir des bogues ou des fonctionnalités incomplètes", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "optionsClearHistory": "Effacer l'historique des téléchargements", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "optionsClearHistorySubtitle": "Supprimez tous les morceaux téléchargés de l'historique", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "optionsDetailedLogging": "Journalisation détaillée", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "optionsDetailedLoggingOn": "Des journaux détaillés sont enregistrés", - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "optionsDetailedLoggingOff": "Activer pour les rapports de bogues", - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "optionsSpotifyCredentials": "Identifiants Spotify", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Identifiant client : {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Obligatoire - appuyez pour configurer", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify nécessite vos propres identifiants API. Vous pouvez les obtenir gratuitement sur developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "La fonction de recherche Spotify sera supprimée le 3 mars 2026 en raison de modifications apportées à l'API Spotify. Veuillez passer à Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Extensions", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Désactivée", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Version {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "par {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Désinstaller", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Répertoire des extensions", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Recherche d'extensions...", - "@storeSearch": { - "description": "Store search placeholder" - }, - "storeInstall": "Installer", - "@storeInstall": { - "description": "Install extension button" - }, - "storeInstalled": "Installé", - "@storeInstalled": { - "description": "Already installed badge" - }, - "storeUpdate": "Mettre à jour", - "@storeUpdate": { - "description": "Update available button" - }, - "aboutTitle": "À propos", - "@aboutTitle": { - "description": "About page title" - }, - "aboutContributors": "Contributeurs", - "@aboutContributors": { - "description": "Section for contributors" - }, - "aboutMobileDeveloper": "Développeur de la version mobile", - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "aboutOriginalCreator": "Créateur de la version originale de SpotiFLAC", - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "aboutLogoArtist": "Le talentueux artiste qui a créé le magnifique logo de notre application !", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "aboutTranslators": "Traducteurs", - "@aboutTranslators": { - "description": "Section for translators" - }, - "aboutSpecialThanks": "Remerciements particuliers", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "aboutLinks": "Liens", - "@aboutLinks": { - "description": "Section for external links" - }, - "aboutMobileSource": "Code source pour mobile", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "Code source pour PC", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Garder Android ouvert", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Signaler un problème", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Signalez tout problème que vous rencontrez", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Demande de fonctionnalité", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Proposez de nouvelles fonctionnalités pour l'application", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Chaîne Telegram", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Annonces et mises à jour", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Communauté Telegram", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Discutez avec d'autres utilisateurs", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Réseaux sociaux", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "Application", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Version", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Créateur de « I Don't Have Spotify » (IDHS). Le résolveur de liens de secours qui sauve la mise !", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Recherchez des métadonnées musicales, gérez les extensions et organisez votre bibliothèque.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Albums", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Singles & EPs", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Compilations", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Populaire", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} auditeurs mensuels", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "trackMetadataService": "Service", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "trackMetadataPlay": "Lire", - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "trackMetadataShare": "Partager", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "trackMetadataDelete": "Supprimer", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "setupGrantPermission": "Accorder l'autorisation", - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "setupSkip": "Ignorer pour le moment", - "@setupSkip": { - "description": "Skip current step button" - }, - "setupStorageAccessRequired": "Accès au stockage requis", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "setupStorageAccessMessageAndroid11": "Depuis Android 11, l'autorisation « Accès à tous les fichiers » est requise pour enregistrer des fichiers dans le dossier de téléchargement de votre choix.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Ouvrir les paramètres", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Autorisation refusée. Veuillez accorder toutes les autorisations pour continuer.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "Autorisation {permissionType} requise", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "L'autorisation {permissionType} est requise pour profiter pleinement de l'application. Vous pourrez modifier ce paramètre ultérieurement dans les Paramètres.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Utiliser le dossier par défaut ?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Aucun dossier n'est sélectionné. Souhaitez-vous utiliser le dossier Musique par défaut ?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Utiliser les paramètres par défaut", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Emplacement de téléchargement", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "Sous iOS, les fichiers téléchargés sont enregistrés dans le dossier « Documents » de l'application. Vous pouvez y accéder via l'application Fichiers.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "Dossier « Documents » de l'application", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Recommandé - accessible via l'application Fichiers", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Sélectionnez un fichier", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Sélectionnez iCloud ou un autre emplacement", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "Limitation iOS : les dossiers vides ne peuvent pas être sélectionnés. Choisissez un dossier contenant au moins un fichier.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive n'est pas pris en charge. Veuillez utiliser le dossier « Documents » de l'application.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Télécharger des morceaux Spotify au format FLAC", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStorageGranted": "Autorisation de stockage accordée !", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "Autorisation de stockage requise", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "SpotiFLAC a besoin d'une autorisation d'accès au stockage pour enregistrer vos fichiers musicaux téléchargés.", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "Autorisation de notification accordée !", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "Activer les notifications", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupFolderChoose": "Choisissez le dossier de téléchargement", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "Sélectionnez un dossier dans lequel votre musique téléchargée sera enregistrée.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupSelectFolder": "Sélectionner un dossier", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupEnableNotifications": "Activer les notifications", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupNotificationBackgroundDescription": "Recevez des notifications sur la progression et la fin du téléchargement. Cela vous permet de suivre les téléchargements lorsque l'application est en arrière-plan.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "Ignorer pour le moment", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupNext": "Suivant", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Démarrer", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupAllowAccessToManageFiles": "Veuillez cocher la case « Autoriser l'accès pour gérer tous les fichiers » sur l'écran suivant.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "dialogCancel": "Annuler", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogSave": "Sauvegarder", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "Supprimer", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "Réessayer", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClear": "Effacer", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogDone": "C'est fait", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "Importer", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDownload": "Télécharger", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "dialogDiscard": "Ignorer", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "Supprimer", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "Désinstaller", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "Ignorer les modifications ?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "Vous avez des modifications non enregistrées. Voulez-vous les ignorer ?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogClearAll": "Tout effacer", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogRemoveExtension": "Supprimer l'extension", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Êtes-vous sûr de vouloir supprimer cette extension ? Cette action ne peut pas être annulée.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "Supprimer l'extension ?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "Êtes-vous sûr de vouloir supprimer {extensionName} ?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "Effacer l'historique", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Êtes-vous sûr de vouloir effacer tout l'historique des téléchargements ? Cette action ne peut pas être annulée.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "Supprimer la sélection", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "Supprimer {count} {count, plural, =1{titre} other{titres}} de l'historique ?\n\nCela supprimera également les fichiers du stockage.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Importer une playlist", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "{count} pistes ont été trouvées dans le fichier CSV. Voulez-vous les ajouter à la file d'attente de téléchargement ?", - "csvImportTracks": "{count} pistes issues d'un fichier CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "Ajout de « {trackName} » à la file d'attente", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAddedTracksToQueue": "{count} titres ont été ajoutés à la file d'attente", - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAlreadyDownloaded": "« {trackName} » a déjà été téléchargé", - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAlreadyInLibrary": "« {trackName} » existe déjà dans votre bibliothèque", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "Historique effacé", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "Identifiants enregistrés", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Identifiants validés", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "Supprimé {count} {count, plural, =1{titre} other{titres}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Impossible d'ouvrir le fichier : {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Veuillez remplir tous les champs", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Afficher la file d'attente", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "L'URL de {platform} a été copiée dans le presse-papiers", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "Fichier introuvable", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Veuillez sélectionner un fichier .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Priorité du fournisseur enregistrée", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Priorité du fournisseur de métadonnées enregistrée", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} est installée.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarExtensionUpdated": "{extensionName} a été mis à jour.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarFailedToInstall": "Échec de l'installation de l'extension", - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "snackbarFailedToUpdate": "Échec de la mise à jour de l'extension", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "errorRateLimited": "Débit limité", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "Trop de requêtes. Veuillez patienter quelques instants avant de relancer la recherche.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "Aucun titre trouvé", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "errorUrlNotRecognized": "Lien non reconnu", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "Ce lien n'est pas pris en charge. Vérifiez que l'URL est correcte et qu'une extension compatible est installée.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Impossible de charger le contenu de ce lien. Veuillez réessayer.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "Impossible de charger {item} : source de l'extension manquante", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Pause", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Resumer", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Annuler", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Tout sélectionner", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Désélectionner", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Supprimer les identifiants", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Enregistrer les identifiants", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} sélectionnés", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Toutes les pistes sélectionnées", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Sélectionnez les titres à supprimer", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Récupération des métadonnées... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "Lecture du fichier CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Titres", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Artistes", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Albums", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Playlists", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Trier les résultats", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Par défaut", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Titre (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Titre (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Artiste (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Artiste (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Durée (la plus courte)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Durée (la plus longue)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Date de sortie (la plus ancienne)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Date de sortie (la plus récente)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "Lecture", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Format des noms de fichiers", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Afficher les balises avancées", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Activer les balises de formatage pour le remplissage des pistes et les formats de date", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "Aucune organisation", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "Par playlist", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Un dossier distinct pour chaque playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "Par artiste", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "Par album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Artiste/Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Classer les fichiers téléchargés dans des dossiers", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Tous les fichiers du dossier « Téléchargements »", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Un dossier distinct pour chaque artiste", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Un dossier distinct pour chaque album", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Dossiers imbriqués pour les artistes et les albums", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Mise à jour disponible", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Plus tard", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Début du téléchargement...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Échec du téléchargement", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Échec du téléchargement de la mise à jour", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Une nouvelle version est disponible", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Actuel", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "Nouveau", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "Téléchargement en cours...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "Quoi de neuf ?", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "Télécharger & Installer", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Ne plus me le rappeler", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "Priorité accordée aux prestataires", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de téléchargement. L'application testera les fournisseurs dans l'ordre indiqué, de haut en bas, lors du téléchargement des morceaux.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "Si un morceau n'est pas disponible chez le premier fournisseur, l'application essaiera automatiquement le suivant.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerPriorityFallbackExtensionsTitle": "Solution de secours pour les extensions", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Sélectionnez les extensions de téléchargement installées qui peuvent être utilisées lors du basculement automatique.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Seules les extensions activées disposant de la fonctionnalité « fournisseur de téléchargement » sont répertoriées ici.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Extension", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Priorité des métadonnées", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de métadonnées. L'application testera les fournisseurs dans l'ordre de haut en bas lors de la recherche de morceaux et de la récupération des métadonnées.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer n'impose aucune limite de débit et est recommandé comme service principal. Spotify peut limiter le débit après un certain nombre de requêtes.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "Pas de limite de débit", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Limite de taux de métadonnées", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Journaux", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopied": "Journaux copiés dans le presse-papiers", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Recherche dans les journaux...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Niveau", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filtre", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Partager les journaux", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "Effacer les journaux", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "Effacer les journaux", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "extensionUtilityFunctions": "Fonctions utilitaires", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "Êtes-vous sûr de vouloir effacer tous les journaux ?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "Filtrer les journaux par niveau de gravité", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "Pas encore de journal", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Les journaux s'afficheront ici au fur et à mesure que vous utiliserez l'application", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "Entrées ({count} résultats filtrés)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "Entrées ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Identifiants Spotify", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Saisissez votre identifiant client et votre clé secrète pour utiliser votre propre quota d'application Spotify.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Identifiant client", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Coller l'identifiant client", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Clé secrète du client", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Coller la clé secrète du client", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "channelStable": "Stable", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "channelPreview": "Aperçu", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "sectionSearchSource": "Rechercher dans la source", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "sectionDownload": "Télécharger", - "@sectionDownload": { - "description": "Settings section header" - }, - "sectionPerformance": "Performances", - "@sectionPerformance": { - "description": "Settings section header" - }, - "sectionApp": "Application", - "@sectionApp": { - "description": "Settings section header" - }, - "sectionData": "Données", - "@sectionData": { - "description": "Settings section header" - }, - "sectionDebug": "Débogage", - "@sectionDebug": { - "description": "Settings section header" - }, - "sectionService": "Service", - "@sectionService": { - "description": "Settings section header" - }, - "sectionAudioQuality": "Qualité audio", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "sectionFileSettings": "Paramètres du fichier", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "sectionLyrics": "Paroles", - "@sectionLyrics": { - "description": "Settings section header" - }, - "lyricsMode": "Mode Paroles", - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "lyricsModeDescription": "Choisissez comment les paroles sont enregistrées avec vos téléchargements", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "Intégrer dans un fichier", - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "lyricsModeEmbedSubtitle": "Paroles enregistrées dans les métadonnées FLAC", - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "lyricsModeExternal": "Fichier .lrc externe", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "lyricsModeExternalSubtitle": "Fichier .lrc distinct pour les lecteurs tels que Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "Les deux", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Intégrer et enregistrer le fichier .lrc", - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "sectionColor": "Couleur", - "@sectionColor": { - "description": "Settings section header" - }, - "sectionTheme": "Thème", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Mise en page", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Langue", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "Langue de l'application", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "settingsAppearanceSubtitle": "Thème, couleurs, affichage", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Service, qualité, solution de secours", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fichier de secours, métadonnées, paroles, pochette", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Gérez les fournisseurs de téléchargement", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "Consulter les journaux de l'application pour le débogage", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Chargement du lien partagé...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Appuyez de nouveau sur retour pour quitter", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Tout télécharger ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 titre} other{{count} titres}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Copier le chemin d'accès au fichier", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Supprimer de l'appareil", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Charger les paroles", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Métadonnées", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Informations sur le fichier", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Paroles", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "Fichier introuvable", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Ouvrir dans Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Ouvrir dans Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Nom de la piste", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Artiste", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Artiste de l'album", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Album", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Numéro de piste", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Numéro de disque", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Durée", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Qualité audio", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Date de sortie", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Genre", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Droits d'auteur", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "Téléchargé", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Copier les paroles", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsNotAvailable": "Les paroles de ce morceau ne sont pas disponibles", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsNotInFile": "Aucune parole n'a été trouvée dans ce fichier", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Télécharger depuis Internet", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "trackLyricsTimeout": "La requête a expiré. Veuillez réessayer plus tard.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Impossible de charger les paroles", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Intégrer les paroles", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Les paroles ont été intégrées avec succès", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Morceau instrumental", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "Copié dans le presse-papiers", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Supprimer de l'appareil ?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "Cela supprimera définitivement le fichier téléchargé et l'effacera de votre historique.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "Aujourd'hui", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Hier", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "Il y a {count} jours", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "Il y a {count} semaines", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "Il y a {count} mois", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "Tout", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Métadonnées", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Télécharger", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Utilitaire", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Paroles", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Intégration", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Effacer les filtres", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Ajouter un dépôt d'extensions", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" + "cacheCleanupUnused": "Nettoyer les données inutilisées", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "storeAddRepoDescription": "Saisissez l'URL d'un dépôt GitHub contenant un fichier registry.json pour parcourir et installer des extensions.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "URL du dépôt", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "par exemple : https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Ajouter un dépôt", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Changer de dépôt", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Répertoire des extensions", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Dépôt actuel :", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "Nouvelle URL du dépôt", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Échec du chargement du dépôt", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "Aucune extension disponible", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "Aucune extension trouvée", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Auteur", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Erreur", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Fonctionnalités", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Fournisseur de métadonnées", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Fournisseur de téléchargement", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Fournisseur de paroles", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "Gestionnaire d'URL", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Options de qualité", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Crochets de post-traitement", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Autorisations", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Paramètres", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Supprimer l'extension", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Mis à jour", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Version minimale de l'application", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Correspondance personnalisée des pistes", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Post-traitement", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} crochet(s) disponibles", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionPatternsCount": "{count} motif(s)", - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionStrategy": "Stratégie : {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "extensionsProviderPrioritySection": "Priorité accordée aux prestataires", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Extensions installées", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "Aucune extension installée", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Installez les fichiers .spotiflac-ext pour ajouter de nouveaux fournisseurs", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Installer l'extension", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Les extensions permettent d'ajouter de nouvelles métadonnées et de nouveaux fournisseurs de téléchargement. N'installez que des extensions provenant de sources fiables.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "L'extension a été installée avec succès", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsDownloadPriority": "Priorité de téléchargement", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Définissez l'ordre des services de téléchargement", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Extensions de secours", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Choisissez les extensions de téléchargement installées qui peuvent servir de solution de secours", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "Aucune extension avec le fournisseur de téléchargement", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Priorité des métadonnées", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Définissez l'ordre des sources de recherche et de métadonnées", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Aucune extension avec fournisseur de métadonnées", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Moteur de recherche", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Aucune extension avec recherche personnalisée", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Choisissez le service que vous souhaitez utiliser pour rechercher des morceaux", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Recherche personnalisée", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Erreur lors du chargement de l'extension", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC sans perte", - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "qualityFlacLosslessSubtitle": "16 bits / 44,1 kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "qualityHiResFlac": "FLAC haute résolution", - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "qualityHiResFlacSubtitle": "24 bits / jusqu'à 96 kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "FLAC haute résolution Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24 bits / jusqu'à 192 kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "Compression avec perte à 320 kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Format avec perte", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Format avec perte à 320 kbps", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320 kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Compatibilité optimale, environ 10 Mo par piste", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256 kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Opus en qualité optimale, environ 8 Mo par piste", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128 kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Taille minimale : environ 4 Mo par piste", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "La qualité réelle dépend de la disponibilité des pistes sur le service", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Demander avant de télécharger", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Répertoire de téléchargement", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Dossier dédié aux titres individuels", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Structure du dossier de l'album", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Choisir la structure des dossiers d'album", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Utilisez l'artiste de l'album pour les dossiers", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Artiste principal uniquement pour les dossiers", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Les noms des artistes mis en avant ont été supprimés du nom du dossier (par exemple : Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Nom complet de l'artiste utilisé pour le nom du dossier", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Sélectionner la qualité", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Télécharger depuis", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "Noir Amoled", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Fond noir pur", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Tout effacer", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Êtes-vous sûr de vouloir supprimer tous les fichiers téléchargés ?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Échec de l'exportation automatique des téléchargements", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Enregistrez automatiquement les téléchargements ayant échoué dans un fichier TXT", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Réseau de téléchargement", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "Wi-Fi + données mobiles", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "Wi-Fi uniquement", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Choisissez le réseau à utiliser pour les téléchargements. Si vous sélectionnez « Wi-Fi uniquement », les téléchargements seront interrompus lorsque vous utilisez les données mobiles.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Artiste / Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Albums/Nom de l'artiste/Titre de l'album/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Artiste / [Année] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Nom de l'artiste/[2005] Nom de l'album/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Album uniquement", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Albums/Nom de l'album/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Année] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Albums/[2005] Titre de l'album/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Artiste / Album + Singles", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Artiste/Album/ et Artiste/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Artiste / Album (singles)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artiste/Album/ et Artiste/titre.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Supprimer la sélection", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Souhaitez-vous supprimer {count} {count, plural, =1{piste} other{pistes}} de cet album ?\n\nCela supprimera également les fichiers de l'espace de stockage.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} sélectionnés", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "Tous les titres sélectionnés", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Appuyez sur les titres pour les sélectionner", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Supprimer {count} {count, plural, =1{piste} other{pistes}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Sélectionnez les pistes à supprimer", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Disque {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "recentTypeArtist": "Artiste", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Album", - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "recentTypeSong": "Titre", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "recentEmpty": "Aucun élément récent pour le moment", - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "recentShowAllDownloads": "Afficher tous les téléchargements", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" - }, - "recentPlaylistInfo": "Playlist : {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "discographyDownload": "Télécharger la discographie", - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "discographyDownloadAll": "Tout télécharger", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "discographyDownloadAllSubtitle": "{count} titres issus de {albumCount} albums", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographyAlbumsOnly": "Albums uniquement", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "discographyAlbumsOnlySubtitle": "{count} titres issus de {albumCount} albums", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySinglesOnly": "Uniquement les singles et les EP", - "@discographySinglesOnly": { - "description": "Option - download only singles" - }, - "discographySinglesOnlySubtitle": "{count} titres issus de {albumCount} singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySelectAlbums": "Sélectionner des albums...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "discographySelectAlbumsSubtitle": "Choisissez des albums ou des titres spécifiques", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "Chargement des pistes...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "Récupération de {current} sur {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} sélectionnés", - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyDownloadSelected": "Télécharger la sélection", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "discographyAddedToQueue": "{count} titres ont été ajoutés à la file d'attente", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} ajouté, {skipped} déjà téléchargé", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "Aucun album disponible", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "Impossible de récupérer certains albums", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "Accès au stockage", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "Accès à tous les fichiers", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Peut écrire dans n'importe quel dossier", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Réservé aux dossiers multimédias uniquement", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Activez cette option si vous rencontrez des erreurs d'écriture lors de l'enregistrement dans des dossiers personnalisés. À partir d'Android 13, l'accès à certains répertoires est restreint par défaut.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "L'autorisation a été refusée. Veuillez activer manuellement l'option « Accès à tous les fichiers » dans les paramètres système.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "L'accès à tous les fichiers est désactivé. L'application disposera d'un accès limité au stockage.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "Bibliothèque locale", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Analysez la musique et détectez les doublons", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "Stockage & Cache", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "Afficher la taille et vider le cache", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "Bibliothèque locale", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryScanSettings": "Paramètres de numérisation", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "Activer la bibliothèque locale", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Analysez et gérez votre bibliothèque musicale", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "Dossier de bibliothèque", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "Appuyez pour sélectionner un dossier", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Afficher l'indicateur de doublons", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Afficher lors de la recherche de pistes existantes", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryAutoScan": "Analyse automatique", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Analysez automatiquement votre bibliothèque à la recherche de nouveaux fichiers", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Désactivée", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "À chaque ouverture de l'application", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Tous les jours", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Hebdomadaire", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Analyse de la bibliothèque", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Recherchez des fichiers audio", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Sélectionnez d'abord un dossier", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Nettoyage des fichiers manquants", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Supprimez les entrées correspondant aux fichiers qui n'existent plus", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Vider la bibliothèque", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Supprimez tous les titres numérisés", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Vider la bibliothèque", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "Cette opération supprimera toutes les pistes numérisées de votre bibliothèque. Vos fichiers musicaux ne seront pas supprimés.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "À propos de la bibliothèque locale", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Analyse votre bibliothèque musicale existante pour détecter les doublons lors du téléchargement. Prend en charge les formats FLAC, M4A, MP3, Opus et OGG. Les métadonnées sont extraites des balises des fichiers lorsqu'elles sont disponibles.", - "@libraryAboutDescription": { - "description": "Description of local library feature" + "trackConvertDitherNone": "Aucun", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, "libraryTracksUnit": "{count, plural, =1{piste} other{pistes}}", "@libraryTracksUnit": { @@ -2458,1022 +36,59 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{fichier} other{fichiers}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "folderOrganizationNone": "Aucune organisation", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScanned": "Dernière analyse : {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryLastScannedNever": "Jamais", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "En cours d'analyse...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanFinalizing": "Finalisation de la bibliothèque...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryScanProgress": "{progress} % des {total} fichiers", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "Dans la bibliothèque", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "{count} fichiers manquants ont été supprimés de la bibliothèque", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Bibliothèque vidée", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Accès au stockage requis", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC a besoin d'un accès au stockage pour analyser votre bibliothèque musicale. Veuillez lui accorder l'autorisation dans les paramètres.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Le dossier sélectionné n'existe pas", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Téléchargé", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Locale", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "Tout", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Téléchargé", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Locale", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filtres", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Réinitialiser", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Appliquer", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Qualité", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Haute résolution (24 bits)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16 bits)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Avec perte", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterMetadata": "Métadonnées", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Métadonnées complètes", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Métadonnées manquantes", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Année manquante", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Genre manquant", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Artiste d'album manquant", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "libraryFilterSort": "Trier", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Le plus récent", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Le plus ancien", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "timeJustNow": "Il y a quelques instants", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{il y a 1 minute} other{il y a {count} minutes}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{il y a 1 heure} other{il y a {count} heures}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "Bienvenue sur SpotiFLAC !", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Apprenons comment télécharger votre musique préférée en qualité sans perte. Ce petit tutoriel vous présentera les bases.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Téléchargez de la musique depuis Spotify ou Deezer, ou collez n'importe quelle URL prise en charge", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Intégration automatique des métadonnées, des pochettes d'album et des paroles", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Trouver de la musique", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "Il existe deux façons simples de trouver la musique que vous souhaitez télécharger.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Télécharger de la musique", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Télécharger de la musique, c'est simple et rapide. Voici comment ça marche.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Votre bibliothèque", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "Toute votre musique téléchargée est classée dans l'onglet « Bibliothèque ».", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "Afficher la progression du téléchargement et la file d'attente dans l'onglet « Bibliothèque »", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Appuyez sur n'importe quel morceau pour l'écouter avec votre lecteur de musique", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Passez de l'affichage sous forme de liste à celui sous forme de grille pour faciliter la navigation", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Élargissez les fonctionnalités de l'application grâce aux extensions de la communauté.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Consultez l'onglet « Dépôt » pour découvrir des extensions utiles", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Ajouter de nouveaux fournisseurs de téléchargement ou de nouvelles sources de recherche", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Accédez aux paroles, à des métadonnées enrichies et à bien d'autres fonctionnalités", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Personnalisez votre expérience", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personnalisez l'application dans les Paramètres en fonction de vos préférences.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Modifier l'emplacement de téléchargement et l'organisation des dossiers", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Définir les préférences par défaut en matière de qualité et de format audio", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Personnaliser le thème et l'apparence de l'application", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "C'est parti ! Commencez dès maintenant à télécharger votre musique préférée.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Lancer une analyse complète", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Réanalysez tous les fichiers en ignorant le cache", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Nettoyage des téléchargements orphelins", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Supprimez les entrées de l'historique correspondant aux fichiers qui n'existent plus", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "{count} entrées orphelines ont été supprimées de l'historique", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "Aucune entrée orpheline n'a été trouvée", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Stockage & Cache", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Présentation du cache", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "La suppression du cache n'entraînera pas la suppression des fichiers musicaux téléchargés.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Utilisation estimée du cache : {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Données mises en cache", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Entretien", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "Répertoire de cache de l'application", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "Réponses HTTP, données WebView et autres données temporaires de l'application.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Répertoire temporaire", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Fichiers temporaires liés aux téléchargements et à la conversion audio.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "Cache des images de couverture", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "cacheCoverImageDesc": "J'ai téléchargé les pochettes de l'album et des titres. Je les téléchargerai à nouveau lors de leur consultation.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "cacheLibraryCover": "Cache de couverture de bibliothèque", - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "cacheLibraryCoverDesc": "Pochettes extraites des fichiers musicaux locaux. Elles seront extraites à nouveau lors de la prochaine analyse.", - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "cacheExploreFeed": "Explorer le cache des flux", - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "cacheExploreFeedDesc": "Contenu de l'onglet « Explorer » (nouvelles sorties, tendances). Se mettra à jour lors de votre prochaine visite.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "cacheTrackLookup": "Cache de recherche de piste", - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "cacheTrackLookupDesc": "Recherche d'identifiant de titre sur Spotify/Deezer. La suppression des données peut ralentir les prochaines recherches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "cacheCleanupUnusedDesc": "Supprimer les entrées orphelines de l'historique des téléchargements et de la bibliothèque pour les fichiers manquants.", - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "cacheNoData": "Aucune donnée mise en cache", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "cacheSizeWithFiles": "{size} dans {count} fichiers", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheEntries": "{count} entrées", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheClearSuccess": "Effacé : {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Vider le cache ?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "cacheClearConfirmMessage": "Cette opération effacera les données mises en cache pour {target}. Les fichiers musicaux téléchargés ne seront pas supprimés.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearAllConfirmTitle": "Vider tout le cache ?", - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "cacheClearAllConfirmMessage": "Cette opération effacera toutes les catégories mises en cache sur cette page. Les fichiers musicaux téléchargés ne seront pas supprimés.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "cacheClearAll": "Vider tout le cache", - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "cacheCleanupUnused": "Nettoyer les données inutilisées", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" - }, - "cacheCleanupUnusedSubtitle": "Supprimer l'historique des téléchargements orphelins et les entrées manquantes dans la bibliothèque", - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "cacheCleanupResult": "Nettoyage terminé : {downloadCount} téléchargements orphelins, {libraryCount} entrées de bibliothèque manquantes", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "cacheRefreshStats": "Actualiser les statistiques", - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "trackSaveCoverArt": "Enregistrer la pochette", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "trackSaveCoverArtSubtitle": "Enregistrez la pochette de l'album au format .jpg", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Enregistrer les paroles (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Récupérez et enregistrez les paroles sous forme de fichier .lrc", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Enregistrement des paroles...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackReEnrich": "Réenrichir", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "trackReEnrichOnlineSubtitle": "Rechercher des métadonnées en ligne et les intégrer dans un fichier", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "trackReEnrichFieldsTitle": "Champs à mettre à jour", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Illustration de couverture", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "trackReEnrichFieldLyrics": "Paroles", - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "trackReEnrichFieldBasicTags": "Album, Album Artiste", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" - }, - "trackReEnrichFieldTrackInfo": "Numéro de piste & de disque", - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "trackReEnrichFieldReleaseInfo": "Date & ISRC", - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "trackReEnrichFieldExtra": "Genre, Label, Droits d'auteur", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "trackReEnrichSelectAll": "Tout sélectionner", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "trackEditMetadata": "Modifier les métadonnées", - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "trackCoverSaved": "La pochette a été enregistrée sous le nom {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackCoverNoSource": "Aucune source d'illustration de couverture disponible", - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "trackLyricsSaved": "Paroles enregistrées dans {fileName}", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichProgress": "Réenrichissement des métadonnées...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "trackReEnrichSearching": "Recherche de métadonnées en ligne...", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "trackReEnrichSuccess": "Métadonnées réenrichies avec succès", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "trackReEnrichFfmpegFailed": "Échec de l'intégration des métadonnées FFmpeg", - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "queueFlacAction": "File d'attente FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "queueFlacConfirmMessage": "Recherchez en ligne les correspondances pour les morceaux sélectionnés et ajoutez les téléchargements FLAC à la file d'attente.\n\nLes fichiers existants ne seront ni modifiés ni supprimés.\n\nSeules les correspondances hautement fiables sont automatiquement ajoutées à la file d'attente.\n\n{count} sélectionnés", - "@queueFlacConfirmMessage": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueFlacFindingProgress": "Recherche de fichiers FLAC... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "Aucun résultat pertinent n'a été trouvé en ligne pour cette sélection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "queueFlacQueuedWithSkipped": "{addedCount} titres ajoutés à la file d'attente, {skippedCount} titres ignorés", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "trackSaveFailed": "Échec : {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "trackConvertFormat": "Convertir le format", - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "trackConvertFormatSubtitle": "Convertir au format AAC/M4A, MP3, Opus, ALAC ou FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Convertir un fichier audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Format cible", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Débit binaire", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "trackConvertConfirmTitle": "Confirmer la conversion", "@trackConvertConfirmTitle": { "description": "Confirmation dialog title" }, - "trackConvertConfirmMessage": "Convertir du format {sourceFormat} au format {targetFormat} avec un débit binaire de {bitrate} ?\n\nLe fichier d'origine sera supprimé après la conversion.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "trackConvertConfirmMessageLossless": "Convertir de {sourceFormat} vers {targetFormat} ? (Sans perte — aucune perte de qualité)\n\nLe fichier d'origine sera supprimé après la conversion.", - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - } - } - }, - "trackConvertLosslessHint": "Conversion sans perte — aucune perte de qualité", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "trackConvertConverting": "Conversion audio en cours...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "trackConvertSuccess": "Conversion vers {format} réussie", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "trackConvertFailed": "Échec de la conversion", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "cueSplitTitle": "Fiche CUE fractionnée", - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "cueSplitSubtitle": "Diviser un fichier CUE+FLAC en pistes individuelles", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album : {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "cueSplitArtist": "Artiste : {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "cueSplitTrackCount": "{count} titres", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "Album CUE fractionné", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "Conteneur", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "Diviser « {album} » en {count} fichiers FLAC individuels ?\n\nLes fichiers seront enregistrés dans le même répertoire.", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "Désactivée", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "Lien {service} copié", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "Fractionnement de la liste CUE... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "Sélectionnez les extensions de téléchargement installées qui peuvent être utilisées lors du basculement automatique.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "Le fichier a été divisé en {count} pistes avec succès", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { "count": { "type": "int" } } }, - "cueSplitFailed": "Échec de la division CUE", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "cueSplitNoAudioFile": "Fichier audio introuvable pour cette liste CUE", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "cueSplitButton": "Diviser en pistes", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "actionCreate": "Créer", - "@actionCreate": { - "description": "Generic action button - create" - }, - "collectionFoldersTitle": "Mes dossiers", - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "collectionWishlist": "Liste de souhaits", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "collectionLoved": "Favoris", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "collectionPlaylists": "Playlists", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "collectionPlaylist": "Playlist", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "collectionAddToPlaylist": "Ajouter à la playlist", - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "collectionCreatePlaylist": "Créer une playlist", - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "collectionNoPlaylistsYet": "Aucune playlist pour le moment", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "collectionNoPlaylistsSubtitle": "Créez une playlist pour commencer à classer vos morceaux", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 titre} other{{count} titres}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedToPlaylist": "Ajouté à « {playlistName} »", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Déjà présent dans « {playlistName} »", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Playlist créée", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "collectionPlaylistNameHint": "Nom de la playlist", - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" - }, - "collectionPlaylistNameRequired": "Le nom de la playlist est requis", - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "collectionRenamePlaylist": "Renommer la playlist", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "collectionDeletePlaylist": "Supprimer la playlist", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "collectionDeletePlaylistMessage": "Supprimer « {playlistName} » et tous les morceaux qu'elle contient ?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist supprimée", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Playlist renommée", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "collectionWishlistEmptyTitle": "La liste de souhaits est vide", - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "collectionWishlistEmptySubtitle": "Appuyez sur le signe « + » à côté des morceaux pour enregistrer ceux que vous souhaitez télécharger plus tard", - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "collectionLovedEmptyTitle": "Le dossier « Favoris » est vide", - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "collectionLovedEmptySubtitle": "Appuyez sur les morceaux que vous aimez pour les ajouter à vos favoris", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "collectionPlaylistEmptyTitle": "La playlist est vide", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "collectionPlaylistEmptySubtitle": "Appuyez longuement sur le bouton « + » sur n'importe quel morceau pour l'ajouter ici", - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "collectionRemoveFromPlaylist": "Supprimer de la playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "collectionRemoveFromFolder": "Supprimer du dossier", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "collectionRemoved": "« {trackName} » supprimé", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" ajouté aux Favoris", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromLoved": "\"{trackName}\" supprimé des Favoris", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToWishlist": "« {trackName} » a été ajouté à la liste de souhaits", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromWishlist": "« {trackName} » a été supprimé de la liste de souhaits", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "trackOptionAddToLoved": "Ajouter aux Favoris", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "trackOptionRemoveFromLoved": "Supprimer des Favoris", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "trackOptionAddToWishlist": "Ajouter à la liste de souhaits", - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" - }, - "trackOptionRemoveFromWishlist": "Supprimer de la liste de souhaits", - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "collectionPlaylistChangeCover": "Changer l'image de couverture", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" - }, - "collectionPlaylistRemoveCover": "Supprimer l'image de couverture", - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, "selectionShareCount": "Partager {count} {count, plural, =1{titre} other{titres}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", @@ -3483,42 +98,102 @@ } } }, - "selectionShareNoFiles": "Aucun fichier partageable n'a été trouvé", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "selectionConvertCount": "Convertir {count} {count, plural, =1{titre} other{titres}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "Aucune piste convertible sélectionnée", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Conversion par lots", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "selectionBatchConvertConfirmMessage": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} avec un débit binaire de {bitrate} ?\n\nLes fichiers d'origine seront supprimés après la conversion.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "trackCoverReplace": "Remplacer la pochette", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, + "downloadAppleElrcWordSyncEnabled": "Conservation des horodatages bruts mot à mot", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "Titre", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "Partager les journaux", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "Installer l'extension", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "ReplayGain ajouté à {success} de {total} pistes", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "Réduire", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "Vérifiez votre connexion Internet", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "Aucune extension installée", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "Échec de la division CUE", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Sans perte", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Collez une URL prise en charge ou effectuez une recherche par nom", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "selectionBatchConvertConfirmMessageLossless": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} ? (Sans perte — aucune perte de qualité)\n\nLes fichiers d'origine seront supprimés après la conversion.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", @@ -3531,18 +206,297 @@ } } }, - "selectionBatchConvertProgress": "Conversion de {current} sur {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "Ce titre est peut-être encore disponible. Patientez quelques minutes, réduisez le nombre de téléchargements simultanés, puis réessayez.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Date de sortie (la plus ancienne)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "Créateur de « I Don't Have Spotify » (IDHS). Le résolveur de liens de secours qui sauve la mise !", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Lecture aléatoire activée", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "Couleur", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Cache des images de couverture", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Album CUE fractionné", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Effacé : {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "Illustration de couverture", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "Veuillez sélectionner un fichier .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Sortie sans perte avec une limite de {quality}", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Sélectionnez les playlists à télécharger", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Ajouter aux Artistes Favoris", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256 kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{count} titres issus de {albumCount} singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, + "optionsExtensionStore": "Référentiel d'extensions", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "{count} dans l'historique des téléchargements (exclu de la liste)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "Uniquement les singles et les EP", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "Intégration des métadonnées...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Qualité d'origine", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Paroles", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "Convertir {count} {count, plural, =1{titre} other{titres}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "Lecture aléatoire de la bibliothèque", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Illustration de couverture", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Accédez aux paroles, à des métadonnées enrichies et à bien d'autres fonctionnalités", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Ouvrir l'album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "La file d'attente est vide", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 piste téléchargée avec succès} other{{count} pistes téléchargées avec succès}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "Télécharger", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Chaîne Telegram", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonésie", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "Crochets de post-traitement", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Création d'une sauvegarde...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "Télécharger", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "Supprimer la sélection", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Choisir une pochette", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "{success} pistes sur {total} ont été converties au format {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3558,906 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} téléchargements", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "FLAC haute résolution Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stéréo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Créer un fichier de sauvegarde", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "Application", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "Informations sur {type} non disponibles", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Dossier nommé d'après la balise « Artiste de l'album »", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Dossier nommé d'après la balise « Artiste » de la piste", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "lyricsProvidersTitle": "Priorité au fournisseur de paroles", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" - }, - "lyricsProvidersDescription": "Activer, désactiver et réorganiser les sources de paroles. Les sources sont parcourues de haut en bas jusqu'à ce que les paroles soient trouvées.", - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "lyricsProvidersInfoText": "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": "Activé ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersDisabledSection": "Désactivés ({count})", - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersAtLeastOne": "Au moins un fournisseur doit rester activé", - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "lyricsProvidersSaved": "Priorité du fournisseur de paroles enregistrée", - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "lyricsProvidersDiscardContent": "Vous avez des modifications non enregistrées qui seront perdues.", - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "lyricsProviderLrclibDesc": "Base de données open source de paroles synchronisées", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (idéal pour les titres asiatiques)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "lyricsProviderMusixmatchDesc": "La plus grande base de données de paroles (multilingue)", - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "lyricsProviderAppleMusicDesc": "Paroles synchronisées mot à mot (via un proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "lyricsProviderQqMusicDesc": "QQ Music (idéal pour écouter des titres chinois, via un proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "lyricsProviderExtensionDesc": "Fournisseur d'extensions", - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "safMigrationTitle": "Mise à jour du stockage requise", - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "safMigrationMessage1": "SpotiFLAC utilise désormais le framework d'accès au stockage Android (SAF) pour les téléchargements. Cela permet de résoudre les erreurs « autorisation refusée » sur Android 10 et versions ultérieures.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "safMigrationMessage2": "Veuillez sélectionner à nouveau votre dossier de téléchargement pour passer au nouveau système de stockage.", - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "safMigrationSuccess": "Le dossier de téléchargement a été mis à jour en mode SAF", - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "settingsDonate": "Soutien au développement", - "@settingsDonate": { - "description": "Settings menu item - donate" - }, - "settingsDonateSubtitle": "Offrez un café au développeur", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "tooltipLoveAll": "Tout aimer", - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" - }, - "tooltipAddToPlaylist": "Ajouter à la playlist", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "snackbarRemovedTracksFromLoved": "{count} titres supprimés des Favoris", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedTracksToLoved": "{count} titres ajoutés aux Favoris", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogDownloadAllTitle": "Tout télécharger", - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "dialogDownloadAllMessage": "Télécharger {count} titres ?", - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "homeSkipAlreadyDownloaded": "Ignorer les morceaux déjà téléchargés", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "homeGoToAlbum": "Aller à l'album", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "homeAlbumInfoUnavailable": "Informations sur l'album non disponibles", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "snackbarLoadingCueSheet": "Chargement de la liste CUE...", - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "snackbarMetadataSaved": "Les métadonnées ont été enregistrées avec succès", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "snackbarFailedToEmbedLyrics": "Impossible d'intégrer les paroles", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "snackbarFailedToWriteStorage": "Échec de l'écriture sur le support de stockage", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "snackbarError": "Erreur : {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", - "placeholders": { - "error": { + "type": { "type": "String" } } }, - "snackbarNoActionDefined": "Aucune action n'est associée à ce bouton", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "Aucun morceau trouvé pour cet album", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "Thème", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "Choisissez l'emplacement où enregistrer vos morceaux téléchargés", - "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "storageModeAppFolder": "Dossier « Applications » (recommandé)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "storageModeAppFolderSubtitle": "Enregistrement par défaut dans le dossier « Musique/SpotiFLAC »", - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "storageModeSaf": "Dossier personnalisé (SAF)", - "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "storageModeSafSubtitle": "Choisissez n'importe quel dossier, y compris la carte SD", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadFilenameDescription": "Utilisez {artist}, {title}, {album}, {track}, {year}, {date} et {disc} comme variables de remplacement.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilenameInsertTag": "Appuyez pour insérer une balise :", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadSeparateSinglesEnabled": "Les singles et les EP sont enregistrés dans un dossier séparé", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadSeparateSinglesDisabled": "Les singles et les albums sont enregistrés dans le même dossier", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "downloadArtistNameFilters": "Filtres par nom d'artiste", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Dossier source de la playlist", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "Un sous-dossier est créé pour chaque playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "Tous les morceaux sont enregistrés directement dans le dossier de téléchargement", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Géré par les paramètres d'organisation des dossiers", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "Région SongLink", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Mode de compatibilité réseau", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Utilisation des paramètres TLS hérités pour les réseaux plus anciens", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Utilisation des paramètres réseau par défaut", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Activez d'abord l'intégration des métadonnées", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease : inclure la traduction", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Lignes de traduction en chinois incluses", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Paroles originales uniquement", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease : inclure la romanisation", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Lignes de romanisation incluses", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "Pas de romanisation", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ : Paroles pour plusieurs personnes", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Étiquettes d'intervenants incluses pour les duos et les morceaux en groupe", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Paroles standard sans indication du haut-parleur", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Langue Musixmatch", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (langue d'origine)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filtrer les artistes participants", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Les artistes ayant contribué à l'album ont été supprimés du nom du dossier « Artiste de l'album »", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Chaîne « Artiste » de l'album complet utilisée", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "Aucun fournisseur n'est activé", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Code de langue", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "par exemple : en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Saisissez un code de langue BCP-47 (par exemple : en, de, ja) pour demander les paroles traduites à Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Auto", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Utilisez le Wi-Fi ou les données mobiles", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Les téléchargements sont mis en pause lors de l'utilisation des données mobiles", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Région utilisée lors de la résolution des liens vers les morceaux via SongLink. Sélectionnez le pays dans lequel vos services de streaming sont disponibles.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the SongLink region picker" - }, - "snackbarUnsupportedAudioFormat": "Format audio non pris en charge", - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "cacheRefresh": "Actualiser", - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" - }, - "dialogDownloadPlaylistsMessage": "Télécharger {trackCount} {trackCount, plural, =1{titre} other{titres}} depuis {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}} ?", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "bulkDownloadPlaylistsButton": "Télécharger {count} {count, plural, =1{playlist} other{playlists}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "bulkDownloadSelectPlaylists": "Sélectionnez les playlists à télécharger", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "snackbarSelectedPlaylistsEmpty": "Les playlists sélectionnées ne contiennent aucun morceau", - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAutoFill": "Remplissage automatique en ligne", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "editMetadataAutoFillDesc": "Sélectionnez les champs à remplir automatiquement à partir des métadonnées en ligne", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "editMetadataAutoFillFetch": "Récupérer & remplir", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "editMetadataAutoFillSearching": "Recherche en ligne...", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "editMetadataAutoFillNoResults": "Aucune métadonnée correspondante n'a été trouvée en ligne", - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "editMetadataAutoFillDone": "{count} {count, plural, =1{champ} other{champs}} renseignés à partir des métadonnées en ligne", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAutoFillNoneSelected": "Sélectionnez au moins un champ pour le remplir automatiquement", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "editMetadataFieldTitle": "Titre", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "editMetadataFieldArtist": "Artiste", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "editMetadataFieldAlbum": "Album", - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "editMetadataFieldAlbumArtist": "Artiste de l'album", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "editMetadataFieldDate": "Date", - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "editMetadataFieldTrackNum": "Piste n°", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" - }, - "editMetadataFieldDiscNum": "Disque n°", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "editMetadataFieldGenre": "Genre", - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" - }, - "editMetadataFieldLabel": "Label", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "editMetadataFieldCopyright": "Droits d'auteur", - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" - }, - "editMetadataFieldCover": "Illustration de couverture", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "editMetadataSelectAll": "Tout", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" - }, - "editMetadataSelectEmpty": "Vide uniquement", - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "queueDownloadingCount": "Téléchargement ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueDownloadedHeader": "Téléchargé", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "queueFilteringIndicator": "Filtrage...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "queueTrackCount": "{count, plural, =1{1 titre} other{{count} titres}}", - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueEmptyAlbums": "Aucun album téléchargé", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "queueEmptyAlbumsSubtitle": "Téléchargez plusieurs titres d'un album pour les écouter ici", - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "queueEmptySingles": "Pas de téléchargement individuel", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "queueEmptySinglesSubtitle": "Les téléchargements de titres individuels apparaîtront ici", - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "queueEmptyHistory": "Aucun historique de téléchargement", - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "queueEmptyHistorySubtitle": "Les morceaux téléchargés apparaîtront ici", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "selectionAllPlaylistsSelected": "Toutes les playlists sélectionnées", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "selectionTapPlaylistsToSelect": "Appuyez sur les playlists pour les sélectionner", - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "selectionSelectPlaylistsToDelete": "Sélectionnez les playlists à supprimer", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "audioAnalysisTitle": "Analyse de la qualité audio", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "audioAnalysisDescription": "Vérifier la qualité sans perte à l'aide d'une analyse spectrale", - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "audioAnalysisAnalyzing": "Analyse audio en cours...", - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "audioAnalysisSampleRate": "Fréquence d'échantillonnage", - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "audioAnalysisBitDepth": "Nombre de bits", - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "audioAnalysisChannels": "Chaînes", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "audioAnalysisDuration": "Durée", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "audioAnalysisNyquist": "Nyquist", - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "audioAnalysisFileSize": "Taille", - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "audioAnalysisDynamicRange": "Plage dynamique", - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" - }, - "audioAnalysisPeak": "Pic", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "audioAnalysisSamples": "Échantillons", - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "audioAnalysisRescan": "Réanalyser", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "audioAnalysisRescanning": "Réanalyse du fichier audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Rechercher avec {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Fournisseur de flux RSS", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "extensionsHomeFeedDescription": "Choisissez l'extension qui affiche le fil d'actualité sur l'écran principal", - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "extensionsHomeFeedAuto": "Auto", - "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Sélectionnez automatiquement la meilleure option disponible", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "extensionsHomeFeedUse": "Utiliser le fil d'actualité de {extensionName}", - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "extensionsNoHomeFeedExtensions": "Aucune extension avec le flux principal", - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Annuler le téléchargement ?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "Cela annulera le téléchargement en cours de « {trackName} ».", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "« {trackName} » a été ajouté à la liste de souhaits", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Conserver", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "metadataSaveFailedFfmpeg": "Échec de l'enregistrement des métadonnées via FFmpeg", - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" - }, - "metadataSaveFailedStorage": "Échec de la réécriture des métadonnées sur le support de stockage", - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "snackbarFolderPickerFailed": "Impossible d'ouvrir le sélecteur de dossiers : {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", + "logAffectedDomains": "Concerne : {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Impossible de charger l'album", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Impossible de charger la playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "Aucun titre trouvé", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Impossible de charger l'artiste", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "Priorité accordée aux prestataires", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Progression du téléchargement", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Affiche la progression du téléchargement des morceaux", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Analyse de la bibliothèque", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Affiche la progression de la numérisation dans la bibliothèque locale", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Téléchargement de {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifFinalizingTrack": "Finalisation de {trackName}", - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifEmbeddingMetadata": "Intégration des métadonnées...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" - }, - "notifAlreadyInLibraryCount": "Déjà dans la bibliothèque ({completed}/{total})", - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifAlreadyInLibrary": "Déjà dans la bibliothèque", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" - }, - "notifDownloadCompleteCount": "Téléchargement terminé ({completed}/{total})", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifDownloadComplete": "Télécharger l'intégralité", - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "notifDownloadsFinished": "Téléchargements terminés ({completed} terminé, {failed} en échec)", - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "notifAllDownloadsComplete": "Tous les téléchargements sont terminés", - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 piste téléchargée avec succès} other{{count} pistes téléchargées avec succès}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifScanningLibrary": "Numérisation de la bibliothèque locale", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" - }, - "notifLibraryScanProgressWithTotal": "{scanned}/{total} fichiers • {percentage} %", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "notifLibraryScanProgressNoTotal": "{scanned} fichiers analysés • {percentage} %", - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "notifLibraryScanComplete": "Analyse de la bibliothèque terminée", - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" - }, - "notifLibraryScanCompleteBody": "{count} titres indexés", - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanExcluded": "{count} exclus", - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanErrors": "{count} erreurs", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanFailed": "Échec de l'analyse de la bibliothèque", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "notifLibraryScanCancelled": "Annulation de la numérisation de la bibliothèque", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" - }, - "notifLibraryScanStopped": "L'analyse a été interrompue avant d'être terminée.", - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "notifDownloadingUpdate": "Télécharger SpotiFLAC v{version}", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} Mo • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "Supprimer de l'appareil ?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "Aucun fournisseur n'est activé", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artiste", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Choisissez n'importe quel dossier, y compris la carte SD", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4472,132 +653,514 @@ } } }, - "notifUpdateReady": "Prêt pour la mise à jour", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Les noms des artistes mis en avant ont été supprimés du nom du dossier (par exemple : Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC v{version} a été téléchargé. Appuyez pour l'installer.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Numérisation de la bibliothèque locale", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "notifUpdateFailed": "Échec de la mise à jour", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" - }, - "notifUpdateFailedBody": "Impossible de télécharger la mise à jour. Veuillez réessayer plus tard.", - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "settingsFiles": "Fichiers & Dossiers", - "@settingsFiles": { - "description": "Settings menu item - file and folder settings" - }, - "settingsFilesSubtitle": "Emplacement de téléchargement, nom de fichier, structure des dossiers", - "@settingsFilesSubtitle": { - "description": "Subtitle for files & folders settings" - }, - "settingsMetadata": "Métadonnées", - "@settingsMetadata": { - "description": "Settings menu item - metadata settings" - }, - "settingsMetadataSubtitle": "Pochettes, balises, ReplayGain, fournisseurs", - "@settingsMetadataSubtitle": { - "description": "Subtitle for metadata settings" - }, - "settingsLyrics": "Paroles", - "@settingsLyrics": { - "description": "Settings menu item - lyrics settings" - }, - "settingsLyricsSubtitle": "Intégration, mode, fournisseurs, options linguistiques", - "@settingsLyricsSubtitle": { - "description": "Subtitle for lyrics settings" - }, - "settingsApp": "Application", - "@settingsApp": { - "description": "Settings menu item - app settings" - }, - "settingsAppSubtitle": "Mises à jour, données, dépôt d'extension, débogage", - "@settingsAppSubtitle": { - "description": "Subtitle for app settings" - }, - "sectionMetadataProviders": "Fournisseurs", - "@sectionMetadataProviders": { - "description": "Settings section header for metadata providers" - }, - "sectionDuplicates": "Doublons", - "@sectionDuplicates": { - "description": "Settings section header for deduplication" - }, - "sectionLyricsProviderOptions": "Options du fournisseur", - "@sectionLyricsProviderOptions": { - "description": "Settings section header for per-provider lyrics options" - }, - "metadataProvidersTitle": "Priorité des fournisseurs de métadonnées", - "@metadataProvidersTitle": { - "description": "Settings item title for metadata provider order" - }, - "metadataProvidersSubtitle": "Faites glisser pour définir l'ordre des sources de recherche et de métadonnées", "@metadataProvidersSubtitle": { "description": "Subtitle for metadata provider priority item" }, - "downloadDeduplication": "Éviter les téléchargements en double", - "@downloadDeduplication": { - "description": "Setting - skip tracks already in download history" + "setupGetStarted": "Démarrer", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Les morceaux déjà téléchargés seront ignorés", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16 bits)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "Tous les morceaux seront téléchargés, quel que soit l'historique", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "Mise en page", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Extensions de secours", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Choisissez les extensions pouvant servir de solution de secours", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" + "queueFinalizingDownload": "Téléchargement en cours", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" }, - "homeEmptyTitle": "Aucun moteur de recherche pour le moment", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Installez une extension pour continuer.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choisir la langue", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Sélectionnez la langue de votre choix pour l'application. Vous pourrez la modifier ultérieurement dans les Paramètres.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "Paramètres par défaut du système", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Essayez un autre mot-clé", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source : {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "source": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "extensionsMetadataPriority": "Priorité des métadonnées", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "updateCurrent": "Actuel", + "@updateCurrent": { + "description": "Label for current version" + }, + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "Cette opération remplacera vos paramètres actuels, votre historique de téléchargements, vos titres favoris, votre liste de souhaits et vos listes de lecture par le contenu de la sauvegarde. Cette opération est irréversible.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (idéal pour les titres asiatiques)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "Vous pouvez relancer l'analyse dès que vous êtes prêt.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "Supprimer {count} {count, plural, =1{titre} other{titres}} de l'historique ?\n\nCela supprimera également les fichiers du stockage.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrich": "Réenrichir", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "Accès au stockage requis", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "Un sous-dossier est créé pour chaque playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Êtes-vous sûr de vouloir effacer tout l'historique des téléchargements ? Cette action ne peut pas être annulée.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Les artistes ayant contribué à l'album ont été supprimés du nom du dossier « Artiste de l'album »", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Il y a quelques instants", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Nettoyage des téléchargements orphelins", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Artistes Favoris", + "audioAnalysisRescanning": "Réanalyse du fichier audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Playlists", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "Journaux", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "Le talentueux artiste qui a créé le magnifique logo de notre application !", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "Aperçu", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} supprimées", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "Analyser le niveau sonore et créer des balises ReplayGain", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "Accueil", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "Version minimale de l'application", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} favoris {count, plural, one {}=1{titre} other{titres}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 téléchargement annulé par l'utilisateur} other{{count} téléchargements annulés par l'utilisateur}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Conversion de {current} sur {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Aperçu indisponible", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "Identifiant client : {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Lecteur", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Jamais", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "Numéro de piste", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Analyse du volume sonore...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320 kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Dossier source de la playlist", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "Contributeurs", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Stockage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "Discutez avec d'autres utilisateurs", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "Toutes les playlists sélectionnées", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Recherche d'identifiant de titre sur Spotify/Deezer. La suppression des données peut ralentir les prochaines recherches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "Il n'y a encore rien à sauvegarder", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Lien non reconnu", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Synchronisation des paroles Apple Music eLRC", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Lignes de traduction en chinois incluses", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Appuyez sur les morceaux que vous aimez pour les ajouter à vos favoris", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "Pas de limite de débit", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Les métadonnées ont été réenrichies avec succès ({successCount}/{total}) - Échec : {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Label manquant", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "Métadonnées", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Supprimer des Favoris", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Impossible de charger l'album", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Garder Android ouvert", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "Coller l'identifiant client", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "Rechercher dans la source", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "Accès à tous les fichiers", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, "extensionsInstalledCount": "{count} extensions ont été installées avec succès", "@extensionsInstalledCount": { "description": "Success message after installing multiple extensions", @@ -4608,6 +1171,3228 @@ } } }, + "snackbarFailedToEmbedLyrics": "Impossible d'intégrer les paroles", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Débit limité", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Téléchargements annulés", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "J'ai téléchargé les pochettes de l'album et des titres. Je les téléchargerai à nouveau lors de leur consultation.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "Tout effacer", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Nom complet de l'artiste utilisé pour le nom du dossier", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restaurer la sauvegarde", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Supprimer du dossier", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "Métadonnées", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copier le lien", + "errorRateLimitedMessage": "Trop de requêtes. Veuillez patienter quelques instants avant de relancer la recherche.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "Fichier introuvable", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer n'impose aucune limite de débit et est recommandé comme service principal. Spotify peut limiter le débit après un certain nombre de requêtes.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "Code source pour PC", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Remplissage automatique en ligne", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "Supprimé {count} {count, plural, =1{titre} other{titres}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Base de données open source de paroles synchronisées", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Saisissez un code de langue BCP-47 (par exemple : en, de, ja) pour demander les paroles traduites à Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320 kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "L'URL de {platform} a été copiée dans le presse-papiers", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "Créateur de QQDL et de l'API HiFi. Ce projet a contribué à mettre en place la prise en charge des téléchargements sans perte.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Récupération de {current} sur {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Défilement automatique activé", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "Service", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "{count} titres ont été ajoutés à la file d'attente", + "cueSplitTrackCount": "{count} titres", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Importer une playlist", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Bibliothèque locale", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copier les journaux", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Les téléchargements sont mis en pause lors de l'utilisation des données mobiles", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Date de sortie (la plus récente)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "Tous les morceaux seront téléchargés, quel que soit l'historique", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Lire dans l'ordre", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "Singles & EPs", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Solution de secours pour les extensions", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Playlist : {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Album : {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "Journalisation détaillée", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "Taille minimale : environ 4 Mo par piste", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Actions", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "Aucun dossier n'est sélectionné. Souhaitez-vous utiliser le dossier Musique par défaut ?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "par exemple : en, de, ja", + "trackSaveFailed": "Échec : {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Ajouter ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Consultez l'onglet « Dépôt » pour découvrir des extensions utiles", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Les fournisseurs d'extensions sont requis", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Paroles synchronisées mot à mot (via un proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "Options", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "Échec du téléchargement de la mise à jour", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Utilisation estimée du cache : {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "Réessayer", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Appuyez sur n'importe quel morceau pour l'écouter avec votre lecteur de musique", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service hors ligne", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "Désélectionner", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "Prise en charge : URL de titres, d’albums, de playlists et d’artistes", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Supprimer des Artistes Favoris", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "La playlist est vide", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Le plus récent", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Arrêter", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "Tous les fichiers du dossier « Téléchargements »", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "Albums", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Impossible de lire aléatoirement la bibliothèque : {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Doublons", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "La pochette sélectionnée remplacera la pochette actuellement intégrée lorsque vous appuierez sur « Enregistrer ».", + "cacheSectionMaintenance": "Entretien", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Convertir {count} {count, plural, =1{titre} other{titres}} au format {format} avec un débit binaire de {bitrate} ?\n\nLes fichiers d'origine seront supprimés après la conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24 bits / jusqu'à 192 kHz", + "snackbarRemovedTracksFromLoved": "{count} titres supprimés des Favoris", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "Artiste/Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "Impossible d'ouvrir le fichier : {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "Obligatoire - appuyez pour configurer", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "Les paroles de ce morceau ne sont pas disponibles", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "Utilitaire", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Ajouté à « {playlistName} »", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Vider le cache ?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Année] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Stockage & Cache", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "Aucune extension avec fournisseur de métadonnées", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Titre (Z-A)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Analyse de la qualité audio", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16 bits / 44,1 kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Finalisation de la bibliothèque...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Allemagne", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Récupération automatique", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Fichiers & Dossiers", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "Développeur de la version mobile", + "errorCouldNotKeepFolderAccess": "Impossible de conserver l'accès au dossier sélectionné", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Ignorer les morceaux déjà téléchargés", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "Désinstaller", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Supprimer la playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Pochette en ligne", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "Télécharger", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "Artistes", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "Gestionnaire d'URL", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Avancé", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{il y a 1 minute} other{il y a {count} minutes}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "Paramètres par défaut du système", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} entrées", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "Définissez l'ordre des sources de recherche et de métadonnées", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Sélectionnez les pistes à supprimer", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Modifier l'emplacement de téléchargement et l'organisation des dossiers", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Réservé aux dossiers multimédias uniquement", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "Télécharger", + "settingsFilesSubtitle": "Emplacement de téléchargement, nom de fichier, structure des dossiers", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Faites glisser pour définir l'ordre des sources de recherche et de métadonnées", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "Sélectionnez les titres à supprimer", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Ouvrir le navigateur", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "Royaume-Uni", + "dialogCancel": "Annuler", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "Activer les notifications", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "Auteur", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "Format des noms de fichiers", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "Historique de recherche...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Fichiers temporaires liés aux téléchargements et à la conversion audio.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "Intégrer les paroles", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "Coller la clé secrète du client", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "Historique effacé", + "downloadNetworkCompatibilityModeDisabled": "Utilisation des paramètres réseau par défaut", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "Fournisseur de paroles", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "Tous", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Trouver de la musique", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Ouvrir dans Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Téléchargé", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Impossible de récupérer certains albums", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 titre} other{{count} titres}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Service permettant d'effectuer une recherche par titre de morceau ou d'album", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Téléchargement ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "Dans l'application", + "trackAudioQuality": "Qualité audio", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "{count} fichiers manquants ont été supprimés de la bibliothèque", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "Pas encore d'artistes préférés", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "{count} titres ajoutés aux Favoris", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "Cela annulera le téléchargement en cours de « {trackName} ».", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "Afficher la taille et vider le cache", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} titres indexés", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Sélectionner des albums...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Recherchez des métadonnées musicales, gérez les extensions et organisez votre bibliothèque.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "Correspondance personnalisée des pistes", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "Fonctionnalités", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Récupérez et enregistrez les paroles sous forme de fichier .lrc", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Trop de requêtes adressées au service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Format avec perte à 320 kbps", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Pochettes, balises, ReplayGain, fournisseurs", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Rechercher des métadonnées en ligne et les intégrer dans un fichier", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Il n'y a rien à l'écran", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Télécharger de la musique, c'est simple et rapide. Voici comment ça marche.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Supprimer « {playlistName} » et tous les morceaux qu'elle contient ?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Métadonnées réenrichies avec succès", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} historique {count, plural, one {}=1{élément} other{éléments}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "Ajout de « {trackName} » à la file d'attente", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "À chaque ouverture de l'application", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Chaînes", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "Liste", + "updateDownloadInstall": "Télécharger & Installer", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Désactivé", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Titre (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" supprimé des Favoris", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "Qualité audio", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Conversion vers {format} réussie", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "Êtes-vous sûr de vouloir supprimer {extensionName} ?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Service worker Android en version bêta pour le téléchargement d'extensions", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "Mettre à jour", + "libraryFilterMetadataMissingAny": "Métadonnées manquantes", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Sélectionnez les champs à remplir automatiquement à partir des métadonnées en ligne", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "Région SongLink", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "Aucun autre service compatible", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Recherchez en ligne les correspondances pour les morceaux sélectionnés et ajoutez les téléchargements FLAC à la file d'attente.\n\nLes fichiers existants ne seront ni modifiés ni supprimés.\n\nSeules les correspondances hautement fiables sont automatiquement ajoutées à la file d'attente.\n\n{count} sélectionnés", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Ajouter à la playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "Autorisations", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "Annonces et mises à jour", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "Priorité des fournisseurs de métadonnées", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "Ajouter à la file d'attente", + "audioAnalysisDecodedFormat": "Format décodé", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "Déjà présent dans « {playlistName} »", + "discographyAlbumsOnlySubtitle": "{count} titres issus de {albumCount} albums", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "Activer les notifications", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "Thème, couleurs, affichage", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Lecteur de prévisualisation intégré", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "Lecture", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Analyse votre bibliothèque musicale existante pour détecter les doublons lors du téléchargement. Prend en charge les formats FLAC, M4A, MP3, Opus et OGG. Les métadonnées sont extraites des balises des fichiers lorsqu'elles sont disponibles.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "Demander avant de télécharger", + "nowPlayingNoMetadata": "Aucune métadonnée disponible", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "Morceau instrumental", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convertir {count} {count, plural, =1{titre} other{titres}} en {format} ({quality}) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d'échantillonnage seront limitées. Les fichiers d'origine seront supprimés après la conversion.", + "downloadDeduplication": "Éviter les téléchargements en double", + "libraryFilterSortOldest": "Le plus ancien", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "Ignorer pour le moment", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "Nouvelle URL du dépôt", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "Cette opération effacera les données mises en cache pour {target}. Les fichiers musicaux téléchargés ne seront pas supprimés.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "Lire", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "Chaîne de mise à jour", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Redémarrez l'application pour vous assurer que toutes les modifications ont bien été prises en compte.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "Enregistrez automatiquement les téléchargements ayant échoué dans un fichier TXT", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Artiste (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Artiste de l'album", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "Aucun résultat pertinent n'a été trouvé en ligne pour cette sélection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Ouvrir dans Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "Sélectionnez iCloud ou un autre emplacement", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} auditeurs mensuels", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Données mises en cache", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "Téléchargement terminé", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "Les singles et les EP sont enregistrés dans un dossier séparé", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "Dossier « Documents » de l'application", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "Échec du chargement du dépôt", + "settingsDownloadNetwork": "Réseau de téléchargement", + "metadataSaveFailedStorage": "Échec de la réécriture des métadonnées sur le support de stockage", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Valeur unique combinée", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Titres", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Artiste (Z-A)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Hésitation", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Service, qualité, solution de secours", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Dernière analyse : {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "Limitation iOS : les dossiers vides ne peuvent pas être sélectionnés. Choisissez un dossier contenant au moins un fichier.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "Nouveau", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "Gérez les fournisseurs de téléchargement", + "sortAlphaAsc": "A-Z", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Tout sélectionner", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "Albums/Nom de l'artiste/[2005] Nom de l'album/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{élément} other{éléments}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Chargement des pistes...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "Aucun album téléchargé", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "Erreur", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, one {}=1{1 artiste préféré} other{{count} artistes préférés}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Activé ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Téléchargement de {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "Date de sortie", + "discographySelectedCount": "{count} sélectionnés", + "collectionArtistCount": "{count, plural, =1{1 artiste} other{{count} artistes}}", + "logIssueNetworkErrorLabel": "ERREUR DE RÉSEAU", + "updateStartingDownload": "Début du téléchargement...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "Numéro de disque", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "Utilisation de l'extension : {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Désactiver l'historique des téléchargements ?", + "tutorialWelcomeTip3": "Intégration automatique des métadonnées, des pochettes d'album et des paroles", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BÊTA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "Aucune entrée orpheline n'a été trouvée", + "discographySkippedDownloaded": "{added} ajouté, {skipped} déjà téléchargé", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Priorité au fournisseur de paroles", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Erreur : {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "Vous avez des modifications non enregistrées qui seront perdues.", + "previewStop": "Arrêter l'aperçu", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Convertir de {sourceFormat} vers {targetFormat} ? (Sans perte — aucune perte de qualité)\n\nLe fichier d'origine sera supprimé après la conversion.", + "discographyAlbumsOnly": "Albums uniquement", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Choisissez les extensions de téléchargement installées qui peuvent servir de solution de secours", + "aboutSocial": "Réseaux sociaux", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Pochette choisie", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Les morceaux déjà téléchargés seront ignorés", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "Aucun moteur de recherche pour le moment", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "Installé", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "Ajout des balises ReplayGain", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Afficher lors de la recherche de pistes existantes", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "Télécharger", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "Impossible de charger les paroles", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "Autorisation refusée. Veuillez accorder toutes les autorisations pour continuer.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "Wi-Fi uniquement", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} a été mis à jour.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Installez une extension pour continuer.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Télécharger de la musique", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Titre inconnu", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Fichier de secours, métadonnées, paroles, pochette", + "navLibrary": "Bibliothèque", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "Tout", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "Aucune extension disponible", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "La version préliminaire peut contenir des bogues ou des fonctionnalités incomplètes", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Analyse de la bibliothèque terminée", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Collez une URL valide ou effectuez une recherche...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "Installez les fichiers .spotiflac-ext pour ajouter de nouveaux fournisseurs", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restaurer cette sauvegarde ?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "Remerciements particuliers", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "Installer", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "Albums", + "extensionCustomUrlHandlingSubtitle": "Cette extension prend en charge les liens provenant de ces sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Activer les balises de formatage pour le remplissage des pistes et les formats de date", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "Entrées ({count} résultats filtrés)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Ajouter un dépôt", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "Signaler un problème", + "snackbarFailedToWriteStorage": "Échec de l'écriture sur le support de stockage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Dossier non valide sélectionné", + "allFilesAccessDisabledMessage": "L'accès à tous les fichiers est désactivé. L'application disposera d'un accès limité au stockage.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Code de langue", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "Vous avez des modifications non enregistrées. Voulez-vous les ignorer ?", + "setupChooseFromFiles": "Sélectionnez un fichier", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Choisissez le format de sortie pour les téléchargements avec perte à 320 kbps. Le flux d'origine sera converti au format que vous aurez sélectionné lorsque cela sera nécessaire.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "« {trackName} » a été supprimé de la liste de souhaits", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "L'extension a été installée avec succès", + "progressReadingCsv": "Lecture du fichier CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Sorties", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Navigateur de vérification", + "extensionDefaultProvider": "Recherche par défaut", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Indiquez une seule valeur ARTIST, par exemple « Artiste A, Artiste B », pour garantir une compatibilité maximale avec les lecteurs.", + "downloadLossy320": "Compression avec perte à 320 kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "File d'attente FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Options du fournisseur", + "nowPlayingTitle": "En cours de lecture", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Désélectionner la piste", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "Aucun historique de téléchargement", + "optionsTitle": "Options", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "Effacer", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "Activez cette option si vous rencontrez des erreurs d'écriture lors de l'enregistrement dans des dossiers personnalisés. À partir d'Android 13, l'accès à certains répertoires est restreint par défaut.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "Confirmer la conversion", + "storeCategoryLyrics": "Paroles", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "Playlist supprimée", + "metadataMayRateLimit": "Limite de taux de métadonnées", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "Tout aimer", + "downloadDirectory": "Répertoire de téléchargement", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "Dossier de bibliothèque", + "optionsMaxQualityCoverSubtitle": "Télécharger la pochette en haute résolution", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "Contenu de l'onglet « Explorer » (nouvelles sorties, tendances). Se mettra à jour lors de votre prochaine visite.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "Écouter le morceau {trackName} de {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "Impossible d'ouvrir le lien. Veuillez réessayer.", + "collectionNoPlaylistsSubtitle": "Créez une playlist pour commencer à classer vos morceaux", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Débit binaire", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Taille", + "extensionHealthServiceOnline": "Service en ligne", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "Entrées ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Convertir du format {sourceFormat} au format {targetFormat} avec un débit binaire de {bitrate} ?\n\nLe fichier d'origine sera supprimé après la conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "Par album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Lecture", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "Application", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Désactivé : aucune balise de normalisation du volume", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Intégration, mode, fournisseurs, options linguistiques", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "BLOCAGE PAR LE FAI DÉTECTÉ", + "storeFilterIntegration": "Intégration", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "Téléchargé", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile n'a pas pu ouvrir automatiquement le navigateur. Ouvrez ce lien dans votre navigateur ou copiez-le manuellement.", + "setupDownloadLocationIosMessage": "Sous iOS, les fichiers téléchargés sont enregistrés dans le dossier « Documents » de l'application. Vous pouvez y accéder via l'application Fichiers.", + "optionsArtistTagModeDescription": "Choisissez comment les noms de plusieurs artistes doivent apparaître dans les balises intégrées.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "Titres", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "Paramètres du fichier", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Limite spectrale", + "dialogDelete": "Supprimer", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "Toute votre musique téléchargée est classée dans l'onglet « Bibliothèque ».", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "Identifiants enregistrés", + "cacheCleanupResult": "Nettoyage terminé : {downloadCount} téléchargements orphelins, {libraryCount} entrées de bibliothèque manquantes", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Conversion sans perte — aucune perte de qualité", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Renommer la playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Nombre total d'erreurs : {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Sélectionnez automatiquement la meilleure option disponible", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Sélectionnez la langue de votre choix pour l'application. Vous pourrez la modifier ultérieurement dans les Paramètres.", + "settingsBackupSubtitle": "Transférer votre bibliothèque, votre historique et vos paramètres vers un nouvel appareil", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Artiste", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Appuyez longuement sur le bouton « + » sur n'importe quel morceau pour l'ajouter ici", + "artistCompilations": "Compilations", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Impossible d'ouvrir le sélecteur de dossiers : {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Analyse de la bibliothèque", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Enregistrer l'historique des téléchargements", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "Ouvrir {title}, {count} {count, plural, =1{item} other{éléments}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "Informations sur le fichier", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Artiste d'album manquant", + "audioAnalysisNoClipping": "Pas de coupure", + "tutorialSettingsDesc": "Personnalisez l'application dans les Paramètres en fonction de vos préférences.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "Fichier .lrc distinct pour les lecteurs tels que Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Utiliser la recherche par métadonnées par défaut", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "Charger les paroles", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "La vérification est toujours en attente", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Réinitialiser", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Répertoire des extensions", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Bibliothèque vidée", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Téléchargement terminé", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Bibliothèque locale", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "Tous les titres sélectionnés", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, one {}=1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Vider la bibliothèque", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "Tout effacer", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "par {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Élargissez les fonctionnalités de l'application grâce aux extensions de la communauté.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "Lecteur externe", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Genre", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "Par playlist", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 titre} other{{count} titres}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "Aucun", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Enregistrer la pochette", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "Au moins un fournisseur doit rester activé", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "Utiliser les paramètres par défaut", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Les journaux s'afficheront ici au fur et à mesure que vous utiliserez l'application", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Enregistrement des paroles...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "La pochette a été enregistrée sous le nom {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Paroles", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Désactiver et effacer", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{vérification} other{vérifications}} configurées", + "cleanupOrphanedDownloadsSubtitle": "Supprimez les entrées de l'historique correspondant aux fichiers qui n'existent plus", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Progression du téléchargement", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "Paroles", + "libraryAutoScan": "Analyse automatique", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC utilise désormais le framework d'accès au stockage Android (SAF) pour les téléchargements. Cela permet de résoudre les erreurs « autorisation refusée » sur Android 10 et versions ultérieures.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "Autorisation de stockage requise", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "Grille", + "trackConvertConverting": "Conversion audio en cours...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "Créez une balise « artiste » par artiste pour les fichiers FLAC et Opus ; les fichiers MP3 et M4A restent regroupés.", + "snackbarPlayingNext": "Prochainement", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Choisissez l'onglet qui s'ouvre en premier pour les nouveaux résultats de recherche.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "Il existe deux façons simples de trouver la musique que vous souhaitez télécharger.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} Mo • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "Cette opération effacera toutes les catégories mises en cache sur cette page. Les fichiers musicaux téléchargés ne seront pas supprimés.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Fournisseur de flux RSS", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Album inconnu", + "trackCoverCurrent": "Pochette actuelle", + "downloadSongLinkRegionDesc": "Région utilisée lors de la résolution des liens vers les morceaux via SongLink. Sélectionnez le pays dans lequel vos services de streaming sont disponibles.", + "downloadPrimaryArtistOnlyOff": "Primaire uniquement : Désactivé", + "dialogDone": "C'est fait", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "URL du dépôt", + "downloadSelectServiceToEnable": "Choisissez un fournisseur proposant des options de qualité pour activer cette fonctionnalité", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress} % des {total} fichiers", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Le dossier « Favoris » est vide", + "tutorialExtensionsTitle": "Extensions", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Durée (la plus courte)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "Copier le chemin d'accès au fichier", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artiste/Album/ et Artiste/titre.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Piste n°", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "Échec de la mise à jour de l'extension", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Déjà dans la bibliothèque", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Nom de la playlist", + "extensionVerificationCopyLink": "Copier le lien", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Choisir la langue", + "extensionId": "Identifiant", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brésil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "La fonction de recherche Spotify sera supprimée le 3 mars 2026 en raison de modifications apportées à l'API Spotify. Veuillez passer à Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC a besoin d'un accès au stockage pour analyser votre bibliothèque musicale. Veuillez lui accorder l'autorisation dans les paramètres.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Êtes-vous sûr de vouloir supprimer cette extension ? Cette action ne peut pas être annulée.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "Emplacement de téléchargement", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Utilisation des paramètres TLS hérités pour les réseaux plus anciens", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Ajouter aux Favoris", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "Répertoire de cache de l'application", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "La plus grande base de données de paroles (multilingue)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "Post-traitement", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "Journaux copiés dans le presse-papiers", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Recherche d'artiste...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "Utiliser le dossier par défaut ?", + "tutorialSearchHint": "Collez ou effectuez une recherche...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Langue Musixmatch", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "Fichier .lrc externe", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "Recherche dans les journaux...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "Identifiant client", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "requis", + "actionCancel": "Annuler", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Désactivé (avancé) : ignorer l'intégration de toutes les métadonnées", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Les adresses locales/privées sont bloquées pour des raisons de sécurité", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Format de nom de fichier unique", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "La suppression du cache n'entraînera pas la suppression des fichiers musicaux téléchargés.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Format ISRC incorrect", + "libraryFilterMetadataMissingTrackNumber": "Numéro de piste manquant", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Les jetons et les clés API des extensions seront enregistrés dans le fichier de sauvegarde. Veillez à ne pas divulguer ce fichier. Si l'extension est désactivée, vous devrez les saisir à nouveau après la restauration.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Statistiques par chaîne", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "Pas de téléchargement individuel", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Télécharger des morceaux Spotify au format FLAC", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "Supprimer de l'appareil", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Présentation du cache", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "par exemple : https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Mise à jour du stockage requise", + "snackbarMetadataSaved": "Les métadonnées ont été enregistrées avec succès", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "Effacer les journaux", + "extensionsCustomSearch": "Recherche personnalisée", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} dans {count} fichiers", + "actionRemoveCredentials": "Supprimer les identifiants", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "Aucun fichier partageable n'a été trouvé", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "{count} titres ont été ajoutés à la file d'attente", + "downloadFilenameInsertTag": "Appuyez pour insérer une balise :", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "« {artistName} » a été supprimé de vos artistes favoris", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Téléchargement - {speed} Mo/s", + "backupRestoreConfirmButton": "Restaurer", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Échec de la création de la sauvegarde", + "notifLibraryScanFailed": "Échec de l'analyse de la bibliothèque", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Réanalyser", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Choisissez un fournisseur proposant différentes options pour sélectionner la qualité audio", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{fichier} other{fichiers}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Sélectionnez d'abord un dossier", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Non configuré", + "queueRetryAllFailed": "{count} tentatives ont échoué", + "folderOrganizationByPlaylistSubtitle": "Un dossier distinct pour chaque playlist", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Fournisseur d'extensions", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Convertir un fichier audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "Ignorer pour le moment", + "sectionDownload": "Télécharger", + "downloadLossyOpus256Subtitle": "Opus en qualité optimale, environ 8 Mo par piste", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Nécessite la version v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de métadonnées. L'application testera les fournisseurs dans l'ordre de haut en bas lors de la recherche de morceaux et de la récupération des métadonnées.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "Les extensions permettent d'ajouter de nouvelles métadonnées et de nouveaux fournisseurs de téléchargement. N'installez que des extensions provenant de sources fiables.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Année manquante", + "extensionsDownloadPriority": "Priorité de téléchargement", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Analyse de la bibliothèque", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "Échec du téléchargement", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "Fond noir pur", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Affiche la progression du téléchargement des morceaux", + "setupIcloudNotSupported": "iCloud Drive n'est pas pris en charge. Veuillez utiliser le dossier « Documents » de l'application.", + "trackLyricsEmbeddedSource": "Intégré", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, "extensionsInstallPartialSuccess": "{installed} extensions sur {attempted}", "@extensionsInstallPartialSuccess": { "description": "Message when installing multiple extensions partially succeeds", @@ -4622,155 +4407,99 @@ } } }, - "downloadLossyAac": "AAC/M4A 320 kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Compatibilité optimale avec les appareils mobiles, format M4A", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Artistes Favoris", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artiste} other{{count} artistes}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", "placeholders": { "count": { "type": "int" } } }, - "collectionFavoriteArtistsEmptyTitle": "Pas encore d'artistes préférés", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "notifLibraryScanCancelled": "Annulation de la numérisation de la bibliothèque", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" }, - "collectionFavoriteArtistsEmptySubtitle": "Appuyez sur le cœur sur la page d'un artiste pour le garder ici", - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" + "collectionPlaylistNameRequired": "Le nom de la playlist est requis", + "libraryCleanupMissingFiles": "Nettoyage des fichiers manquants", + "storeCategoryUtility": "Utilitaire", + "@storeCategoryUtility": { + "description": "Store extension category - utility" }, - "collectionAddedToFavoriteArtists": "« {artistName} » a été ajouté à vos artistes préférés", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "collectionRemovedFromFavoriteArtists": "« {artistName} » a été supprimé de vos artistes favoris", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", - "placeholders": { - "artistName": { - "type": "String" - } - } - }, - "artistOptionAddToFavorites": "Ajouter aux Artistes Favoris", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" - }, - "artistOptionRemoveFromFavorites": "Supprimer des Artistes Favoris", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" - }, - "downloadAppleElrcWordSync": "Synchronisation des paroles Apple Music eLRC", - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" - }, - "downloadAppleElrcWordSyncEnabled": "Conservation des horodatages bruts mot à mot", - "@downloadAppleElrcWordSyncEnabled": { - "description": "Subtitle when Apple Music eLRC word sync is enabled" - }, - "downloadAppleElrcWordSyncDisabled": "Paroles d'Apple Music, ligne par ligne, en toute sécurité", - "@downloadAppleElrcWordSyncDisabled": { - "description": "Subtitle when Apple Music eLRC word sync is disabled" - }, - "audioAnalysisCodec": "Codec", - "@audioAnalysisCodec": { - "description": "Audio codec metric label" - }, - "audioAnalysisContainer": "Conteneur", - "@audioAnalysisContainer": { - "description": "Audio container metric label" - }, - "audioAnalysisDecodedFormat": "Format décodé", - "@audioAnalysisDecodedFormat": { - "description": "Decoded sample format metric label" + "searchSortTitle": "Trier les résultats", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" }, "audioAnalysisLufs": "LUFS", - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" + "extensionsErrorLoading": "Erreur lors du chargement de l'extension", + "@actionPaste": { + "description": "Generic action - paste from clipboard" }, - "audioAnalysisClipping": "Coupure", - "@audioAnalysisClipping": { - "description": "Clipping metric label" + "aboutFeatureRequestSubtitle": "Proposez de nouvelles fonctionnalités pour l'application", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" }, - "audioAnalysisNoClipping": "Pas de coupure", - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" + "@aboutTitle": { + "description": "About page title" }, - "audioAnalysisSpectralCutoff": "Limite spectrale", - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" }, - "audioAnalysisChannelStats": "Statistiques par chaîne", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" + "@actionGo": { + "description": "Generic action button label" }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "Mis à jour", + "@extensionUpdated": { + "description": "Extension detail - last update" }, - "extensionsHomeFeedOffSubtitle": "Ne pas afficher le fil d'actualité sur l'écran principal", - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" + "downloadLossyFormat": "Format avec perte", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" }, - "notifDownloadsFinishedBody": "{completed, plural, =1{1 titre téléchargé} other{{completed} titres téléchargés}}, {failed, plural, =1{1 échec} other{{failed} échecs}}", - "@notifDownloadsFinishedBody": { - "description": "Notification body when queue finishes with failures", + "snackbarAlreadyInLibrary": "« {trackName} » existe déjà dans votre bibliothèque", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" + "trackName": { + "type": "String" } } }, - "notifDownloadsCanceledTitle": "Téléchargements annulés", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" + "libraryExternalPlayerSubtitle": "Recommandé pour l'écoute, la meilleure qualité, la lecture en continu, l'égaliseur et la prise en charge d'un plus grand nombre de formats", + "extensionCustomUrlHandlingShareHint": "Partagez des liens provenant de ces sites vers SpotiFLAC Mobile et cette extension s'en chargera.", + "libraryFilterQuality": "Qualité", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" }, - "notifDownloadsCanceledBody": "{count, plural, =1{1 téléchargement annulé par l'utilisateur} other{{count} téléchargements annulés par l'utilisateur}}", - "@notifDownloadsCanceledBody": { - "description": "Notification body when downloads are canceled by the user", + "editMetadataAutoFillDone": "{count} {count, plural, =1{champ} other{champs}} renseignés à partir des métadonnées en ligne", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", "placeholders": { "count": { "type": "int" } } }, - "searchTracks": "Titres", - "@searchTracks": { - "description": "Search filter label - tracks" + "@discographyDownload": { + "description": "Button - download artist discography" }, - "homeSearchHintDefault": "Collez une URL valide ou effectuez une recherche...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "trackReEnrichFieldsTitle": "Champs à mettre à jour", + "aboutFeatureRequest": "Demande de fonctionnalité", + "downloadSingleFilenameFormatDescription": "Modèle de nom de fichier pour les singles et les EP. Utilise les mêmes balises que le format album.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" }, - "homeSearchHintProvider": "Rechercher avec {providerName}...", - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", + "queueClearAllMessage": "Êtes-vous sûr de vouloir supprimer tous les fichiers téléchargés ?", + "dialogDisableHistoryMessage": "L'historique actuel sera effacé. Les fichiers téléchargés ne seront pas supprimés.", + "extensionLastChecked": "Dernière vérification à {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", "placeholders": { - "providerName": { + "time": { "type": "String" } } @@ -4779,253 +4508,519 @@ "@homeImportCsvTooltip": { "description": "Tooltip for importing a CSV file into Home search" }, - "homeChangeSearchProviderTooltip": "Changer de moteur de recherche", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" }, - "actionPaste": "Coller", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" }, - "searchTracksHint": "Rechercher des morceaux...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Rechercher des morceaux", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Collez ou effectuez une recherche...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "tutorialDownloadCompletedSemantics": "Téléchargement terminé", - "@tutorialDownloadCompletedSemantics": { - "description": "Accessibility label for completed download state in tutorial demo" - }, - "tutorialDownloadInProgressSemantics": "Téléchargement en cours", - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" - }, - "tutorialStartDownloadSemantics": "Lancer le téléchargement", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" - }, - "optionsEmbedMetadata": "Intégrer des métadonnées", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" - }, - "optionsEmbedMetadataSubtitleOn": "Ajouter des métadonnées, des pochettes et des paroles intégrées aux fichiers", - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" - }, - "optionsEmbedMetadataSubtitleOff": "Désactivé (avancé) : ignorer l'intégration de toutes les métadonnées", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Désactivé lorsque l'intégration des métadonnées est désactivée", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "Aucune pochette d'album n'a été trouvée", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "trackCoverReplace": "Remplacer la pochette", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" - }, - "trackCoverPick": "Choisir une pochette", - "@trackCoverPick": { - "description": "Button label for selecting cover art" - }, - "trackCoverClearSelected": "Supprimer la pochette sélectionnée", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" - }, - "trackCoverCurrent": "Pochette actuelle", - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" - }, - "trackCoverSelected": "Pochette choisie", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" - }, - "trackCoverReplaceNotice": "La pochette sélectionnée remplacera la pochette actuellement intégrée lorsque vous appuierez sur « Enregistrer ».", - "@trackCoverReplaceNotice": { - "description": "Notice shown when a new cover has been selected but not saved yet" - }, - "actionStop": "Arrêter", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Téléchargement en cours", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Fichier téléchargé manquant", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "queueDownloadCompleted": "Téléchargement terminé", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "queueRateLimitTitle": "Débit limité", - "@queueRateLimitTitle": { - "description": "Title shown on a failed queue item when the download service rate limits requests" - }, - "queueRateLimitMessage": "Ce titre est peut-être encore disponible. Patientez quelques minutes, réduisez le nombre de téléchargements simultanés, puis réessayez.", - "@queueRateLimitMessage": { - "description": "Explanation shown on a failed queue item when the download service rate limits requests" - }, - "appearanceSelectAccentColor": "Sélectionnez une couleur d'accentuation {hex}", - "@appearanceSelectAccentColor": { - "description": "Accessibility label for picking an accent color", - "placeholders": { - "hex": { - "type": "String" - } - } - }, - "logAutoScrollOn": "Défilement automatique activé", - "@logAutoScrollOn": { - "description": "Tooltip when auto-scroll is enabled on the log screen" - }, - "logAutoScrollOff": "Défilement automatique désactivé", - "@logAutoScrollOff": { - "description": "Tooltip when auto-scroll is disabled on the log screen" - }, - "logCopyLogs": "Copier les journaux", - "@logCopyLogs": { - "description": "Tooltip for copying logs" - }, - "logClearSearch": "Effacer la recherche", + "dialogClearHistoryTitle": "Effacer l'historique", "@logClearSearch": { "description": "Tooltip for clearing the log search field" }, - "logIssueIspBlockingLabel": "BLOCAGE PAR LE FAI DÉTECTÉ", - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "dialogImport": "Importer", + "@dialogImport": { + "description": "Dialog button - import data" }, - "logIssueIspBlockingDescription": "Il se peut que votre fournisseur d'accès Internet bloque l'accès aux services de téléchargement", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" }, - "logIssueIspBlockingSuggestion": "Essayez d'utiliser un VPN ou de modifier vos paramètres DNS pour les remplacer par 1.1.1.1 ou 8.8.8.8", - "@logIssueIspBlockingSuggestion": { - "description": "Diagnostic badge suggestion for ISP blocking" + "notifLibraryScanErrors": "{count} erreurs", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "Supprimer l'extension ?", + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "Cela supprimera définitivement le fichier téléchargé et l'effacera de votre historique.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "Système", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "Artiste / Album + Singles", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Introuvable", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Sélectionnez au moins un champ pour le remplir automatiquement", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Compositeur", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "Le créateur du projet HiFi original. Une base pour l'intégration de sources sans perte.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Sauvegarde & Restauration", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "Accès au stockage requis", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "Supprimer", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Numéro de disque manquant", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "Priorité du fournisseur de métadonnées enregistrée", + "setupPermissionRequired": "Autorisation {permissionType} requise", + "backupRestoring": "Restauration de la sauvegarde...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Dégradé", + "regionCountryKR": "Corée du Sud", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "Aucune parole n'a été trouvée dans ce fichier", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Identifiants Spotify", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Filtres par nom d'artiste", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Afficher tous les téléchargements", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Numéro de piste & de disque", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Lien de vérification copié", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Métadonnées « Album » et « Artiste » : uniquement les données principales", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Appuyez sur « Se connecter à Spotify » pour remplir ce champ.", + "setupNext": "Suivant", + "extensionVerificationBrowserSubtitleInApp": "Ouvrez d'abord les défis dans le navigateur intégré à l'application", + "libraryAutoScanDaily": "Tous les jours", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "À suivre", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Défilement automatique désactivé", + "trackConvertFailed": "Échec de la conversion", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "Désinstaller", + "safMigrationSuccess": "Le dossier de téléchargement a été mis à jour en mode SAF", + "optionsClearHistorySubtitle": "Supprimez tous les morceaux téléchargés de l'historique", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Suivant", + "extensionsNoHomeFeedExtensions": "Aucune extension avec le flux principal", + "optionsUpdateChannelStable": "Uniquement les versions stables", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "Playlists", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Mode de compatibilité réseau", + "settingsAppearance": "Apparence", "logIssueRateLimitedLabel": "NOMBRE LIMITÉ", "@logIssueRateLimitedLabel": { "description": "Diagnostic badge label when the service rate limits requests" }, - "logIssueRateLimitedDescription": "Trop de requêtes adressées au service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" + "logIssueSummary": "Résumé du problème", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" }, - "logIssueRateLimitedSuggestion": "Attendez quelques minutes avant de réessayer", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "Dépôt actuel :", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" }, - "logIssueNetworkErrorLabel": "ERREUR DE RÉSEAU", - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" + "@trackLyrics": { + "description": "Tab title - lyrics" }, - "logIssueNetworkErrorDescription": "Problèmes de connexion détectés", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "@backupImportButton": { + "description": "Button to pick a backup file to restore" }, - "logIssueNetworkErrorSuggestion": "Vérifiez votre connexion Internet", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "@setupFolderChoose": { + "description": "Button to choose folder" }, - "logIssueTrackNotFoundLabel": "PISTE INTROUVABLE", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" + "storageModeAppFolderSubtitle": "Enregistrement par défaut dans le dossier « Musique/SpotiFLAC »", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "logIssueTrackNotFoundDescription": "Certains titres n'ont pas pu être trouvés sur les plateformes de téléchargement", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" + "@regionCountryAU": { + "description": "Country name for SongLink region picker" }, - "logIssueTrackNotFoundSuggestion": "Il se peut que ce morceau ne soit pas disponible en qualité sans perte", - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" }, - "clickableLookingUpArtist": "Recherche d'artiste...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" + "libraryFilterApply": "Appliquer", + "@libraryFilterApply": { + "description": "Apply filters button" }, - "clickableInformationUnavailable": "Informations sur {type} non disponibles", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Veuillez cocher la case « Autoriser l'accès pour gérer tous les fichiers » sur l'écran suivant.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "Paroles", + "extensionSettingNotSet": "Non défini", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease : inclure la traduction", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "Le fichier a été divisé en {count} pistes avec succès", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", "placeholders": { - "type": { - "type": "String" - } - } - }, - "extensionDetailsTags": "Balises", - "@extensionDetailsTags": { - "description": "Section title for extension tags" - }, - "extensionDetailsInformation": "Information", - "@extensionDetailsInformation": { - "description": "Section title for extension metadata information" - }, - "extensionUtilityFunctions": "Fonctions utilitaires", - "@extensionUtilityFunctions": { - "description": "Capability label for utility-only extensions" - }, - "actionDismiss": "Ignorer", - "@actionDismiss": { - "description": "Generic action - dismiss" - }, - "setupChangeFolderTooltip": "Changer de dossier", - "@setupChangeFolderTooltip": { - "description": "Tooltip for editing the selected download folder" - }, - "a11yOpenTrackByArtist": "Écouter le morceau {trackName} de {artistName}", - "@a11yOpenTrackByArtist": { - "description": "Accessibility label for opening a track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "a11yOpenItem": "Ouvrir {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { - "type": "String" - }, - "name": { - "type": "String" - } - } - }, - "a11yOpenItemCount": "Ouvrir {title}, {count} {count, plural, =1{item} other{éléments}}", - "@a11yOpenItemCount": { - "description": "Accessibility label for opening a grouped item with count", - "placeholders": { - "title": { - "type": "String" - }, "count": { "type": "int" } } }, - "a11yOpenAlbumByArtistTrackCount": "Ouvrir l'album {albumName} de {artistName}, {trackCount} titres", + "cueSplitArtist": "Artiste : {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "Pour plus de détails, consultez les notes de mise à jour.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Liste de souhaits", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Récupérer & remplir", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "Faites glisser pour réorganiser les fournisseurs de téléchargement. L'application testera les fournisseurs dans l'ordre indiqué, de haut en bas, lors du téléchargement des morceaux.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Les téléchargements de titres individuels apparaîtront ici", + "downloadLossyOpus128": "Opus 128 kbps", + "downloadUseAlbumArtistForFolders": "Utilisez l'artiste de l'album pour les dossiers", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "Supprimer {count} {count, plural, =1{piste} other{pistes}}", + "updateLater": "Plus tard", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "Resumer", + "optionsDetailedLoggingOff": "Activer pour les rapports de bogues", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filtrer les artistes participants", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Dossier nommé d'après la balise « Artiste » de la piste", + "storeSearch": "Recherche d'extensions...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Communauté Telegram", + "lyricsModeBoth": "Les deux", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Analysez automatiquement votre bibliothèque à la recherche de nouveaux fichiers", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Activer la bibliothèque locale", + "queueFlacFindingProgress": "Recherche de fichiers FLAC... ({current}/{total})", + "trackConvertTargetFormat": "Format cible", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "Paramètres", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "La requête a expiré. Veuillez réessayer plus tard.", + "settingsExtensions": "Extensions", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Téléchargé", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "Couleur dynamique", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choisissez un fichier de sauvegarde", + "downloadAppleElrcWordSyncDisabled": "Paroles d'Apple Music, ligne par ligne, en toute sécurité", + "credentialsTitle": "Identifiants Spotify", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "Apparence", + "downloadNeteaseIncludeRomanizationDisabled": "Pas de romanisation", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 titre} other{{count} titres}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Effacer la recherche", + "trackSaveLyrics": "Enregistrer les paroles (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Télécharger l'intégralité", + "snackbarAlreadyDownloaded": "« {trackName} » a déjà été téléchargé", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Un dossier distinct pour chaque album", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "HP triangulaire", + "searchTracksEmptyPrompt": "Rechercher des morceaux", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Intégrer et enregistrer le fichier .lrc", + "trackReEnrichFieldExtra": "Genre, Label, Droits d'auteur", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "Paroles", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "Stratégie : {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "Diviser les balises pour FLAC/Opus", + "extensionsHomeFeedUse": "Utiliser le fil d'actualité de {extensionName}", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Annuler le téléchargement ?", + "updateWhatsNew": "Quoi de neuf ?", + "updateNewVersionReady": "Une nouvelle version est disponible", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Sélectionner une piste", + "libraryClearSubtitle": "Supprimez tous les titres numérisés", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "N'importe lequel", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Dépôt", + "backupExportSectionDescription": "Enregistrez vos paramètres, votre historique de téléchargement, les titres que vous avez aimés, votre liste de souhaits, vos artistes préférés et vos playlists dans un seul fichier que vous pourrez conserver ou transférer vers un autre téléphone.", + "libraryScanSettings": "Paramètres de numérisation", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "Durée", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Rechercher des morceaux...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Hors ligne", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Artiste", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "Dans la bibliothèque", + "pressBackAgainToExit": "Appuyez de nouveau sur retour pour quitter", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "Autorisation de notification accordée !", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Soutien au développement", + "snackbarFailedToUpdateNamed": "Échec de la mise à jour de {extensionName}", + "backupContentsTitle": "Contenu de la sauvegarde", + "updateDontRemind": "Ne plus me le rappeler", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Recherche en ligne...", + "discographyDownloadSelected": "Télécharger la sélection", + "trackConvertResampler": "Rééchantillonneur", + "queueFilteringIndicator": "Filtrage...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Choisissez le moteur de recherche par défaut pour revenir à la configuration d'origine après avoir utilisé une extension", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Diviser « {album} » en {count} fichiers FLAC individuels ?\n\nLes fichiers seront enregistrés dans le même répertoire.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Répertoire temporaire", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Afficher l'indicateur de doublons", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Rechercher avec {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "Vérifier les mises à jour", + "replayGainBatchAnalyzing": "Analyse de ReplayGain...", + "recentTypeAlbum": "Album", + "providerExtension": "Extension", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "Aucune source d'illustration de couverture disponible", + "libraryFilterMetadata": "Métadonnées", + "albumFolderArtistYearAlbum": "Artiste / [Année] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Coupure", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5040,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} de {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, one {}=1{extension} other{extensions}} n'ont pas pu être réinstallées. Installez-les manuellement depuis la boutique.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Stable", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Personnaliser le thème et l'apparence de l'application", + "setupAppDocumentsFolderSubtitle": "Recommandé - accessible via l'application Fichiers", + "a11yPlayTrackByArtist": "Écouter {trackName} de {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -5052,6 +5062,320 @@ } } }, + "dialogRemove": "Supprimer", + "extensionVerificationClose": "Fermer", + "bulkDownloadPlaylistsButton": "Télécharger {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "Essayez d'autres services si le téléchargement échoue", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} motif(s)", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "Ce lien n'est pas pris en charge. Vérifiez que l'URL est correcte et qu'une extension compatible est installée.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Mode « Artiste »", + "libraryFilterMetadataComplete": "Métadonnées complètes", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Analyser le niveau sonore et intégrer des balises ReplayGain (EBU R128)", + "libraryScanning": "En cours d'analyse...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Actualiser", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "Enregistrez les paroles synchronisées avec vos morceaux téléchargés", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Téléchargez plusieurs titres d'un album pour les écouter ici", + "extensionEnterValue": "Saisir une valeur", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Favoris", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Ajouter un dépôt d'extensions", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "Diviser un fichier CUE+FLAC en pistes individuelles", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "Aucune playlist pour le moment", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Supprimez les entrées correspondant aux fichiers qui n'existent plus", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "Par artiste", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "Traducteurs", + "notifAlreadyInLibraryCount": "Déjà dans la bibliothèque ({completed}/{total})", + "editMetadataFieldTitle": "Titre", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Impossible de charger l'artiste", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "La qualité réelle dépend de la disponibilité des pistes sur le service", + "downloadFilenameDescription": "Utilisez {artist}, {title}, {album}, {track}, {year}, {date} et {disc} comme variables de remplacement.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Z-A", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Santé du service", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC a besoin d'une autorisation d'accès au stockage pour enregistrer vos fichiers musicaux téléchargés.", + "tutorialReadyMessage": "C'est parti ! Commencez dès maintenant à télécharger votre musique préférée.", + "tutorialLibraryTip3": "Passez de l'affichage sous forme de liste à celui sous forme de grille pour faciliter la navigation", + "selectionDeletePlaylistsCount": "Supprimer {count} {count, plural, one {}=1{playlist} other{playlists}}", + "appearanceThemeLight": "Clair", + "queueEmptyHistorySubtitle": "Les morceaux téléchargés apparaîtront ici", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Échec de la restauration de la sauvegarde", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "{addedCount} titres ajoutés à la file d'attente, {skippedCount} titres ignorés", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "Choisissez le dossier de téléchargement", + "dialogDownloadAllTitle": "Tout télécharger", + "providerPriorityInfo": "Si un morceau n'est pas disponible chez le premier fournisseur, l'application essaiera automatiquement le suivant.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "Aucun album disponible", + "downloadAppleQqMultiPersonDisabled": "Paroles standard sans indication du haut-parleur", + "cacheNoData": "Aucune donnée mise en cache", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Lancer le téléchargement", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Essayez d'utiliser un VPN ou de modifier vos paramètres DNS pour les remplacer par 1.1.1.1 ou 8.8.8.8", + "aboutTitle": "À propos", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "Historique", + "audioAnalysisSampleRate": "Fréquence d'échantillonnage", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Les fournisseurs de paroles d'extension s'exécutent avant les fournisseurs de paroles intégrés. Au moins un fournisseur doit rester activé.", + "cacheTrackLookup": "Cache de recherche de piste", + "extensionsHomeFeedOffSubtitle": "Ne pas afficher le fil d'actualité sur l'écran principal", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Actualiser l'état", + "notifAllDownloadsComplete": "Tous les téléchargements sont terminés", + "downloadNeteaseIncludeRomanizationEnabled": "Lignes de romanisation incluses", + "editMetadataFieldDateHint": "AAAA-MM-JJ ou AAAA", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "Partager", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{count} titres issus de {albumCount} albums", + "settingsDonateSubtitle": "Offrez un café au développeur", + "libraryFilterDownloaded": "Téléchargé", + "downloadNetworkAnySubtitle": "Utilisez le Wi-Fi ou les données mobiles", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "L'analyse a été interrompue avant d'être terminée.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Échec de l'installation de {extensionName}", + "trackCopyLyrics": "Copier les paroles", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australie", + "downloadAlbumFolderStructure": "Structure du dossier de l'album", + "downloadMusixmatchAuto": "Auto", + "actionDismiss": "Ignorer", + "storeFilterAll": "Tout", + "extensionsDisabled": "Désactivée", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "Télécharger {count} titres ?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Votre bibliothèque", + "optionsCheckUpdatesSubtitle": "M'avertir lorsqu'une nouvelle version est disponible", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "Il y a {count} mois", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Héritage", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Playlist renommée", + "collectionCreatePlaylist": "Créer une playlist", + "homeGoToAlbum": "Aller à l'album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Un dossier distinct pour chaque artiste", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "Version {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Artiste principal uniquement pour les dossiers", + "tutorialExtensionsTip2": "Ajouter de nouveaux fournisseurs de téléchargement ou de nouvelles sources de recherche", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "Bienvenue sur SpotiFLAC !", "a11ySelectAlbum": "Sélectionnez l'album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -5061,89 +5385,679 @@ } } }, - "a11yOpenAlbum": "Ouvrir l'album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "Code source pour mobile", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Accès au stockage", + "logFilterBySeverity": "Filtrer les journaux par niveau de gravité", + "libraryFolderNotExist": "Le dossier sélectionné n'existe pas", + "optionsEmbedMetadataSubtitleOn": "Ajouter des métadonnées, des pochettes et des paroles intégrées aux fichiers", + "albumFolderArtistAlbum": "Artiste / Album", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "L'autorisation a été refusée. Veuillez activer manuellement l'option « Accès à tous les fichiers » dans les paramètres système.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Vide uniquement", + "settingsLocalLibrarySubtitle": "Analysez la musique et détectez les doublons", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "Utiliser des fournisseurs d'extension", + "cacheCleanupUnusedSubtitle": "Supprimer l'historique des téléchargements orphelins et les entrées manquantes dans la bibliothèque", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Genre manquant", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "editMetadataFieldDateHint": "AAAA-MM-JJ ou AAAA", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "setupFolderDescription": "Sélectionnez un dossier dans lequel votre musique téléchargée sera enregistrée.", + "extensionDetailsTags": "Balises", + "unknownArtist": "Artiste inconnu", + "trackFetchOnlineLyrics": "Télécharger depuis Internet", + "snackbarNoActionDefined": "Aucune action n'est associée à ce bouton", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, + "downloadAllCount": "Tout télécharger ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "Disque {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "Enregistrer les identifiants", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "En ligne", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Conserver les téléchargements terminés dans l'historique et la bibliothèque", + "trackOptionRemoveFromWishlist": "Supprimer de la liste de souhaits", + "extensionsFallbackTitle": "Extensions de secours", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Échec de l'enregistrement des métadonnées via FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Supprimer la sélection", + "selectionSelectPlaylistsToDelete": "Sélectionnez les playlists à supprimer", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Saisissez l'URL d'un dépôt GitHub contenant un fichier registry.json pour parcourir et installer des extensions.", + "appearanceThemeDark": "Sombre", + "downloadedAlbumTapToSelect": "Appuyez sur les titres pour les sélectionner", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Votre bibliothèque est vide", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "Aucune métadonnée correspondante n'a été trouvée en ligne", + "updateDownloading": "Téléchargement en cours...", + "trackLyricsSource": "Source : {source}", + "logFilterLevel": "Niveau", + "logNoLogsYet": "Pas encore de journal", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Ouvrir dans {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "Cette opération supprimera toutes les pistes numérisées de votre bibliothèque. Vos fichiers musicaux ne seront pas supprimés.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Auto", + "searchEmptyResultSubtitle": "Essayez un autre mot-clé", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "Aujourd'hui", + "a11yOpenItem": "Ouvrir {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Nombre de bits", "editMetadataFieldTrackTotal": "Total des pistes", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "Total des disques", "@editMetadataFieldDiscTotal": { "description": "Label for total discs field in the edit metadata sheet" }, - "editMetadataFieldComposer": "Compositeur", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" - }, - "editMetadataFieldComment": "Commentaire", - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "editMetadataAdvanced": "Avancé", - "@editMetadataAdvanced": { - "description": "Expandable section label for advanced metadata fields" - }, - "libraryFilterMetadataMissingTrackNumber": "Numéro de piste manquant", - "@libraryFilterMetadataMissingTrackNumber": { - "description": "Filter option - items missing track number" - }, - "libraryFilterMetadataMissingDiscNumber": "Numéro de disque manquant", - "@libraryFilterMetadataMissingDiscNumber": { - "description": "Filter option - items missing disc number" - }, - "libraryFilterMetadataMissingArtist": "Artiste manquant", - "@libraryFilterMetadataMissingArtist": { - "description": "Filter option - items missing artist" - }, - "libraryFilterMetadataIncorrectIsrcFormat": "Format ISRC incorrect", - "@libraryFilterMetadataIncorrectIsrcFormat": { - "description": "Filter option - items with an invalid ISRC format" - }, - "libraryFilterMetadataMissingLabel": "Label manquant", - "@libraryFilterMetadataMissingLabel": { - "description": "Filter option - items missing record label" - }, - "collectionDeletePlaylistsMessage": "Supprimer {count} {count, plural, =1{playlist} other{playlists}}?", - "@collectionDeletePlaylistsMessage": { - "description": "Confirmation message for deleting selected playlists", + "replayGainBatchConfirmMessage": "Analyser le niveau sonore et ajouter des balises ReplayGain à {count} piste(s) ?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Dossier nommé d'après la balise « Artiste de l'album »", + "optionsSpotifyWarning": "Spotify nécessite vos propres identifiants API. Vous pouvez les obtenir gratuitement sur developer.spotify.com", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} supprimées", - "@collectionPlaylistsDeleted": { - "description": "Snackbar after deleting selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedTracksToPlaylist": "Ajout de {count} {count, plural, =1{titre} other{titres}} à {playlistName}", - "@collectionAddedTracksToPlaylist": { - "description": "Snackbar after adding multiple tracks to a playlist", - "placeholders": { - "count": { - "type": "int" - }, - "playlistName": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Modifier les métadonnées", + "discographyDownloadAll": "Tout télécharger", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "Albums/Nom de l'artiste/Titre de l'album/", + "extensionHealthServiceUnknown": "État du service inconnu", + "navHome": "Accueil", + "queueDownloadStarting": "C'est parti...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} fichiers analysés • {percentage} %", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "FLAC haute résolution", + "selectionSelected": "{count} sélectionnés", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Télécharger la discographie", + "editMetadataFieldCopyright": "Droits d'auteur", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Trier", + "cacheLibraryCoverDesc": "Pochettes extraites des fichiers musicaux locaux. Elles seront extraites à nouveau lors de la prochaine analyse.", + "dialogRemoveExtension": "Supprimer l'extension", + "backupExportSectionTitle": "Créer une sauvegarde", + "downloadEmbedLyricsDisabled": "Activez d'abord l'intégration des métadonnées", + "openInOtherServices": "Ouvrir dans d'autres services", + "actionSelectAll": "Tout sélectionner", + "settingsDownloadNetworkSubtitle": "Choisissez le réseau à utiliser pour les téléchargements. Si vous sélectionnez « Wi-Fi uniquement », les téléchargements seront interrompus lorsque vous utilisez les données mobiles.", + "downloadFolderOrganization": "Organisation du dossier", + "tutorialWelcomeTip2": "Obtenez un son de qualité FLAC grâce aux extensions de téléchargement installées", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "Toutes les pistes sélectionnées", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "Consulter les journaux de l'application pour le débogage", + "albumFolderYearAlbumSubtitle": "Albums/[2005] Titre de l'album/", + "cancelDownloadKeep": "Conserver", + "optionsDetailedLoggingOn": "Des journaux détaillés sont enregistrés", + "safMigrationMessage2": "Veuillez sélectionner à nouveau votre dossier de téléchargement pour passer au nouveau système de stockage.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japon", + "notifUpdateFailed": "Échec de la mise à jour", + "downloadCreatePlaylistSourceFolderRedundant": "Géré par les paramètres d'organisation des dossiers", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Choisissez l'emplacement où enregistrer vos morceaux téléchargés", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Désactivés ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Locale", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "Service", + "lyricsProviderQqMusicDesc": "QQ Music (idéal pour écouter des titres chinois, via un proxy)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Supprimer les entrées orphelines de l'historique des téléchargements et de la bibliothèque pour les fichiers manquants.", + "selectionTapPlaylistsToSelect": "Appuyez sur les playlists pour les sélectionner", + "notifUpdateFailedBody": "Impossible de télécharger la mise à jour. Veuillez réessayer plus tard.", + "downloadNeteaseIncludeTranslationDisabled": "Paroles originales uniquement", + "artistPopular": "Populaire", + "extensionRemoveButton": "Supprimer l'extension", + "allFilesAccessEnabledSubtitle": "Peut écrire dans n'importe quel dossier", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Moteur de recherche", + "tutorialWelcomeDesc": "Apprenons comment télécharger votre musique préférée en qualité sans perte. Ce petit tutoriel vous présentera les bases.", + "selectionBatchConvertConfirmTitle": "Conversion par lots", + "extensionMetadataProvider": "Fournisseur de métadonnées", + "queueDownloadedFileMissing": "Fichier téléchargé manquant", + "logClearLogs": "Effacer les journaux", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Téléchargez de la musique depuis Spotify ou Deezer, ou collez n'importe quelle URL prise en charge", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Attendez quelques minutes avant de réessayer", + "downloadAllowLocalNetworkEnabled": "Les requêtes vers des adresses locales ou privées sont autorisées (pour un proxy local ou un DNS personnalisé)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "Artiste", + "extensionCustomUrlHandling": "Gestion des URL personnalisées", + "appearanceDynamicColorSubtitle": "Utilisez les couleurs de votre fond d'écran", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "Par défaut", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choisissez la structure des dossiers d'albums", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Uniquement pour des écoutes rapides et locales dans SpotiFLAC Mobile ; non recommandé pour une écoute régulière", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "Dossier « Applications » (recommandé)", + "collectionPlaylistCreated": "Playlist créée", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Enregistrez la pochette de l'album au format .jpg", + "actionPaste": "Coller", + "extensionSettingsCount": "{count} {count, plural, =1{paramètre} other{paramètres}}", + "downloadNativeWorker": "Tâche de téléchargement native", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} est installée. Activez-la dans Paramètres > Extensions", + "cacheRefreshStats": "Actualiser les statistiques", + "collectionPlaylistChangeCover": "Changer l'image de couverture", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "Effacer l'historique des téléchargements", + "trackGenre": "Genre", + "snackbarSelectedPlaylistsEmpty": "Les playlists sélectionnées ne contiennent aucun morceau", + "collectionAddedTracksToPlaylist": "Ajout de {count} {count, plural, =1{titre} other{titres}} à {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease : inclure la romanisation", + "libraryFilterMetadataMissingArtist": "Artiste manquant", + "extensionsNoCustomSearch": "Aucune extension avec recherche personnalisée", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "Fournisseur de téléchargement", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "Mode Paroles", + "aboutReportIssueSubtitle": "Signalez tout problème que vous rencontrez", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "Noir Amoled", + "logIssueNetworkErrorDescription": "Problèmes de connexion détectés", + "folderOrganizationByArtistAlbumSubtitle": "Dossiers imbriqués pour les artistes et les albums", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "Accorder l'autorisation", + "lyricsProvidersDescription": "Activer, désactiver et réorganiser les sources de paroles. Les sources sont parcourues de haut en bas jusqu'à ce que les paroles soient trouvées.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "Il y a {count} jours", + "extensionsHomeFeedDescription": "Choisissez l'extension qui affiche le fil d'actualité sur l'écran principal", + "downloadLossyMp3Subtitle": "Compatibilité optimale, environ 10 Mo par piste", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Détails", + "collectionWishlistEmptyTitle": "La liste de souhaits est vide", + "downloadAppleQqMultiPersonEnabled": "Étiquettes d'intervenants incluses pour les duos et les morceaux en groupe", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Service perturbé", + "optionsUseExtensionProvidersOn": "Les fournisseurs d'extensions sont activés", + "selectionConvertNoConvertible": "Aucune piste convertible sélectionnée", + "snackbarCredentialsCleared": "Identifiants validés", + "setupStorageGranted": "Autorisation de stockage accordée !", + "downloadAllowLocalNetwork": "Autoriser l'accès au réseau local", + "optionsMaxQualityCoverSubtitleDisabled": "Désactivé lorsque l'intégration des métadonnées est désactivée", + "nowPlayingNoLyrics": "Ce fichier ne contient pas de paroles", + "selectionDeleteTracksCount": "Supprimer {count} {count, plural, =1{titre} other{titres}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} exclus", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Changer de dossier", + "logIssueIspBlockingDescription": "Il se peut que votre fournisseur d'accès Internet bloque l'accès aux services de téléchargement", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "Vider la bibliothèque", + "collectionRemoveFromPlaylist": "Supprimer de la playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Inclure les informations d'identification de l'extension", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 titre téléchargé} other{{completed} titres téléchargés}}, {failed, plural, =1{1 échec} other{{failed} échecs}}", + "storeCategoryMetadata": "Métadonnées", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Total des disques", + "tutorialLibraryTip1": "Afficher la progression du téléchargement et la file d'attente dans l'onglet « Bibliothèque »", + "playlistsCount": "{count, plural, one {}=1{1 playlist} other{{count} playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "Tous les morceaux sont enregistrés directement dans le dossier de téléchargement", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "Locale", + "tutorialDownloadInProgressSemantics": "Téléchargement en cours", + "searchSortDurationLong": "Durée (la plus longue)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "À propos de la bibliothèque locale", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Fichier audio introuvable pour cette liste CUE", + "notifUpdateReadyBody": "SpotiFLAC v{version} a été téléchargé. Appuyez pour l'installer.", + "appearanceSelectAccentColor": "Sélectionnez une couleur d'accentuation {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "Réanalyser ReplayGain", + "downloadSeparateSinglesFolder": "Dossier dédié aux titres individuels", + "trackAlbumArtist": "Artiste de l'album", + "qualityFlacLossless": "FLAC sans perte", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Personnalisez votre expérience", + "extensionActionFailed": "L'action a échoué", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ : Paroles pour plusieurs personnes", + "downloadFallbackExtensionsSubtitle": "Choisissez les extensions pouvant servir de solution de secours", + "notifChannelLibraryScanDesc": "Affiche la progression de la numérisation dans la bibliothèque locale", + "storeExtensionsCount": "{count} {count, plural, one {}=1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "Aucune pochette d'album n'a été trouvée", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} a été mis à jour vers la version {version}", + "collectionRemoved": "« {trackName} » supprimé", + "setupStorageAccessMessageAndroid11": "Depuis Android 11, l'autorisation « Accès à tous les fichiers » est requise pour enregistrer des fichiers dans le dossier de téléchargement de votre choix.", + "notifDownloadsFinished": "Téléchargements terminés ({completed} terminé, {failed} en échec)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} fichiers • {percentage} %", + "optionsPrimaryProvider": "Fournisseur principal", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "Il se peut que ce morceau ne soit pas disponible en qualité sans perte", + "collectionAddedToLoved": "\"{trackName}\" ajouté aux Favoris", + "albumFolderArtistAlbumFlat": "Artiste / Album (singles)", + "homeAlbumInfoUnavailable": "Informations sur l'album non disponibles", + "settingsLyrics": "Paroles", + "extensionVerificationBrowserExternal": "Externe", + "regionCountryIN": "Inde", + "extensionHealthUnknown": "Inconnu", + "backupContentsWishlist": "{count} liste de souhaits {count, plural, one {}=1{titre} other{titres}}", + "settingsAutoExportFailed": "Échec de l'exportation automatique des téléchargements", + "logFilterSection": "Filtre", + "dialogDiscardChanges": "Ignorer les modifications ?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Titres", + "searchAlbums": "Albums", + "trackConvertFormat": "Convertir le format", + "metadataProviderPriorityTitle": "Priorité des métadonnées", + "libraryFolderHint": "Appuyez pour sélectionner un dossier", + "downloadedAlbumDeleteMessage": "Souhaitez-vous supprimer {count} {count, plural, =1{piste} other{pistes}} de cet album ?\n\nCela supprimera également les fichiers de l'espace de stockage.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "Album", + "updateAvailable": "Mise à jour disponible", + "optionsEmbedLyrics": "Intégrer les paroles", + "trackReEnrichProgress": "Réenrichissement des métadonnées...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Pic", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Afficher l'onglet « Dépôt » dans le menu de navigation", + "settingsTitle": "Paramètres", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Explorer le cache des flux", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} sélectionnés", + "downloadAskQualitySubtitle": "Afficher le sélecteur de qualité pour chaque téléchargement", + "filenameShowAdvancedTags": "Afficher les balises avancées", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Extensions de secours", + "downloadAlbumArtistMetadataFull": "Métadonnées de l'artiste de l'album : complètes", + "cacheLibraryCover": "Cache de couverture de bibliothèque", + "actionShuffle": "Lecture aléatoire", + "backupCreated": "Sauvegarde créée", + "downloadLossyAacSubtitle": "Compatibilité optimale avec les appareils mobiles, format M4A", + "snackbarFillAllFields": "Veuillez remplir tous les champs", + "actionCreate": "Créer", + "snackbarAddedToQueueGeneric": "Ajouté à la file d'attente", + "downloadedAlbumDownloadedCount": "{count} téléchargements", + "snackbarLoadingCueSheet": "Chargement de la liste CUE...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "Créateur de la version originale de SpotiFLAC", + "a11yTrackByArtist": "{trackName} de {artistName}", + "audioAnalysisDynamicRange": "Plage dynamique", + "homeChangeSearchProviderTooltip": "Changer de moteur de recherche", + "loadingSharedLink": "Chargement du lien partagé...", + "lyricsModeEmbedSubtitle": "Paroles enregistrées dans les métadonnées FLAC", + "setupNotificationBackgroundDescription": "Recevez des notifications sur la progression et la fin du téléchargement. Cela vous permet de suivre les téléchargements lorsque l'application est en arrière-plan.", + "snackbarViewQueue": "Afficher la file d'attente", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Les singles et les albums sont enregistrés dans le même dossier", + "backupRestored": "La sauvegarde a été restaurée avec succès", + "trackConvertConfirmMessageLosslessCapped": "Convertir du format {sourceFormat} au format {targetFormat} ({quality}) ?\n\nLe fichier de sortie conservera un codec sans perte, mais la profondeur de bits et la fréquence d'échantillonnage seront limitées. Le fichier d'origine sera supprimé après la conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Choisissez des albums ou des titres spécifiques", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Sélectionnez un fichier de sauvegarde pour restaurer vos données. Cette opération remplacera les réglages actuels, l'historique et la bibliothèque de cet appareil.", + "errorUrlFetchFailed": "Impossible de charger le contenu de ce lien. Veuillez réessayer.", + "lyricsProviderLyricsPlusDesc": "Paroles de karaoké mot à mot (Apple/Musixmatch/Spotify/QQ, via un proxy)", + "dialogSave": "Sauvegarder", + "trackReEnrichSearching": "Recherche de métadonnées en ligne...", + "regionCountryUS": "États-Unis", + "audioAnalysisDescription": "Vérifier la qualité sans perte à l'aide d'une analyse spectrale", + "downloadFilenameFormat": "Nom du fichier", + "cueSplitTitle": "Fiche CUE fractionnée", + "settingsAppSubtitle": "Mises à jour, données, dépôt d'extension, débogage", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "Impossible de charger {item} : source de l'extension manquante", + "albumFolderAlbumOnlySubtitle": "Albums/Nom de l'album/", + "errorLoadPlaylist": "Impossible de charger la playlist", + "logIssueTrackNotFoundLabel": "PISTE INTROUVABLE", + "extensionVerificationHelpTitleManual": "Lancer la vérification manuellement", + "dialogDiscard": "Ignorer", + "storageModeSaf": "Dossier personnalisé (SAF)", + "errorRateLimited": "Débit limité", + "downloadSelectQuality": "Sélectionner la qualité", + "dialogDownloadPlaylistsMessage": "Télécharger {trackCount} {trackCount, plural, =1{titre} other{titres}} depuis {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}} ?", + "collectionFoldersTitle": "Mes dossiers", + "credentialsClientSecret": "Clé secrète du client", + "progressFetchingMetadata": "Récupération des métadonnées... {current}/{total}", + "settingsDownloadNetworkAny": "Wi-Fi + données mobiles", + "audioAnalysisDuration": "Durée", + "audioAnalysisAnalyzing": "Analyse audio en cours...", + "credentialsDescription": "Saisissez votre identifiant client et votre clé secrète pour utiliser votre propre quota d'application Spotify.", + "extensionVerificationHelpMessageWaiting": "Si le navigateur ne s'est pas ouvert, ou si la vérification s'est terminée sans que vous ne soyez redirigé vers SpotiFLAC Mobile, ouvrez à nouveau ce lien ou copiez-le manuellement.", + "editMetadataFieldDiscNum": "Disque n°", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Écouter un aperçu", + "setupPermissionRequiredMessage": "L'autorisation {permissionType} est requise pour profiter pleinement de l'application. Vous pourrez modifier ce paramètre ultérieurement dans les Paramètres.", + "aboutVersion": "Version", + "qualityHiResFlacSubtitle": "24 bits / jusqu'à 96 kHz", + "audioAnalysisSamples": "Échantillons", + "libraryFilterQualityHiRes": "Haute résolution (24 bits)", + "sectionMetadataProviders": "Fournisseurs", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "Droits d'auteur", + "libraryForceFullScanSubtitle": "Réanalysez tous les fichiers en ignorant le cache", + "trackCopiedToClipboard": "Copié dans le presse-papiers", + "optionsEmbedMetadata": "Intégrer des métadonnées", "collectionAddedTracksToPlaylistWithExisting": "Ajout de {count} {count, plural, =1{titre} other{titres}} à {playlistName} ({alreadyCount} titres déjà présents dans la playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5159,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{élément} other{éléments}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Intégration", + "storeClearFilters": "Effacer les filtres", + "navSettings": "Paramètres", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "Application", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Chaîne « Artiste » de l'album complet utilisée", + "trackConvertFormatSubtitle": "Convertir au format AAC/M4A, MP3, Opus, ALAC ou FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "Artiste/Album/ et Artiste/Singles/", + "collectionDeletePlaylistsMessage": "Supprimer {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Priorité du fournisseur de paroles enregistrée", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "Nom de la piste", + "homeRecent": "Récent", + "recentEmpty": "Aucun élément récent pour le moment", + "cacheClearAll": "Vider tout le cache", + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "regionCountryMX": "Mexique", + "a11yOpenAlbumByArtistTrackCount": "Ouvrir l'album {albumName} de {artistName}, {trackCount} titres", + "editMetadataFieldAlbum": "Album", + "settingsAbout": "À propos", + "libraryFilterTitle": "Filtres", + "cleanupOrphanedDownloadsResult": "{count} entrées orphelines ont été supprimées de l'historique", + "extensionHooksAvailable": "{count} crochet(s) disponibles", + "backupContentsSettings": "Paramètres de l'application", + "trackLyricsEmbedded": "Les paroles ont été intégrées avec succès", + "optionsUpdateChannelPreview": "Accédez aux versions préliminaires", + "collectionAddedToFavoriteArtists": "« {artistName} » a été ajouté à vos artistes préférés", + "libraryForceFullScan": "Lancer une analyse complète", + "snackbarProviderPrioritySaved": "Priorité du fournisseur enregistrée", + "collectionFavoriteArtistsEmptySubtitle": "Appuyez sur le cœur sur la page d'un artiste pour le garder ici", + "libraryBuiltInPlayerInfo": "Le lecteur intégré est un outil de prévisualisation permettant de vérifier rapidement les morceaux stockés localement. Utilisez un lecteur de musique externe pour les écouter.", + "extensionServiceStatus": "État du service", + "dateWeeksAgo": "Il y a {count} semaines", + "historyFilterSingles": "Titres", + "tutorialSettingsTip2": "Définir les préférences par défaut en matière de qualité et de format audio", + "trackLyricsSaved": "Paroles enregistrées dans {fileName}", + "cacheClearAllConfirmTitle": "Vider tout le cache ?", + "noTracksFoundForAlbum": "Aucun morceau trouvé pour cet album", + "sectionLanguage": "Langue", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "Sélectionner un dossier", + "dateYesterday": "Hier", + "collectionAddToPlaylist": "Ajouter à la playlist", + "snackbarUnsupportedAudioFormat": "Format audio non pris en charge", + "libraryScanCancelled": "Analyse annulée", + "appearanceLanguage": "Langue de l'application", + "extensionsTitle": "Extensions", + "dialogImportPlaylistMessage": "{count} pistes ont été trouvées dans le fichier CSV. Voulez-vous les ajouter à la file d'attente de téléchargement ?", + "permissionNotification": "Notification", + "notifUpdateReady": "Prêt pour la mise à jour", + "lyricsModeDescription": "Choisissez comment les paroles sont enregistrées avec vos téléchargements", + "downloadFrom": "Télécharger depuis", + "collectionWishlistEmptySubtitle": "Appuyez sur le signe « + » à côté des morceaux pour enregistrer ceux que vous souhaitez télécharger plus tard", + "cueSplitSplitting": "Fractionnement de la liste CUE... ({current}/{total})", + "optionsMaxQualityCover": "Pochette de qualité supérieure", + "trackOptionAddToWishlist": "Ajouter à la liste de souhaits", + "settingsBackup": "Sauvegarde & Restauration", + "aboutPaxsenixSubtitle": "Proxy de paroles pour Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou et Genius", + "notifDownloadCompleteCount": "Téléchargement terminé ({completed}/{total})", + "extensionsNoDownloadProvider": "Aucune extension avec le fournisseur de téléchargement", + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "trackReplayGainFailed": "Impossible d'ajouter les balises ReplayGain", + "collectionPlaylistRemoveCover": "Supprimer l'image de couverture", + "storeEmptyNoResults": "Aucune extension trouvée", + "logIssueTrackNotFoundDescription": "Certains titres n'ont pas pu être trouvés sur les plateformes de téléchargement", + "editMetadataFieldComment": "Commentaire", + "settingsMetadata": "Métadonnées", + "settingsCache": "Stockage & Cache", + "providerPriorityFallbackExtensionsHint": "Seules les extensions activées disposant de la fonctionnalité « fournisseur de téléchargement » sont répertoriées ici.", + "libraryFilterAll": "Tout", + "notifDownloadingUpdate": "Télécharger SpotiFLAC v{version}", + "extensionsProviderPrioritySection": "Priorité accordée aux prestataires", + "storeChangeRepoTooltip": "Changer de dépôt", + "snackbarFailedToInstall": "Échec de l'installation de l'extension", + "libraryScanSubtitle": "Recherchez des fichiers audio", + "snackbarExtensionInstalled": "{extensionName} est installée.", + "setupOpenSettings": "Ouvrir les paramètres", + "extensionsInstalledSection": "Extensions installées", + "aboutLinks": "Liens", + "trackCoverClearSelected": "Supprimer la pochette sélectionnée", + "libraryAutoScanWeekly": "Hebdomadaire", + "downloadMusixmatchLanguageAuto": "Auto (langue d'origine)", + "optionsDefaultSearchTab": "Onglet de recherche par défaut", + "downloadPrimaryArtistOnlyOn": "Primaire uniquement : Activé", + "folderOrganizationDescription": "Classer les fichiers téléchargés dans des dossiers", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "Intégrer dans un fichier", + "trackReEnrichFfmpegFailed": "Échec de l'intégration des métadonnées FFmpeg", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Avec perte", + "actionPause": "Pause", + "csvImportTracks": "{count} pistes issues d'un fichier CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackReEnrichSuccessWithFailures": "Les métadonnées ont été réenrichies avec succès ({successCount}/{total}) - Échec : {failedCount}", - "@trackReEnrichSuccessWithFailures": { - "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", - "placeholders": { - "successCount": { - "type": "int" - }, - "total": { - "type": "int" - }, - "failedCount": { - "type": "int" - } - } - }, - "selectionDeleteTracksCount": "Supprimer {count} {count, plural, =1{titre} other{titres}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueDownloadSpeedStatus": "Téléchargement - {speed} Mo/s", - "@queueDownloadSpeedStatus": { - "description": "Queue status while downloading with speed", - "placeholders": { - "speed": { - "type": "String" - } - } - }, - "queueDownloadStarting": "C'est parti...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "a11ySelectTrack": "Sélectionner une piste", - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" - }, - "a11yDeselectTrack": "Désélectionner la piste", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" - }, - "a11yPlayTrackByArtist": "Écouter {trackName} de {artistName}", - "@a11yPlayTrackByArtist": { - "description": "Accessibility label for playing a local library track", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } - }, - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "@storeExtensionsCount": { - "description": "Store extension result count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeRequiresVersion": "Nécessite la version v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", - "placeholders": { - "version": { + "providerName": { "type": "String" } } }, "actionGo": "Aller", - "@actionGo": { - "description": "Generic action button label" - }, - "logIssueSummary": "Résumé du problème", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" - }, - "logTotalErrors": "Nombre total d'erreurs : {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logAffectedDomains": "Concerne : {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } - }, - "libraryScanCancelled": "Analyse annulée", - "@libraryScanCancelled": { - "description": "Library scan status when a scan was cancelled" - }, - "libraryScanCancelledSubtitle": "Vous pouvez relancer l'analyse dès que vous êtes prêt.", - "@libraryScanCancelledSubtitle": { - "description": "Library scan status subtitle after cancellation" - }, - "libraryDownloadsHistoryExcluded": "{count} dans l'historique des téléchargements (exclu de la liste)", - "@libraryDownloadsHistoryExcluded": { - "description": "Library count note for downloaded history items excluded from the local list", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadNativeWorker": "Tâche de téléchargement native", - "@downloadNativeWorker": { - "description": "Setting title for Android native download worker" - }, - "downloadNativeWorkerSubtitle": "Service worker Android en version bêta pour le téléchargement d'extensions", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BÊTA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "extensionServiceStatus": "État du service", - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "extensionServiceHealth": "Santé du service", - "@extensionServiceHealth": { - "description": "Extension capability label for service health checks" - }, - "extensionHealthChecksConfigured": "{count} {count, plural, =1{vérification} other{vérifications}} configurées", - "@extensionHealthChecksConfigured": { - "description": "Extension service health check count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionOauthConnectHint": "Appuyez sur « Se connecter à Spotify » pour remplir ce champ.", - "@extensionOauthConnectHint": { - "description": "Hint for an OAuth login link field before connecting Spotify" - }, - "extensionLastChecked": "Dernière vérification à {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "extensionRefreshStatus": "Actualiser l'état", - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" - }, - "extensionCustomUrlHandling": "Gestion des URL personnalisées", - "@extensionCustomUrlHandling": { - "description": "Extension detail section title for custom URL handling" - }, - "extensionCustomUrlHandlingSubtitle": "Cette extension prend en charge les liens provenant de ces sites", - "@extensionCustomUrlHandlingSubtitle": { - "description": "Extension detail subtitle for custom URL handling" - }, - "extensionCustomUrlHandlingShareHint": "Partagez des liens provenant de ces sites vers SpotiFLAC Mobile et cette extension s'en chargera.", - "@extensionCustomUrlHandlingShareHint": { - "description": "Extension detail hint explaining share-to-app URL handling" - }, - "extensionSettingsCount": "{count} {count, plural, =1{paramètre} other{paramètres}}", - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionHealthOnline": "En ligne", - "@extensionHealthOnline": { - "description": "Extension service health status - online" - }, - "extensionHealthDegraded": "Dégradé", - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" - }, - "extensionHealthOffline": "Hors ligne", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" - }, - "extensionHealthNotConfigured": "Non configuré", - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" - }, - "extensionHealthUnknown": "Inconnu", - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" - }, - "extensionHealthRequired": "requis", - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" - }, - "extensionSettingNotSet": "Non défini", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" - }, - "extensionActionFailed": "L'action a échoué", - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" - }, - "extensionEnterValue": "Saisir une valeur", - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" - }, - "extensionHealthServiceOnline": "Service en ligne", - "@extensionHealthServiceOnline": { - "description": "Tooltip for online extension service" - }, - "extensionHealthServiceDegraded": "Service perturbé", - "@extensionHealthServiceDegraded": { - "description": "Tooltip for degraded extension service" - }, - "extensionHealthServiceOffline": "Service hors ligne", - "@extensionHealthServiceOffline": { - "description": "Tooltip for offline extension service" - }, - "extensionHealthServiceUnknown": "État du service inconnu", - "@extensionHealthServiceUnknown": { - "description": "Tooltip for unknown extension service health" - }, - "audioAnalysisStereo": "Stéréo", - "@audioAnalysisStereo": { - "description": "Audio channel layout label - stereo" - }, - "audioAnalysisMono": "Mono", - "@audioAnalysisMono": { - "description": "Audio channel layout label - mono" - }, - "trackOpenInService": "Ouvrir dans {serviceName}", - "@trackOpenInService": { - "description": "Button label to open a track in a named music service", - "placeholders": { - "serviceName": { - "type": "String" - } - } - }, - "trackLyricsEmbeddedSource": "Intégré", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" - }, - "unknownAlbum": "Album inconnu", - "@unknownAlbum": { - "description": "Fallback album name when metadata is missing" - }, - "unknownArtist": "Artiste inconnu", - "@unknownArtist": { - "description": "Fallback artist name when metadata is missing" - }, - "permissionAudio": "Audio", - "@permissionAudio": { - "description": "Audio permission type label" - }, - "permissionStorage": "Stockage", - "@permissionStorage": { - "description": "Storage permission type label" - }, - "permissionNotification": "Notification", - "@permissionNotification": { - "description": "Notification permission type label" - }, - "errorInvalidFolderSelected": "Dossier non valide sélectionné", - "@errorInvalidFolderSelected": { - "description": "Error when the selected folder is invalid" - }, - "errorCouldNotKeepFolderAccess": "Impossible de conserver l'accès au dossier sélectionné", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "N'importe lequel", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "storeCategoryMetadata": "Métadonnées", - "@storeCategoryMetadata": { - "description": "Store extension category - metadata" - }, - "storeCategoryDownload": "Télécharger", - "@storeCategoryDownload": { - "description": "Store extension category - download" - }, - "storeCategoryUtility": "Utilitaire", - "@storeCategoryUtility": { - "description": "Store extension category - utility" - }, - "storeCategoryLyrics": "Paroles", - "@storeCategoryLyrics": { - "description": "Store extension category - lyrics" - }, - "storeCategoryIntegration": "Intégration", - "@storeCategoryIntegration": { - "description": "Store extension category - integration" - }, - "artistReleases": "Sorties", - "@artistReleases": { - "description": "Section header for all artist releases" - }, - "editMetadataSelectNone": "Aucun", - "@editMetadataSelectNone": { - "description": "Button to clear selected fields for auto-fill" - }, - "queueRetryAllFailed": "{count} tentatives ont échoué", - "@queueRetryAllFailed": { - "description": "Button to retry every failed download in the queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "settingsSaveDownloadHistory": "Enregistrer l'historique des téléchargements", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" - }, - "settingsSaveDownloadHistorySubtitle": "Conserver les téléchargements terminés dans l'historique et la bibliothèque", - "@settingsSaveDownloadHistorySubtitle": { - "description": "Settings switch subtitle for storing completed downloads in history" - }, - "dialogDisableHistoryTitle": "Désactiver l'historique des téléchargements ?", - "@dialogDisableHistoryTitle": { - "description": "Confirmation dialog title shown before disabling download history" - }, - "dialogDisableHistoryMessage": "L'historique actuel sera effacé. Les fichiers téléchargés ne seront pas supprimés.", - "@dialogDisableHistoryMessage": { - "description": "Confirmation dialog message shown before disabling download history" - }, - "dialogDisableAndClear": "Désactiver et effacer", - "@dialogDisableAndClear": { - "description": "Confirmation action to disable download history and clear existing entries" - }, - "openInOtherServices": "Ouvrir dans d'autres services", - "@openInOtherServices": { - "description": "Title and tooltip for finding the current collection in other services" - }, - "shareSheetNoExtensions": "Aucun autre service compatible", - "@shareSheetNoExtensions": { - "description": "Empty state when no extensions can be searched for cross-service links" - }, - "shareSheetNotFound": "Introuvable", - "@shareSheetNotFound": { - "description": "Cross-service share sheet row subtitle when a service has no match" - }, - "shareSheetCopyLink": "Copier le lien", - "@shareSheetCopyLink": { - "description": "Tooltip for copying a cross-service link" - }, - "shareSheetLinkCopied": "Lien {service} copié", - "@shareSheetLinkCopied": { - "description": "Snackbar after copying a cross-service link", - "placeholders": { - "service": {} - } - } + "sectionDebug": "Débogage", + "editMetadataFieldDate": "Date", + "timeHoursAgo": "{count, plural, =1{il y a 1 heure} other{il y a {count} heures}}", + "sectionPerformance": "Performances", + "extensionsSearchWith": "Rechercher avec {providerName}", + "extensionsDownloadPrioritySubtitle": "Définissez l'ordre des services de téléchargement", + "cacheAppDirectoryDesc": "Réponses HTTP, données WebView et autres données temporaires de l'application.", + "sectionData": "Données", + "notifFinalizingTrack": "Finalisation de {trackName}", + "snackbarFileNotFound": "Fichier introuvable", + "extensionQualityOptions": "Options de qualité", + "extensionVerificationBrowserSubtitleExternal": "Ouvrez d'abord les défis dans le navigateur par défaut", + "backupInvalidFile": "Ce fichier n'est pas une sauvegarde SpotiFLAC valide", + "storeRepoDialogTitle": "Répertoire des extensions", + "extensionsSearchProviderDescription": "Choisissez le service que vous souhaitez utiliser pour rechercher des morceaux", + "albumFolderAlbumOnly": "Album uniquement", + "nowPlayingOpenInExternalPlayer": "Ouvrir dans un lecteur externe", + "cueSplitButton": "Diviser en pistes" } diff --git a/lib/l10n/arb/app_hi.arb b/lib/l10n/arb/app_hi.arb index ce8adbfe..1350fc51 100644 --- a/lib/l10n/arb/app_hi.arb +++ b/lib/l10n/arb/app_hi.arb @@ -29,6 +29,14 @@ "@homeSubtitle": { "description": "Subtitle shown below search box" }, + "homeEmptyTitle": "No search providers yet", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", "@homeSupports": { "description": "Info text about supported URL types" @@ -166,14 +174,6 @@ "@optionsDefaultSearchTabSubtitle": { "description": "Subtitle for the preferred default search tab setting" }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, "optionsSwitchBack": "Choose the default search provider to switch back from an extension", "@optionsSwitchBack": { "description": "Hint to switch back from extension search" @@ -226,6 +226,64 @@ "@optionsReplayGainSubtitleOff": { "description": "Subtitle when ReplayGain is disabled" }, + "trackReplayGain": "Rescan ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, "optionsArtistTagMode": "Artist Tag Mode", "@optionsArtistTagMode": { "description": "Setting title for how artist metadata is written into files" @@ -670,6 +728,18 @@ "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, + "setupLanguageTitle": "Choose Language", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" @@ -702,6 +772,18 @@ "@dialogDownload": { "description": "Confirm button in Download All dialog" }, + "previewPlay": "Play preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, "dialogDiscard": "Discard", "@dialogDiscard": { "description": "Dialog button - discard changes" @@ -928,6 +1010,10 @@ "@errorNoTracksFound": { "description": "Error - search returned no results" }, + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, "errorUrlNotRecognized": "Link not recognized", "@errorUrlNotRecognized": { "description": "Error title - URL not handled by any extension or service" @@ -1554,6 +1640,15 @@ "@trackCopyLyrics": { "description": "Action - copy lyrics to clipboard" }, + "trackLyricsSource": "Source: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, "trackLyricsNotAvailable": "Lyrics not available for this track", "@trackLyricsNotAvailable": { "description": "Message when lyrics not found" @@ -1844,6 +1939,30 @@ "@extensionsInstalledSuccess": { "description": "Success message after install" }, + "extensionsInstalledCount": "{count} extensions installed successfully", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", + "@extensionsInstallPartialSuccess": { + "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": "Download Priority", "@extensionsDownloadPriority": { "description": "Setting - download provider order" @@ -1938,15 +2057,23 @@ }, "downloadLossyMp3": "MP3 320kbps", "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" + "description": "Lossy format option - MP3 320kbps" }, "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", "@downloadLossyMp3Subtitle": { "description": "Subtitle for MP3 320kbps lossy option" }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, "downloadLossyOpus256": "Opus 256kbps", "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" + "description": "Lossy format option - Opus 256kbps" }, "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", "@downloadLossyOpus256Subtitle": { @@ -1954,7 +2081,7 @@ }, "downloadLossyOpus128": "Opus 128kbps", "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" + "description": "Lossy format option - Opus 128kbps" }, "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", "@downloadLossyOpus128Subtitle": { @@ -3285,6 +3412,10 @@ "@collectionLoved": { "description": "Custom folder for favorite tracks" }, + "collectionFavoriteArtists": "Favorite Artists", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, "collectionPlaylists": "Playlists", "@collectionPlaylists": { "description": "Custom user playlists folder" @@ -3318,6 +3449,15 @@ } } }, + "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", @@ -3389,6 +3529,14 @@ "@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" @@ -3450,6 +3598,24 @@ } } }, + "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" @@ -3466,6 +3632,14 @@ "@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" @@ -3569,15 +3743,15 @@ }, "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" + "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 naming" + "description": "Subtitle when track artist is used for folder names" }, "lyricsProvidersTitle": "Lyrics Provider Priority", "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "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": { @@ -3637,6 +3811,10 @@ "@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" @@ -3659,12 +3837,175 @@ }, "settingsDonate": "Support Development", "@settingsDonate": { - "description": "Settings menu item - donate" + "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" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "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" + }, + "backupRestoring": "Restoring backup...", + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "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" + }, + "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 store.", + "@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" @@ -3751,11 +4092,11 @@ }, "downloadLocationSubtitle": "Choose where to save your downloaded tracks", "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "description": "Subtitle shown in the download location picker sheet" }, "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "description": "Storage mode option - app-managed folder" }, "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", "@storageModeAppFolderSubtitle": { @@ -3763,7 +4104,7 @@ }, "storageModeSaf": "Custom Folder (SAF)", "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "description": "Storage mode option - Storage Access Framework" }, "storageModeSafSubtitle": "Pick any folder, including SD card", "@storageModeSafSubtitle": { @@ -3771,7 +4112,7 @@ }, "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "description": "Description shown in filename format editor" }, "downloadFilenameInsertTag": "Tap to insert tag:", "@downloadFilenameInsertTag": { @@ -3779,11 +4120,11 @@ }, "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "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 disabled" + "description": "Subtitle when separate singles folder is off" }, "downloadArtistNameFilters": "Artist Name Filters", "@downloadArtistNameFilters": { @@ -3791,135 +4132,159 @@ }, "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" + "description": "Setting to create a subfolder per playlist source" }, "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" + "description": "Subtitle when playlist folder is enabled" }, "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" + "description": "Subtitle when playlist folder is disabled" }, "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" + "description": "Subtitle when folder organization is already set to playlist" }, "downloadSongLinkRegion": "SongLink Region", "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" + "description": "Setting for SongLink region used during fallback resolution" }, "downloadNetworkCompatibilityMode": "Network Compatibility Mode", "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" + "description": "Setting for legacy TLS/network handling" }, "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" + "description": "Subtitle when network compatibility mode is on" }, "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" + "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": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" + "description": "Subtitle when quality picker is disabled due to extension service" }, "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" + "description": "Legacy info shown when a provider does not expose quality options" }, "downloadEmbedLyricsDisabled": "Enable metadata embedding first", "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" }, "downloadNeteaseIncludeTranslation": "Netease: Include Translation", "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" + "description": "Setting to include translated lyrics from Netease" }, "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" + "description": "Subtitle when Netease translation is on" }, "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" + "description": "Subtitle when Netease translation is off" }, "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" + "description": "Setting to include romanized lyrics from Netease" }, "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" + "description": "Subtitle when Netease romanization is on" }, "downloadNeteaseIncludeRomanizationDisabled": "No romanization", "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" + "description": "Subtitle when Netease romanization is off" }, "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" + "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 word-by-word is enabled" + "description": "Subtitle when multi-person lyrics is on" }, "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" + "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 title for Musixmatch language preference" + "description": "Setting for Musixmatch lyrics translation language" }, "downloadMusixmatchLanguageAuto": "Auto (original language)", "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" + "description": "Subtitle when no language is set" }, "downloadFilterContributing": "Filter Contributing Artists", "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" + "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 enabled" + "description": "Subtitle when contributing artist filter is on" }, "downloadFilterContributingDisabled": "Full Album Artist string used", "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" + "description": "Subtitle when contributing artist filter is off" }, "downloadProvidersNoneEnabled": "No providers enabled", "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" + "description": "Shown when no lyrics providers are active" }, "downloadMusixmatchLanguageCode": "Language code", "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" + "description": "Label for Musixmatch language input field" }, "downloadMusixmatchLanguageHint": "e.g. en, de, ja", "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" + "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 the Musixmatch language picker" + "description": "Description in Musixmatch language picker" }, "downloadMusixmatchAuto": "Auto", "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" + "description": "Button to clear Musixmatch language (use auto)" }, "downloadNetworkAnySubtitle": "Use WiFi or mobile data", "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" + "description": "Subtitle for any-network option in picker" }, "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" + "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 the SongLink region picker" + "description": "Description in SongLink region picker" }, "snackbarUnsupportedAudioFormat": "Unsupported audio format", "@snackbarUnsupportedAudioFormat": { @@ -4143,6 +4508,18 @@ "@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" @@ -4175,6 +4552,30 @@ "@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" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, "audioAnalysisSamples": "Samples", "@audioAnalysisSamples": { "description": "Total samples metric label" @@ -4206,12 +4607,20 @@ }, "extensionsHomeFeedAuto": "Auto", "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" + "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", @@ -4374,6 +4783,31 @@ } } }, + "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" @@ -4493,271 +4927,6 @@ "@notifUpdateFailedBody": { "description": "Notification body when app update download fails" }, - "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" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "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" - }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "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" - } - } - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "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" - }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "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" - }, - "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" - } - } - }, "searchTracks": "Tracks", "@searchTracks": { "description": "Search filter label - tracks" @@ -5070,6 +5239,86 @@ } } }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "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" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "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" @@ -5537,5 +5786,423 @@ "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": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@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" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "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" + }, + "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" } -} +} \ No newline at end of file diff --git a/lib/l10n/arb/app_id.arb b/lib/l10n/arb/app_id.arb index e3a74bc2..dba80465 100644 --- a/lib/l10n/arb/app_id.arb +++ b/lib/l10n/arb/app_id.arb @@ -1,1664 +1,51 @@ { "@@locale": "id", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Beranda", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Pustaka", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Pengaturan", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Repositori", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Beranda", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Paste a supported URL or search by name", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeEmptyTitle": "Belum ada penyedia pencarian", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Instal ekstensi untuk melanjutkan.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "homeSupports": "Mendukung: URL Track, Album, Playlist, Artis", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "Terbaru", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyFilterAll": "Semua", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Album", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Single", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historySearchHint": "Cari riwayat...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Pengaturan", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "Unduhan", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "Tampilan", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "Opsi", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Ekstensi", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "Tentang", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Unduhan", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Tampilkan pemilih kualitas untuk setiap unduhan", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Format Nama File", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadFolderOrganization": "Organisasi Folder", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Tampilan", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "Sistem", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Terang", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Gelap", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Warna Dinamis", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Gunakan warna dari wallpaper Anda", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "Tampilan Riwayat", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Daftar", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Kisi", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Opsi", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "Provider Utama", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Layanan yang digunakan untuk mencari berdasarkan nama lagu atau album", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Menggunakan ekstensi: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsDefaultSearchTab": "Default Search Tab", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Pilih tab mana yang terbuka terlebih dahulu untuk hasil pencarian baru.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Cadangan Otomatis", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Coba layanan lain jika unduhan gagal", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Gunakan Provider Ekstensi", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Sematkan Lirik", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Simpan lirik yang disinkronkan bersama dengan lagu yang Anda unduh", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "Cover Kualitas Maksimal", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Unduh cover art resolusi tertinggi", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsExtensionStore": "Extension Repo", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "Periksa Pembaruan", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "Beritahu saat versi baru tersedia", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "optionsUpdateChannel": "Saluran Pembaruan", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "optionsUpdateChannelStable": "Hanya rilis stabil", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "optionsUpdateChannelPreview": "Dapatkan rilis preview", - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "optionsUpdateChannelWarning": "Preview mungkin mengandung bug atau fitur belum lengkap", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "optionsClearHistory": "Hapus Riwayat Unduhan", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "optionsClearHistorySubtitle": "Hapus semua lagu dari riwayat", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "optionsDetailedLogging": "Log Detail", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "optionsDetailedLoggingOn": "Log detail sedang direkam", - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "optionsDetailedLoggingOff": "Aktifkan untuk laporan bug", - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "optionsSpotifyCredentials": "Kredensial Spotify", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "ID Klien: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Diperlukan - ketuk untuk mengatur", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify memerlukan kredensial API Anda sendiri. Dapatkan gratis dari developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Pencarian Spotify akan dihentikan pada 3 Maret 2026 karena perubahan API Spotify. Silakan beralih ke Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Ekstensi", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Nonaktif", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Versi {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "oleh {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Copot", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Extension Repo", - "@storeTitle": { - "description": "Store screen title" - }, - "storeLoadError": "Failed to load repository", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeSearch": "Cari ekstensi...", - "@storeSearch": { - "description": "Store search placeholder" - }, - "storeInstall": "Pasang", - "@storeInstall": { - "description": "Install extension button" - }, - "storeInstalled": "Terpasang", - "@storeInstalled": { - "description": "Already installed badge" - }, - "storeUpdate": "Perbarui", - "@storeUpdate": { - "description": "Update available button" - }, - "aboutTitle": "Tentang", - "@aboutTitle": { - "description": "About page title" - }, - "aboutContributors": "Kontributor", - "@aboutContributors": { - "description": "Section for contributors" - }, - "aboutMobileDeveloper": "Pengembang versi mobile", - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "aboutOriginalCreator": "Pembuat SpotiFLAC asli", - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "aboutLogoArtist": "Seniman berbakat yang membuat logo aplikasi kita yang indah!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "aboutTranslators": "Penerjemah", - "@aboutTranslators": { - "description": "Section for translators" - }, - "aboutSpecialThanks": "Terima Kasih Khusus", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "aboutLinks": "Tautan", - "@aboutLinks": { - "description": "Section for external links" - }, - "aboutMobileSource": "Kode sumber mobile", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "Kode sumber PC", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Laporkan masalah", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Laporkan masalah yang Anda temui", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Permintaan fitur", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Sarankan fitur baru untuk aplikasi", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Saluran Telegram", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Pengumuman dan pembaruan", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Komunitas Telegram", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Berbincang dengan pengguna lain", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Sosial", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "Aplikasi", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Versi", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Pencipta I Don't Have Spotify (IDHS). Penyelesai tautan cadangan yang menyelamatkan keadaan!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Album", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Single & EP", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Kompilasi", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Populer", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} pendengar bulanan", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "trackMetadataService": "Layanan", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "trackMetadataPlay": "Putar", - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "trackMetadataShare": "Bagikan", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "trackMetadataDelete": "Hapus", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "setupGrantPermission": "Berikan Izin", - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "setupSkip": "Lewati untuk sekarang", - "@setupSkip": { - "description": "Skip current step button" - }, - "setupStorageAccessRequired": "Akses Penyimpanan Diperlukan", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "setupStorageAccessMessageAndroid11": "Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Buka Pengaturan", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Izin ditolak. Harap berikan semua izin untuk melanjutkan.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "Izin {permissionType} Diperlukan", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "Izin {permissionType} diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Gunakan Folder Default?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Gunakan Default", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Lokasi Unduhan", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "Folder Documents Aplikasi", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Pilih dari Files", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Pilih lokasi iCloud atau lainnya", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive tidak didukung. Silakan gunakan folder Dokumen di aplikasi.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Unduh lagu Spotify dalam format FLAC", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStorageGranted": "Izin Penyimpanan Diberikan!", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "Izin Penyimpanan Diperlukan", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "Izin Notifikasi Diberikan!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "Aktifkan Notifikasi", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupFolderChoose": "Pilih Folder Unduhan", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "Pilih folder tempat musik yang diunduh akan disimpan.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupSelectFolder": "Pilih Folder", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupEnableNotifications": "Aktifkan Notifikasi", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupNotificationBackgroundDescription": "Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "Lewati untuk sekarang", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupNext": "Lanjut", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Mulai", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupAllowAccessToManageFiles": "Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "dialogCancel": "Batal", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogSave": "Simpan", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "Hapus", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "Coba Lagi", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClear": "Hapus", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogDone": "Selesai", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "Impor", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDiscard": "Buang", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "Hapus", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "Copot", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "Buang Perubahan?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogClearAll": "Hapus Semua", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogRemoveExtension": "Hapus Ekstensi", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "Copot Ekstensi?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "Apakah Anda yakin ingin menghapus {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "Hapus Riwayat", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "Hapus yang Dipilih", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari riwayat?\n\nIni juga akan menghapus file dari penyimpanan.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Impor Playlist", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "Ditemukan {count} lagu di CSV. Tambahkan ke antrian unduhan?", - "csvImportTracks": "{count} trek dari CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "Menambahkan \"{trackName}\" ke antrian", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAddedTracksToQueue": "Menambahkan {count} lagu ke antrian", - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAlreadyDownloaded": "\"{trackName}\" sudah diunduh", - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" sudah ada di perpustakaan Anda", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "Riwayat dihapus", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "Kredensial disimpan", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Kredensial dihapus", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "Menghapus {count} {count, plural, =1{lagu} other{lagu}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Tidak dapat membuka file: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Harap isi semua field", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Lihat Antrian", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "URL {platform} disalin ke clipboard", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "File tidak ditemukan", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Harap pilih file .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Prioritas provider disimpan", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Prioritas provider metadata disimpan", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} terpasang.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarExtensionUpdated": "{extensionName} diperbarui.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarFailedToInstall": "Gagal memasang ekstensi", - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "snackbarFailedToUpdate": "Gagal memperbarui ekstensi", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "errorRateLimited": "Dibatasi", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "Tidak ada lagu ditemukan", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "errorUrlNotRecognized": "Tautan tidak dikenali", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "Tautan ini tidak didukung. Pastikan URL sudah benar dan ekstensi yang kompatibel telah terpasang.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Konten dari tautan ini gagal dimuat. Silakan coba lagi.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "Tidak dapat memuat {item}: sumber ekstensi tidak ada", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Jeda", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Lanjutkan", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Batal", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Pilih Semua", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Batal Pilih", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Hapus Kredensial", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Simpan Kredensial", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} dipilih", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Semua lagu dipilih", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Pilih lagu untuk dihapus", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Mengambil metadata... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "Membaca CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Lagu", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Artis", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Album", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Playlist", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "tooltipPlay": "Putar", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Format Nama File", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Tampilkan tag lanjutan", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Aktifkan tag yang diformat untuk padding trek dan pola tanggal", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "Tidak ada", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "Berdasarkan Daftar Putar", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Setiap daftar putar memerlukan folder terpisah", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "Berdasarkan Artis", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "Berdasarkan Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Berdasarkan Artis & Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Atur file yang diunduh ke dalam folder", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Semua file di folder unduhan", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Folder terpisah untuk setiap artis", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Folder terpisah untuk setiap album", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Folder bersarang untuk artis dan album", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Pembaruan Tersedia", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Nanti", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Memulai unduhan...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Unduhan gagal", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Gagal mengunduh pembaruan", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Versi baru sudah siap", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Saat ini", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "Baru", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "Mengunduh...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "Yang Baru", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "Unduh & Pasang", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Jangan ingatkan", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "Prioritas Provider", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerPriorityFallbackExtensionsTitle": "Extension Fallback", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Ekstensi", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Prioritas Metadata", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "Tidak ada batas rate", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Mungkin dibatasi rate", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Log", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopied": "Log disalin ke clipboard", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Cari log...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Level", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filter", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Bagikan log", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "Hapus log", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "Hapus Log", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "Apakah Anda yakin ingin menghapus semua log?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "Filter log berdasarkan tingkat keparahan", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "Belum ada log", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Log akan muncul di sini saat Anda menggunakan aplikasi", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "Entri ({count} difilter)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "Entri ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Kredensial Spotify", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Masukkan Client ID dan Secret Anda untuk menggunakan kuota aplikasi Spotify Anda sendiri.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "ID Klien", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Tempel Client ID", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Rahasia Klien", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Tempel Client Secret", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "channelStable": "Stabil", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "channelPreview": "Pratinjau", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "sectionSearchSource": "Sumber Pencarian", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "sectionDownload": "Unduhan", - "@sectionDownload": { - "description": "Settings section header" - }, - "sectionPerformance": "Performa", - "@sectionPerformance": { - "description": "Settings section header" - }, - "sectionApp": "Aplikasi", - "@sectionApp": { - "description": "Settings section header" - }, - "sectionData": "Data", - "@sectionData": { - "description": "Settings section header" - }, - "sectionDebug": "Debug", - "@sectionDebug": { - "description": "Settings section header" - }, - "sectionService": "Layanan", - "@sectionService": { - "description": "Settings section header" - }, - "sectionAudioQuality": "Kualitas Audio", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "sectionFileSettings": "Pengaturan File", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "sectionLyrics": "Lirik", - "@sectionLyrics": { - "description": "Settings section header" - }, - "lyricsMode": "Mode Lirik", - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "lyricsModeDescription": "Pilih cara lirik disimpan bersama unduhan Anda", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "Sematkan dalam file", - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "lyricsModeEmbedSubtitle": "Lirik tersimpan di dalam metadata FLAC", - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "lyricsModeExternal": "File .lrc eksternal", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "lyricsModeExternalSubtitle": "File .lrc terpisah untuk pemutar musik seperti Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "Keduanya", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Sematkan dan simpan file .lrc", - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "sectionColor": "Warna", - "@sectionColor": { - "description": "Settings section header" - }, - "sectionTheme": "Tema", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Tata Letak", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Bahasa", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "Bahasa Aplikasi", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "settingsAppearanceSubtitle": "Tema, warna, tampilan", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Kelola provider unduhan", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "Lihat log aplikasi untuk debugging", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Memuat link yang dibagikan...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Tekan kembali sekali lagi untuk keluar", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Unduh Semua ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Salin lokasi file", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Hapus dari perangkat", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Muat Lirik", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Metadata", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Info File", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Lirik", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "File tidak ditemukan", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Buka di Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Buka di Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Nama lagu", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Artis", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Artis album", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Album", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Nomor lagu", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Nomor disc", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Durasi", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Kualitas audio", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Tanggal rilis", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Genre", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Lebel", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Hak cipta", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "Diunduh", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Salin lirik", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsNotAvailable": "Lirik tidak tersedia untuk lagu ini", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsTimeout": "Permintaan timeout. Coba lagi nanti.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Gagal memuat lirik", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Sematkan Lirik", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Lirik berhasil disematkan", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Lagu instrumental", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "Disalin ke clipboard", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Hapus dari perangkat?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "Hari ini", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Kemarin", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "{count} hari lalu", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "{count} minggu lalu", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "{count} bulan lalu", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "Semua", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Metadata", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Unduhan", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Utilitas", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Lirik", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Integrasi", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Hapus filter", "@storeClearFilters": { "description": "Button to clear all filters" }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" + "cacheCleanupUnused": "Cleanup unused data", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, - "extensionAuthor": "Pembuat", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Terjadi kesalahan", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Kemampuan", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Provider Metadata", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Provider Unduhan", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Provider Lirik", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "Penanganan URL", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Opsi Kualitas", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Hook Pasca-Pemrosesan", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Izin", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Pengaturan", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Hapus Ekstensi", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Diperbarui", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Versi App Minimum", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Pencocokan Lagu Kustom", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Pasca-Pemrosesan", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} hook tersedia", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", + "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", "placeholders": { "count": { "type": "int" } } }, - "extensionPatternsCount": "{count} pola", + "folderOrganizationNone": "Tidak ada", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, "@extensionPatternsCount": { "description": "URL patterns count", "placeholders": { @@ -1667,389 +54,263 @@ } } }, - "extensionStrategy": "Strategi: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "libraryAutoScanOff": "Off", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "strategy": { + "service": {} + } + }, + "providerPriorityFallbackExtensionsDescription": "Pilih ekstensi unduhan terpasang mana yang dapat digunakan selama fallback otomatis.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { "type": "String" } } }, - "extensionsProviderPrioritySection": "Prioritas Provider", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Ekstensi Terpasang", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "Tidak ada ekstensi terpasang", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Pasang file .spotiflac-ext untuk menambahkan provider baru", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Pasang Ekstensi", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "Ekstensi berhasil dipasang", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsDownloadPriority": "Prioritas Unduhan", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Atur urutan layanan unduhan", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "Tidak ada ekstensi dengan provider unduhan", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Prioritas Metadata", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Atur urutan sumber pencarian & metadata", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Tidak ada ekstensi dengan provider metadata", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Provider Pencarian", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Tidak ada ekstensi dengan pencarian kustom", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Pilih layanan yang digunakan untuk mencari lagu", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Pencarian kustom", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Error memuat ekstensi", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Lossless", - "@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-bit / hingga 96kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / hingga 192kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "qualityNote": "Kualitas sebenarnya tergantung ketersediaan lagu dari layanan", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Tanya Sebelum Unduh", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Direktori Unduhan", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Folder Singles Terpisah", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Struktur Folder Album", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Pilih struktur folder album", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Gunakan Artis Album untuk folder", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadUsePrimaryArtistOnly": "Hanya artis utama untuk folder", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Artis unggulan dihapus dari nama folder (misalnya Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Nama lengkap artis digunakan untuk nama folder", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Pilih Kualitas", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Unduh Dari", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "AMOLED Gelap", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Latar belakang hitam murni", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Hapus Semua", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Apakah Anda yakin ingin menghapus semua unduhan?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Unduhan yang gagal diekspor otomatis", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Simpan unduhan yang gagal ke file TXT secara otomatis", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Jaringan Unduhan", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "WiFi + Data Seluler", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "Hanya WiFi", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Pilih jaringan mana yang akan digunakan untuk mengunduh. Jika diatur ke Hanya WiFi, unduhan akan berhenti sementara dan menggunakan data seluler.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Artis / Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Albums/Nama Artis/Nama Album/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Artis / [Tahun] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Nama Artis/[2005] Nama Album/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Album Saja", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Albums/Nama Album/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Tahun] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Albums/[2005] Nama Album/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Artis / Album + Singel", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Artis/Album/ dan Artis/Single/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "Hapus yang Dipilih", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", + "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", "placeholders": { "count": { "type": "int" } } }, - "downloadedAlbumSelectedCount": "{count} dipilih", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "downloadedAlbumAllSelected": "Semua lagu dipilih", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" + "@logSearchHint": { + "description": "Log search placeholder" }, - "downloadedAlbumTapToSelect": "Ketuk lagu untuk memilih", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "downloadedAlbumDeleteCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" } } }, - "downloadedAlbumSelectToDelete": "Pilih lagu untuk dihapus", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" }, - "recentTypeArtist": "Artis", - "@recentTypeArtist": { - "description": "Recent access item type - artist" + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" }, - "recentTypeAlbum": "Album", - "@recentTypeAlbum": { - "description": "Recent access item type - album" + "@trackGenre": { + "description": "Metadata label - music genre" }, "recentTypeSong": "Lagu", "@recentTypeSong": { "description": "Recent access item type - song/track" }, - "recentTypePlaylist": "Daftar putar", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" + "logShareLogs": "Bagikan log", + "@logShareLogs": { + "description": "Share button tooltip" }, - "recentEmpty": "Belum ada item terbaru", - "@recentEmpty": { - "description": "Empty state text for recent access list" + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" }, - "recentShowAllDownloads": "Tampilkan Semua Unduhan", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "extensionsInstallButton": "Pasang Ekstensi", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, - "recentPlaylistInfo": "Daftar Putar: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", + "replayGainBatchSuccess": "ReplayGain ditambahkan ke {success} dari {total} trek", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" + "success": { + "type": "int" + }, + "total": { + "type": "int" } } }, - "discographyDownload": "Unduh Diskografi", - "@discographyDownload": { - "description": "Button - download artist discography" + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" }, - "discographyDownloadAll": "Unduh Semua", - "@discographyDownloadAll": { - "description": "Option - download entire discography" + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" }, - "discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", + "extensionsNoExtensions": "Tidak ada ekstensi terpasang", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "CUE split failed", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Tempel URL yang didukung atau cari berdasarkan nama", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, + "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", "placeholders": { "count": { "type": "int" }, - "albumCount": { - "type": "int" + "format": { + "type": "String" } } }, - "discographyAlbumsOnly": "Albums Only", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" }, - "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Tanggal rilis (Terlama)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "Pencipta I Don't Have Spotify (IDHS). Penyelesai tautan cadangan yang menyelamatkan keadaan!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "Warna", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Cover image cache", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Split CUE Album", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Cleared: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" + "target": { + "type": "String" } } }, - "discographySinglesOnly": "Singles & EPs Only", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "Harap pilih file .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", "@discographySinglesOnlySubtitle": { @@ -2063,1148 +324,49 @@ } } }, - "discographySelectAlbums": "Select Albums...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" + "optionsExtensionStore": "Repositori Ekstensi", + "@optionsExtensionStore": { + "description": "Show/hide store tab" }, - "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", + "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" } } }, - "discographyDownloadSelected": "Download Selected", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" }, - "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" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Scan Library", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Scan for audio files", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Clear Library", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Clear Library", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "About Local Library", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Memindai koleksi musik yang sudah ada untuk mendeteksi duplikat saat mengunduh. Mendukung format FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF, dan APE. Metadata dibaca dari tag file jika tersedia.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScanned": "Last scanned: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "In Library", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Selected folder does not exist", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Local", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "All", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Downloaded", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Local", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filters", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Lossy", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterSort": "Sort", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "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": "Selamat Datang di SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Mari kita pelajari cara mengunduh musik favorit Anda dalam kualitas lossless. Tutorial singkat ini akan menunjukkan dasar-dasarnya.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Unduh musik dari Spotify, Deezer, atau tempel URL yang didukung", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Penyematan metadata, sampul album, dan lirik secara otomatis", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Menemukan Musik", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "Ada dua cara mudah untuk menemukan musik yang ingin Anda unduh.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Mengunduh Musik", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Mengunduh musik itu mudah dan cepat. Begini cara kerjanya.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Perpustakaan Anda", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "Semua musik yang Anda unduh tersusun rapi di tab Perpustakaan.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "View download progress and queue in the Library tab", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Tap any track to play it with your music player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Switch between list and grid view for better browsing", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Add new download providers or search sources", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Set default audio quality and format preferences", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Force Full Scan", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Storage & Cache", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "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" - }, - "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" - }, - "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "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" - }, - "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" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@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" - } - } - }, - "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "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" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "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" - } - } - }, - "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" - }, - "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "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" - }, - "collectionPlaylists": "Playlists", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "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" - }, - "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "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" - } - } - }, - "collectionPlaylistCreated": "Playlist created", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "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" - }, - "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist deleted", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "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" - }, - "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" - }, - "collectionRemoved": "\"{trackName}\" removed", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "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" - } - } - }, - "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" + "discographySinglesOnly": "Singles & EPs Only", + "@discographySinglesOnly": { + "description": "Option - download only singles" }, - "collectionPlaylistChangeCover": "Change cover image", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" }, - "collectionPlaylistRemoveCover": "Remove cover image", - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" }, - "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" }, - "selectionShareNoFiles": "No shareable files found", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" }, "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", "@selectionConvertCount": { @@ -3215,41 +377,126 @@ } } }, - "selectionConvertNoConvertible": "No convertible tracks selected", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" }, - "selectionBatchConvertConfirmTitle": "Batch Convert", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" }, - "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", + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, - "selectionBatchConvertProgress": "Converting {current} of {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Saluran Telegram", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" + "discNumber": { + "type": "int", + "example": "1" } } }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "Hook Pasca-Pemrosesan", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "Unduhan", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "Hapus yang Dipilih", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3265,1329 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} diunduh", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "downloadSingleFilenameFormat": "Format Nama Berkas Tunggal", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Pola nama file untuk single dan EP. Menggunakan tag yang sama dengan format album.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Pindai kenyaringan dan sematkan tag ReplayGain (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Dinonaktifkan: tidak ada tag normalisasi kenyaringan", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Mode Tag Artis", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Pilih bagaimana beberapa artis dicantumkan dalam tag yang disematkan.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Nilai gabungan tunggal", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Tuliskan satu nilai ARTIS seperti \"Artis A, Artis B\" untuk kompatibilitas pemain maksimal.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Tag terpisah untuk FLAC/Opus", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Tulis satu tag artis per artis untuk FLAC dan Opus; MP3 dan M4A tetap tergabung.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "dialogDownload": "Download", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "searchSortTitle": "Sort Results", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Default", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Title (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Title (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Artist (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Artist (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Duration (Shortest)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Duration (Longest)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Release Date (Oldest)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Release Date (Newest)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "trackLyricsNotInFile": "No lyrics found in this file", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Fetch from Online", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "storeAddRepoTitle": "Add Extension Repository", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "Repository URL", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Add Repository", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Change repository", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Extension Repository", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Current repository:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "New Repository URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "No extensions found", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Lossy Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Lossy 320kbps Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Every app open", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Weekly", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryFilterMetadata": "Metadata", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Missing year", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "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" - }, - "trackReEnrichFieldsTitle": "Fields to update", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "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" - }, - "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": { "type": "String" } } }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "@logFilterLevel": { + "description": "Filter by log level" }, - "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" + "sectionTheme": "Tema", + "@sectionTheme": { + "description": "Settings section header" }, - "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" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "lyricsProvidersEnabledSection": "Enabled ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "lyricsProvidersDisabledSection": "Disabled ({count})", - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "lyricsProvidersSaved": "Lyrics provider priority saved", - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music 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" - }, - "settingsDonateSubtitle": "Buy the developer a coffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "settingsBackup": "Cadangkan & Pulihkan", - "settingsBackupSubtitle": "Pindahkan pustaka, riwayat, dan pengaturan ke perangkat baru", - "backupTitle": "Cadangkan & Pulihkan", - "backupExportSectionTitle": "Buat cadangan", - "backupExportSectionDescription": "Simpan pengaturan, riwayat unduhan, lagu disukai, wishlist, artis favorit, dan playlist ke dalam satu file yang bisa kamu simpan atau pindahkan ke ponsel lain.", - "backupExportButton": "Buat file cadangan", - "backupImportSectionTitle": "Pulihkan cadangan", - "backupImportSectionDescription": "Pilih file cadangan untuk memulihkan data. Ini akan menggantikan pengaturan, riwayat, dan pustaka di perangkat ini.", - "backupImportButton": "Pilih file cadangan", - "backupCreating": "Membuat cadangan...", - "backupCreated": "Cadangan berhasil dibuat", - "backupCreateFailed": "Gagal membuat cadangan", - "backupEmpty": "Belum ada data untuk dicadangkan", - "backupRestoreConfirmTitle": "Pulihkan cadangan ini?", - "backupRestoreConfirmMessage": "Ini akan menggantikan pengaturan, riwayat unduhan, lagu disukai, wishlist, dan playlist saat ini dengan isi cadangan. Tindakan ini tidak bisa dibatalkan.", - "backupRestoreConfirmButton": "Pulihkan", - "backupRestoring": "Memulihkan cadangan...", - "backupRestored": "Cadangan berhasil dipulihkan", - "backupRestoreFailed": "Gagal memulihkan cadangan", - "backupInvalidFile": "File ini bukan cadangan SpotiFLAC yang valid", - "backupRestoreRestartHint": "Mulai ulang aplikasi untuk memastikan semua perubahan diterapkan.", - "backupContentsTitle": "Isi cadangan", - "backupContentsSettings": "Pengaturan aplikasi", - "backupContentsHistory": "{count} item riwayat", - "@backupContentsHistory": { - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsLiked": "{count} lagu disukai", - "@backupContentsLiked": { - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsWishlist": "{count} lagu di wishlist", - "@backupContentsWishlist": { - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlist}}", - "@backupContentsPlaylists": { - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsArtists": "{count, plural, =1{1 artis favorit} other{{count} artis favorit}}", - "@backupContentsArtists": { - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extension}}", - "@backupContentsExtensions": { - "placeholders": { - "count": { - "type": "int" - } - } - }, - "backupIncludeSecrets": "Sertakan kredensial extension", - "backupIncludeSecretsDescription": "Token dan API key dari extension akan ikut disimpan ke file cadangan. Jaga kerahasiaan file-nya. Jika dimatikan, kamu perlu memasukkannya lagi setelah pemulihan.", - "backupExtensionsRestoreFailed": "{count} extension gagal dipasang ulang. Pasang manual dari store.", - "@backupExtensionsRestoreFailed": { - "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 text in Android download location bottom sheet" - }, - "storageModeAppFolder": "App Folder (Recommended)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app 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 - use Android SAF picker" - }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" - }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" - }, - "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 enabled" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" - }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadAllowLocalNetwork": "Izinkan Akses Jaringan Lokal", - "@downloadAllowLocalNetwork": { - "description": "Setting title for allowing requests to private/local network targets" - }, - "downloadAllowLocalNetworkEnabled": "Permintaan ke alamat lokal/privat diizinkan (untuk proxy lokal atau DNS kustom)", - "@downloadAllowLocalNetworkEnabled": { - "description": "Subtitle when allow local network access is on" - }, - "downloadAllowLocalNetworkDisabled": "Alamat lokal/privat diblokir demi keamanan", - "@downloadAllowLocalNetworkDisabled": { - "description": "Subtitle when allow local network access is off" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Auto", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the 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": "Select fields to fill automatically from online metadata", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "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" - } - } - }, - "queueDownloadedHeader": "Downloaded", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Search with {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "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": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto 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" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Cancel download?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Keep", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "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", + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Failed to load album", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Failed to load playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "Tidak ada lagu ditemukan", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Failed to load artist", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "Prioritas Provider", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Download Progress", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Shows download progress for tracks", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Library Scan", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Shows local library scan progress", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "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" - } - } - }, - "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", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "Hapus dari perangkat?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4602,1186 +653,36 @@ } } }, - "notifUpdateReady": "Update Ready", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Artis unggulan dihapus dari nama folder (misalnya Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "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" - }, - "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" + "setupGetStarted": "Mulai", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "Tata Letak", + "@sectionLayout": { + "description": "Settings section header" }, - "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" - }, - "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" - }, - "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": {} - } - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "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" - } - } - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "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" - }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "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" - }, - "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 CSV", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV 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" - }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "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" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "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" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, "queueFinalizingDownload": "Finalizing download", "@queueFinalizingDownload": { "description": "Accessibility label for a queue item that is finalizing" }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "queueDownloadCompleted": "Download completed", - "@queueDownloadCompleted": { - "description": "Accessibility label for completed download state in queue" - }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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" - }, - "libraryPlayback": "Pemutaran", - "@libraryPlayback": { - "description": "Section header for playback settings in library settings" - }, - "libraryExternalPlayer": "Pemutar eksternal", - "@libraryExternalPlayer": { - "description": "Setting option to use an external music player" - }, - "libraryExternalPlayerSubtitle": "Disarankan untuk mendengarkan, kualitas terbaik, pemutaran tanpa jeda, EQ, dan dukungan format lebih luas", - "@libraryExternalPlayerSubtitle": { - "description": "Subtitle for external player option" - }, - "libraryBuiltInPreviewPlayer": "Pemutar pratinjau bawaan", - "@libraryBuiltInPreviewPlayer": { - "description": "Setting option to use the built-in preview player" - }, - "libraryBuiltInPreviewPlayerSubtitle": "Hanya untuk pratinjau lokal cepat di dalam SpotiFLAC Mobile, tidak disarankan untuk mendengarkan secara rutin", - "@libraryBuiltInPreviewPlayerSubtitle": { - "description": "Subtitle for built-in preview player option" - }, - "libraryBuiltInPlayerInfo": "Pemutar bawaan adalah alat pratinjau untuk memeriksa trek lokal dengan cepat. Gunakan pemutar musik eksternal untuk mendengarkan sebenarnya.", - "@libraryBuiltInPlayerInfo": { - "description": "Info note explaining the built-in player is for previews only" - }, - "nowPlayingTitle": "Sedang Diputar", - "@nowPlayingTitle": { - "description": "Title for the now playing screen" - }, - "nowPlayingNothingPlaying": "Tidak ada yang diputar", - "@nowPlayingNothingPlaying": { - "description": "Empty state when no track is currently playing" - }, - "nowPlayingMinimize": "Minimalkan", - "@nowPlayingMinimize": { - "description": "Tooltip for minimizing the now playing screen" - }, - "nowPlayingUpNext": "Berikutnya", - "@nowPlayingUpNext": { - "description": "Title for the playback queue sheet" - }, - "nowPlayingDetails": "Detail", - "@nowPlayingDetails": { - "description": "Menu item and section title for track metadata details" - }, - "nowPlayingOpenInExternalPlayer": "Buka di pemutar eksternal", - "@nowPlayingOpenInExternalPlayer": { - "description": "Menu item to open the current track in an external player" - }, - "nowPlayingTabPlayer": "Pemutar", - "@nowPlayingTabPlayer": { - "description": "Tab label for the player view" - }, - "nowPlayingTabLyrics": "Lirik", - "@nowPlayingTabLyrics": { - "description": "Tab label for the lyrics view" - }, - "nowPlayingNoLyrics": "Tidak ada lirik di file ini", - "@nowPlayingNoLyrics": { - "description": "Empty state when the playing file has no embedded lyrics" - }, - "nowPlayingLibraryEmpty": "Perpustakaan Anda kosong", - "@nowPlayingLibraryEmpty": { - "description": "Snackbar when shuffle library is requested but library has no tracks" - }, - "nowPlayingShuffleLibraryFailed": "Tidak dapat mengacak perpustakaan: {error}", - "@nowPlayingShuffleLibraryFailed": { - "description": "Snackbar when shuffling the library fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "nowPlayingShuffleOn": "Acak aktif", - "@nowPlayingShuffleOn": { - "description": "Tooltip when shuffle mode is enabled" - }, - "nowPlayingPlayInOrder": "Putar berurutan", - "@nowPlayingPlayInOrder": { - "description": "Tooltip when shuffle mode is disabled" - }, - "nowPlayingShuffleLibrary": "Acak perpustakaan", - "@nowPlayingShuffleLibrary": { - "description": "Button label to shuffle and play the entire local library" - }, - "nowPlayingQueueEmpty": "Antrean kosong", - "@nowPlayingQueueEmpty": { - "description": "Empty state when the playback queue has no items" - }, - "nowPlayingNoMetadata": "Metadata tidak tersedia", - "@nowPlayingNoMetadata": { - "description": "Empty state when track metadata cannot be loaded" - }, - "announcementUnableToOpenLink": "Tidak dapat membuka tautan. Silakan coba lagi.", - "@announcementUnableToOpenLink": { - "description": "Snackbar shown when an announcement CTA link cannot be opened" - }, - "trackConvertLosslessOutputWithCap": "Output lossless dengan batas {quality}", - "@trackConvertLosslessOutputWithCap": { - "description": "Hint shown when lossless conversion will cap bit depth or sample rate", - "placeholders": { - "quality": { - "type": "String" - } - } - }, - "trackConvertConfirmMessageLosslessCapped": "Konversi dari {sourceFormat} ke {targetFormat} ({quality})?\n\nOutput tetap codec lossless, tetapi kedalaman bit/sample rate akan dibatasi. File asli akan dihapus setelah konversi.", - "@trackConvertConfirmMessageLosslessCapped": { - "description": "Confirmation dialog message for capped lossless conversion of a single file", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "quality": { - "type": "String" - } - } - }, - "selectionBatchConvertConfirmMessageLosslessCapped": "Konversi {count} {count, plural, =1{trek} other{trek}} ke {format} ({quality})?\n\nOutput tetap codec lossless, tetapi kedalaman bit/sample rate akan dibatasi. File asli akan dihapus setelah konversi.", - "@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", @@ -5797,104 +698,2013 @@ } } }, - "aboutPaxsenixSubtitle": "Proxy lirik untuk Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, dan Genius", - "@aboutPaxsenixSubtitle": { - "description": "Subtitle for Paxsenix special thanks entry on the about page" + "extensionsMetadataPriority": "Prioritas Metadata", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" }, - "snackbarPlayingNext": "Memutar berikutnya", - "@snackbarPlayingNext": { - "description": "Snackbar when a track is inserted as the next queue item" + "updateCurrent": "Saat ini", + "@updateCurrent": { + "description": "Label for current version" }, - "snackbarAddedToQueueGeneric": "Ditambahkan ke antrean", - "@snackbarAddedToQueueGeneric": { - "description": "Snackbar when a track is added to the playback queue without naming it" + "@aboutFeatureRequest": { + "description": "Link to suggest features" }, - "selectionDeletePlaylistsCount": "Hapus {count} {count, plural, =1{playlist} other{playlist}}", - "@selectionDeletePlaylistsCount": { - "description": "Button label for deleting multiple selected playlists", + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari riwayat?\n\nIni juga akan menghapus file dari penyimpanan.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", "placeholders": { "count": { "type": "int" } } }, - "actionShuffle": "Acak", - "@actionShuffle": { - "description": "Tooltip for shuffle playback action" + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" }, - "downloadPrimaryArtistOnlyOn": "Hanya utama: Aktif", - "@downloadPrimaryArtistOnlyOn": { - "description": "Status label when primary-artist-only folder naming is enabled" + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" }, - "downloadPrimaryArtistOnlyOff": "Hanya utama: Nonaktif", - "@downloadPrimaryArtistOnlyOff": { - "description": "Status label when primary-artist-only folder naming is disabled" + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" }, - "downloadAlbumArtistMetadataPrimaryOnly": "Metadata Album Artist: Hanya utama", - "@downloadAlbumArtistMetadataPrimaryOnly": { - "description": "Status label when album-artist folder filtering uses primary artist only" + "libraryStorageAccessRequired": "Storage Access Required", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" }, - "downloadAlbumArtistMetadataFull": "Metadata Album Artist: Lengkap", - "@downloadAlbumArtistMetadataFull": { - "description": "Status label when album-artist folder filtering uses full metadata" + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Just now", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Favorite Artists", + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Playlists", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "Log", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "Seniman berbakat yang membuat logo aplikasi kita yang indah!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "Pratinjau", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "Analisis kenyaringan dan tulis tag ReplayGain", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "Beranda", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "Versi App Minimum", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Converting {current} of {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Pratinjau tidak tersedia", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "ID Klien: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Never", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "Nomor lagu", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Menganalisis kenyaringan...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "Kontributor", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "Berbincang dengan pengguna lain", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Tautan tidak dikenali", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "Tidak ada batas rate", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "Metadata", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Failed to load album", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Biarkan Android tetap terbuka", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "Tempel Client ID", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "Sumber Pencarian", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "All Files Access", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "extensionsInstalledCount": "{count} ekstensi berhasil terpasang", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "Hapus Semua", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Nama lengkap artis digunakan untuk nama folder", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Remove from folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "Metadata", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "File tidak ditemukan", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "Kode sumber PC", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "Menghapus {count} {count, plural, =1{lagu} other{lagu}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "URL {platform} disalin ke clipboard", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "Pencipta QQDL & HiFi API. Proyek ini membantu membentuk dukungan unduhan lossless.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Fetching {current} of {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "Layanan", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "Added {count} tracks to queue", + "cueSplitTrackCount": "{count} tracks", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Impor Playlist", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Local Library", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Tanggal rilis (Terbaru)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "Single & EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Ekstensi Cadangan", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Daftar Putar: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "Log Detail", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "Ukuran terkecil, ~4MB per trek", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Actions", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "Failed: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Tambah ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Penyedia ekstensi diwajibkan", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "Opsi", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "Gagal mengunduh pembaruan", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "Coba Lagi", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Tap any track to play it with your music player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "Batal Pilih", + "@actionDeselect": { + "description": "Action button - deselect all" }, - "trackConvertOriginal": "Asli", "@trackConvertOriginal": { "description": "Label for keeping original bit depth or sample rate during conversion" }, - "trackConvertOriginalQuality": "Kualitas asli", - "@trackConvertOriginalQuality": { - "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" }, - "trackConvertLosslessSuffix": "Lossless", - "@trackConvertLosslessSuffix": { - "description": "Suffix used in converted lossless quality labels" + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } }, - "trackConvertDithering": "Dithering", - "@trackConvertDithering": { - "description": "Section label for lossless conversion dithering options" + "homeSupports": "Mendukung: URL Lagu, Album, Daftar Putar, dan Artis", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" }, - "trackConvertResampler": "Resampler", - "@trackConvertResampler": { - "description": "Section label for lossless conversion resampler options" + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" }, - "trackConvertDitherNone": "Tidak ada", - "@trackConvertDitherNone": { - "description": "Lossless conversion dither option with no dithering applied" + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Playlist is empty", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "Semua file di folder unduhan", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "Album", + "@artistAlbums": { + "description": "Section header for artist albums" }, "trackConvertDitherTriangular": "TPDF", "@trackConvertDitherTriangular": { "description": "Lossless conversion triangular probability density function dither option" }, - "trackConvertDitherTriangularHp": "Triangular HP", - "@trackConvertDitherTriangularHp": { - "description": "Lossless conversion high-pass triangular dither option" + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } }, - "trackConvertResamplerSwr": "SWR", - "@trackConvertResamplerSwr": { - "description": "Lossless conversion default FFmpeg swresample resampler option" + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" }, - "trackConvertResamplerSoxr": "SoXr", - "@trackConvertResamplerSoxr": { - "description": "Lossless conversion SoX resampler option" + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "updateSeeReleaseNotes": "Lihat catatan rilis untuk detail.", - "@updateSeeReleaseNotes": { - "description": "Fallback changelog text when release notes cannot be parsed" + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" }, - "unknownTitle": "Judul tidak diketahui", - "@unknownTitle": { - "description": "Fallback track title when metadata is missing" + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "cacheSectionMaintenance": "Maintenance", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / hingga 192kHz", + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "Berdasarkan Artis & Album", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "Tidak dapat membuka file: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "Diperlukan - ketuk untuk mengatur", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "Lirik tidak tersedia untuk lagu ini", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "Utilitas", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Added to \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Clear cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Tahun] Album", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Storage & Cache", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "Tidak ada ekstensi dengan provider metadata", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Judul (Z-A)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Finalizing library...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Cadangan Otomatis", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "Pengembang versi mobile", + "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "Copot", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Delete playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "Unduhan", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "Artis", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "Penanganan URL", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "Bawaan Sistem", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} entries", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "Atur urutan sumber pencarian & metadata", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Pilih lagu untuk dihapus", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Change download location and folder organization", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Limited to media folders only", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "Unduhan", + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "Pilih lagu untuk dihapus", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "Label", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "Batal", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "Aktifkan Notifikasi", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "Pembuat", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "Format Nama File", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "Cari riwayat...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "Sematkan Lirik", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "Tempel Client Secret", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "Riwayat dihapus", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "Provider Lirik", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "Semua", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Menemukan Musik", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Buka di Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Downloaded", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Failed to fetch some albums", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Layanan yang digunakan untuk mencari berdasarkan nama lagu atau album", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "Kualitas audio", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "View size and clear cached data", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Select Albums...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Cari metadata musik, kelola ekstensi, dan atur perpustakaan Anda.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "Pencocokan Lagu Kustom", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" }, - "trackPlayNext": "Putar berikutnya", "@trackPlayNext": { "description": "Menu action to play a track as the next queue item" }, - "trackAddToQueue": "Tambah ke antrean", - "@trackAddToQueue": { - "description": "Menu action to add a track to the playback queue" + "extensionCapabilities": "Kemampuan", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Format Lossy 320kbps", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Mengunduh musik itu mudah dan cepat. Begini cara kerjanya.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "Menambahkan \"{trackName}\" ke antrian", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Every app open", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "Daftar", + "updateDownloadInstall": "Unduh & Pasang", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Judul (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "Kualitas Audio", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Converted to {format} successfully", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "Apakah Anda yakin ingin menghapus {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "Perbarui", + "libraryFilterMetadataMissingAny": "Missing any metadata", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Add to Playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "Izin", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "Pengumuman dan pembaruan", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", + "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "Aktifkan Notifikasi", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "Tema, warna, tampilan", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "Putar", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Memindai koleksi musik yang sudah ada untuk mendeteksi duplikat saat mengunduh. Mendukung format FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF, dan APE. Metadata dibaca dari tag file jika tersedia.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "Tanya Sebelum Unduh", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "Lagu instrumental", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Skip Duplicate Downloads", + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "Lewati untuk sekarang", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "URL Repositori Baru", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "Putar", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "Saluran Pembaruan", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" }, - "snackbarExtensionInstalledEnable": "{extensionName} terpasang. Aktifkan di Pengaturan > Ekstensi", "@snackbarExtensionInstalledEnable": { "description": "Snackbar after installing an extension from the repo tab", "placeholders": { @@ -5903,7 +2713,3076 @@ } } }, - "snackbarExtensionUpdatedVersion": "{extensionName} diperbarui ke v{version}", + "settingsAutoExportFailedSubtitle": "Simpan unduhan yang gagal ke file TXT secara otomatis", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Artis (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Buka di Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "Pilih lokasi iCloud atau lainnya", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} pendengar bulanan", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Cached Data", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "Download completed", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "Folder Documents Aplikasi", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "Gagal memuat repositori", + "settingsDownloadNetwork": "Jaringan Unduhan", + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Nilai gabungan tunggal", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Artis (Z-A)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Layanan, kualitas, cadangan", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Last scanned: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "Baru", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "Kelola provider unduhan", + "sortAlphaAsc": "A-Z", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Select All", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "Albums/Nama Artis/[2005] Nama Album/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Fetching tracks...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "Terjadi kesalahan", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "Tanggal rilis", + "discographySelectedCount": "{count} selected", + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "updateStartingDownload": "Memulai unduhan...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "Nomor disc", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "Menggunakan ekstensi: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Penyematan metadata, sampul album, dan lirik secara otomatis", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "No orphaned entries found", + "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Error: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "previewStop": "Hentikan pratinjau", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "discographyAlbumsOnly": "Albums Only", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Pilih ekstensi unduhan terpasang mana yang dapat digunakan sebagai cadangan", + "aboutSocial": "Sosial", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "Belum ada penyedia pencarian", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "Terpasang", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "Tag ReplayGain ditambahkan", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "Unduh", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "Gagal memuat lirik", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "Izin ditolak. Harap berikan semua izin untuk melanjutkan.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "Hanya WiFi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} diperbarui.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Instal ekstensi untuk melanjutkan.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Mengunduh Musik", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Cadangan, metadata, lirik, sampul album", + "navLibrary": "Pustaka", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "Tidak ada ekstensi yang tersedia", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "Preview mungkin mengandung bug atau fitur belum lengkap", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Library scan complete", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "Pasang file .spotiflac-ext untuk menambahkan provider baru", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "Terima Kasih Khusus", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "Pasang", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "Album", + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Aktifkan tag yang diformat untuk padding trek dan pola tanggal", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "Entri ({count} difilter)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Tambahkan Repositori", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "Laporkan masalah", + "snackbarFailedToWriteStorage": "Failed to write back to storage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?", + "setupChooseFromFiles": "Pilih dari Files", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Pilih format output untuk unduhan lossy 320kbps. Aliran data asli akan dikonversi ke format yang Anda pilih bila diperlukan.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "Ekstensi berhasil dipasang", + "progressReadingCsv": "Membaca CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "Pencarian default", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Tuliskan satu nilai ARTIS seperti \"Artis A, Artis B\" untuk kompatibilitas pemain maksimal.", + "downloadLossy320": "Lossy 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Queue FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Provider Options", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "No download history", + "optionsTitle": "Opsi", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "Hapus", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "Confirm Conversion", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "Playlist deleted", + "metadataMayRateLimit": "Mungkin dibatasi rate", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "Love All", + "downloadDirectory": "Direktori Unduhan", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "Library Folder", + "optionsMaxQualityCoverSubtitle": "Unduh cover art resolusi tertinggi", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Size", + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "Entri ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "Berdasarkan Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "Aplikasi", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Dinonaktifkan: tidak ada tag normalisasi kenyaringan", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "storeFilterIntegration": "Integrasi", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "Diunduh", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.", + "optionsArtistTagModeDescription": "Pilih bagaimana beberapa artis dicantumkan dalam tag yang disematkan.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "Lagu", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "Pengaturan File", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "dialogDelete": "Hapus", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "Semua musik yang Anda unduh tersusun rapi di tab Perpustakaan.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "Kredensial disimpan", + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Lossless conversion — no quality loss", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Rename playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Pilih bahasa pilihan Anda untuk aplikasi ini. Anda dapat mengubahnya nanti di Pengaturan.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Artis", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", + "artistCompilations": "Kompilasi", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Library Scan", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "Info File", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "audioAnalysisNoClipping": "No clipping", + "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "File .lrc terpisah untuk pemutar musik seperti Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Gunakan pencarian metadata default", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "Muat Lirik", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Repositori Ekstensi", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Library cleared", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Local Library", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "Semua lagu dipilih", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Clear Library", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "Hapus Semua", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "oleh {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Genre", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "Berdasarkan Daftar Putar", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Save Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "Gunakan Default", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Log akan muncul di sini saat Anda menggunakan aplikasi", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Download Progress", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "Lirik", + "libraryAutoScan": "Auto Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "Izin Penyimpanan Diperlukan", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "Kisi", + "trackConvertConverting": "Converting audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "Tulis satu tag artis per artis untuk FLAC dan Opus; MP3 dan M4A tetap tergabung.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Pilih tab mana yang terbuka terlebih dahulu untuk hasil pencarian baru.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "Ada dua cara mudah untuk menemukan musik yang ingin Anda unduh.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unknown Album", + "trackCoverCurrent": "Current cover", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "Selesai", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "Tautan Repositori", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress}% of {total} files", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Loved folder is empty", + "tutorialExtensionsTitle": "Extensions", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Durasi (Terpendek)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "Salin lokasi file", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "Gagal memperbarui ekstensi", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Playlist name", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Pilih Bahasa", + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "Pencarian Spotify akan dihentikan pada 3 Maret 2026 karena perubahan API Spotify. Silakan beralih ke Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "Lokasi Unduhan", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "App cache directory", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "Pasca-Pemrosesan", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "Log disalin ke clipboard", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "Gunakan Folder Default?", + "tutorialSearchHint": "Paste or search...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "File .lrc eksternal", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "Cari log...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "ID Klien", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "required", + "actionCancel": "Batal", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Format Nama Berkas Tunggal", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Unduh lagu Spotify dalam format FLAC", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "Hapus dari perangkat", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Cache overview", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "misalnya https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Storage Update Required", + "snackbarMetadataSaved": "Metadata saved successfully", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "Hapus Log", + "extensionsCustomSearch": "Pencarian kustom", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "actionRemoveCredentials": "Hapus Kredensial", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "Menambahkan {count} lagu ke antrian", + "downloadFilenameInsertTag": "Tap to insert tag:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Re-analyze", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Select a folder first", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Not configured", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "Setiap daftar putar memerlukan folder terpisah", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Convert Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "Lewati untuk sekarang", + "sectionDownload": "Unduhan", + "downloadLossyOpus256Subtitle": "Opus kualitas terbaik, ~8MB per trek", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Missing year", + "extensionsDownloadPriority": "Prioritas Unduhan", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Scan Library", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "Unduhan gagal", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "Latar belakang hitam murni", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Shows download progress for tracks", + "setupIcloudNotSupported": "iCloud Drive tidak didukung. Silakan gunakan folder Dokumen di aplikasi.", + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "extensionsInstallPartialSuccess": "Ekstensi yang terpasang berjumlah {installed} dari {attempted}", + "@extensionsInstallPartialSuccess": { + "description": "Message when installing multiple extensions partially succeeds", + "placeholders": { + "installed": { + "type": "int", + "description": "Number of successfully installed extensions" + }, + "attempted": { + "type": "int", + "description": "Number of selected extensions" + } + } + }, + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanCancelled": "Library scan cancelled", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "collectionPlaylistNameRequired": "Playlist name is required", + "libraryCleanupMissingFiles": "Cleanup Missing Files", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "searchSortTitle": "Urutkan hasil", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "audioAnalysisLufs": "LUFS", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" + }, + "extensionsErrorLoading": "Error memuat ekstensi", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "aboutFeatureRequestSubtitle": "Sarankan fitur baru untuk aplikasi", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "@aboutTitle": { + "description": "About page title" + }, + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "@actionGo": { + "description": "Generic action button label" + }, + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "Diperbarui", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "downloadLossyFormat": "Format Lossy", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" + }, + "snackbarAlreadyInLibrary": "\"{trackName}\" sudah ada di perpustakaan Anda", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "libraryFilterQuality": "Quality", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "trackReEnrichFieldsTitle": "Fields to update", + "aboutFeatureRequest": "Permintaan fitur", + "downloadSingleFilenameFormatDescription": "Pola nama file untuk single dan EP. Menggunakan tag yang sama dengan format album.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "queueClearAllMessage": "Apakah Anda yakin ingin menghapus semua unduhan?", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import CSV", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV file into Home search" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "dialogClearHistoryTitle": "Hapus Riwayat", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "dialogImport": "Impor", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "notifLibraryScanErrors": "{count} errors", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "Copot Ekstensi?", + "recentTypePlaylist": "Daftar putar", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "Sistem", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "Artis / Album + Singel", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "Pencipta proyek HiFi asli. Sebuah fondasi untuk integrasi sumber lossless.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "Akses Penyimpanan Diperlukan", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "Hapus", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "Prioritas provider metadata disimpan", + "setupPermissionRequired": "Izin {permissionType} Diperlukan", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Degraded", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "Tidak ditemukan lirik dalam file ini", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Kredensial Spotify", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Tampilkan Semua Unduhan", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "setupNext": "Lanjut", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Daily", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "trackConvertFailed": "Conversion failed", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "Copot", + "safMigrationSuccess": "Download folder updated to SAF mode", + "optionsClearHistorySubtitle": "Hapus semua lagu dari riwayat", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "optionsUpdateChannelStable": "Hanya rilis stabil", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "Playlist", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "settingsAppearance": "Tampilan", + "logIssueRateLimitedLabel": "RATE LIMITED", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "Repositori saat ini:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "libraryFilterApply": "Apply", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "Lirik", + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "Split into {count} tracks successfully", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "downloadLossyOpus128": "Opus 128kbps", + "downloadUseAlbumArtistForFolders": "Gunakan Artis Album untuk folder", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "Hapus {count} {count, plural, =1{lagu} other{lagu}}", + "updateLater": "Nanti", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "Lanjutkan", + "optionsDetailedLoggingOff": "Aktifkan untuk laporan bug", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "storeSearch": "Cari ekstensi...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Komunitas Telegram", + "lyricsModeBoth": "Keduanya", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Automatically scan your library for new files", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Enable Local Library", + "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", + "trackConvertTargetFormat": "Target Format", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "Pengaturan", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "Permintaan habis waktu. Coba lagi nanti.", + "settingsExtensions": "Ekstensi", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "Warna Dinamis", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "credentialsTitle": "Kredensial Spotify", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "Tampilan", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 lagu} other{{count} lagu}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Clear search", + "trackSaveLyrics": "Save Lyrics (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Download Complete", + "snackbarAlreadyDownloaded": "\"{trackName}\" sudah diunduh", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Folder terpisah untuk setiap album", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Search for tracks", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Sematkan dan simpan file .lrc", + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "Lirik", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "Strategi: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "Tag terpisah untuk FLAC/Opus", + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Cancel download?", + "updateWhatsNew": "Apa yang baru", + "updateNewVersionReady": "Versi baru sudah siap", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Select track", + "libraryClearSubtitle": "Remove all scanned tracks", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Repositori", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "Scan Settings", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "Durasi", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Search tracks...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "In Library", + "pressBackAgainToExit": "Tekan kembali sekali lagi untuk keluar", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "Izin Notifikasi Diberikan!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Support Development", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "Jangan ingatkan", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Searching online...", + "discographyDownloadSelected": "Download Selected", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Pilih penyedia pencarian default untuk beralih kembali dari ekstensi", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Temporary directory", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Show Duplicate Indicator", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "Periksa Pembaruan", + "replayGainBatchAnalyzing": "Menganalisis ReplayGain...", + "recentTypeAlbum": "Album", + "providerExtension": "Ekstensi", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "No cover art source available", + "libraryFilterMetadata": "Metadata", + "albumFolderArtistYearAlbum": "Artis / [Tahun] Album", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Stabil", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Customize app theme and appearance", + "setupAppDocumentsFolderSubtitle": "Direkomendasikan - dapat diakses via aplikasi Files", + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "dialogRemove": "Hapus", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "Coba layanan lain jika unduhan gagal", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} pola", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "Tautan ini tidak didukung. Pastikan URL sudah benar dan ekstensi yang kompatibel telah terpasang.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Mode Tag Artis", + "libraryFilterMetadataComplete": "Complete metadata", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Pindai kenyaringan dan sematkan tag ReplayGain (EBU R128)", + "libraryScanning": "Scanning...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Refresh", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "Simpan lirik yang disinkronkan bersama dengan lagu yang Anda unduh", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "extensionEnterValue": "Enter value", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Loved", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Tambahkan Repositori Ekstensi", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "No playlists yet", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "Berdasarkan Artis", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "Penerjemah", + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "editMetadataFieldTitle": "Title", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Failed to load artist", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "Kualitas sebenarnya tergantung ketersediaan lagu dari layanan", + "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Z-A", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.", + "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", + "tutorialLibraryTip3": "Switch between list and grid view for better browsing", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "Terang", + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "Pilih Folder Unduhan", + "dialogDownloadAllTitle": "Download All", + "providerPriorityInfo": "Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "No albums available", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "cacheNoData": "No cached data", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "aboutTitle": "Tentang", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "Tampilan Riwayat", + "audioAnalysisSampleRate": "Sample Rate", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "Track lookup cache", + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Refresh status", + "notifAllDownloadsComplete": "All Downloads Complete", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "Bagikan", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{count} tracks from {albumCount} releases", + "settingsDonateSubtitle": "Buy the developer a coffee", + "libraryFilterDownloaded": "Downloaded", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Scan stopped before completion.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "Salin lirik", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "Struktur Folder Album", + "downloadMusixmatchAuto": "Auto", + "actionDismiss": "Dismiss", + "storeFilterAll": "Semua", + "extensionsDisabled": "Nonaktif", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Perpustakaan Anda", + "optionsCheckUpdatesSubtitle": "Beritahu saat versi baru tersedia", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "{count} bulan lalu", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Warisan", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Playlist renamed", + "collectionCreatePlaylist": "Create playlist", + "homeGoToAlbum": "Go to Album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Folder terpisah untuk setiap artis", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "Versi {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Hanya artis utama untuk folder", + "tutorialExtensionsTip2": "Add new download providers or search sources", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "Selamat Datang di SpotiFLAC!", + "a11ySelectAlbum": "Select album {albumName}", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "aboutMobileSource": "Kode sumber mobile", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Storage Access", + "logFilterBySeverity": "Filter log berdasarkan tingkat keparahan", + "libraryFolderNotExist": "Selected folder does not exist", + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "albumFolderArtistAlbum": "Artis / Album", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Empty only", + "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "Gunakan Provider Ekstensi", + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Missing genre", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "setupFolderDescription": "Pilih folder tempat musik yang diunduh akan disimpan.", + "extensionDetailsTags": "Tags", + "unknownArtist": "Unknown Artist", + "trackFetchOnlineLyrics": "Ambil dari Online", + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "downloadAllCount": "Unduh Semua ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "Disc {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "Simpan Kredensial", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "extensionsFallbackTitle": "Ekstensi Cadangan", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Hapus yang Dipilih", + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Masukkan URL repositori GitHub yang berisi file registry.json untuk menelusuri dan memasang ekstensi.", + "appearanceThemeDark": "Gelap", + "downloadedAlbumTapToSelect": "Ketuk lagu untuk memilih", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "updateDownloading": "Mengunduh...", + "trackLyricsSource": "Sumber: {source}", + "logFilterLevel": "Level", + "logNoLogsYet": "Belum ada log", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Auto", + "searchEmptyResultSubtitle": "Coba kata kunci lain", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "Hari ini", + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Bit Depth", + "editMetadataFieldTrackTotal": "Track Total", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "replayGainBatchConfirmMessage": "Analisis kenyaringan dan tulis tag ReplayGain ke {count} trek?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "optionsSpotifyWarning": "Spotify memerlukan kredensial API Anda sendiri. Dapatkan gratis dari developer.spotify.com", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Edit Metadata", + "discographyDownloadAll": "Unduh Semua", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "Albums/Nama Artis/Nama Album/", + "extensionHealthServiceUnknown": "Service status unknown", + "navHome": "Beranda", + "queueDownloadStarting": "Starting...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "selectionSelected": "{count} dipilih", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Unduh Diskografi", + "editMetadataFieldCopyright": "Copyright", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Sort", + "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", + "dialogRemoveExtension": "Hapus Ekstensi", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "Pilih Semua", + "settingsDownloadNetworkSubtitle": "Pilih jaringan mana yang akan digunakan untuk mengunduh. Jika diatur ke Hanya WiFi, unduhan akan berhenti sementara dan menggunakan data seluler.", + "downloadFolderOrganization": "Organisasi Folder", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "Semua lagu dipilih", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "Lihat log aplikasi untuk debugging", + "albumFolderYearAlbumSubtitle": "Albums/[2005] Nama Album/", + "cancelDownloadKeep": "Keep", + "optionsDetailedLoggingOn": "Log detail sedang direkam", + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Update Failed", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Local", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "Layanan", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "notifUpdateFailedBody": "Could not download update. Try again later.", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "artistPopular": "Populer", + "extensionRemoveButton": "Hapus Ekstensi", + "allFilesAccessEnabledSubtitle": "Can write to any folder", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Provider Pencarian", + "tutorialWelcomeDesc": "Mari kita pelajari cara mengunduh musik favorit Anda dalam kualitas lossless. Tutorial singkat ini akan menunjukkan dasar-dasarnya.", + "selectionBatchConvertConfirmTitle": "Batch Convert", + "extensionMetadataProvider": "Provider Metadata", + "queueDownloadedFileMissing": "Downloaded file missing", + "logClearLogs": "Hapus log", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Unduh musik dari Spotify, Deezer, atau tempel URL yang didukung", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "Artis", + "extensionCustomUrlHandling": "Custom URL Handling", + "appearanceDynamicColorSubtitle": "Gunakan warna dari wallpaper Anda", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "Default", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Pilih bagaimana struktur folder album akan dibuat", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "App Folder (Recommended)", + "collectionPlaylistCreated": "Playlist created", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Save album art as .jpg file", + "actionPaste": "Paste", + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "downloadNativeWorker": "Native download worker", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "Refresh stats", + "collectionPlaylistChangeCover": "Change cover image", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "Hapus Riwayat Unduhan", + "trackGenre": "Genre", + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "libraryFilterMetadataMissingArtist": "Missing artist", + "extensionsNoCustomSearch": "Tidak ada ekstensi dengan pencarian kustom", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "Provider Unduhan", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "Mode Lirik", + "aboutReportIssueSubtitle": "Laporkan masalah yang Anda temui", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "AMOLED Gelap", + "logIssueNetworkErrorDescription": "Connection issues detected", + "folderOrganizationByArtistAlbumSubtitle": "Folder bersarang untuk artis dan album", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "Berikan Izin", + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "{count} hari lalu", + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "downloadLossyMp3Subtitle": "Kompatibilitas terbaik, ~10MB per trek", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "Wishlist is empty", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, "@snackbarExtensionUpdatedVersion": { "description": "Snackbar after updating an extension from the repo tab", "placeholders": { @@ -5915,138 +5794,415 @@ } } }, - "snackbarFailedToInstallNamed": "Gagal memasang {extensionName}", - "@snackbarFailedToInstallNamed": { - "description": "Snackbar when extension install fails in the repo tab", + "extensionHealthServiceDegraded": "Service degraded", + "optionsUseExtensionProvidersOn": "Penyedia ekstensi diaktifkan", + "selectionConvertNoConvertible": "No convertible tracks selected", + "snackbarCredentialsCleared": "Kredensial dihapus", + "setupStorageGranted": "Izin Penyimpanan Diberikan!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", "placeholders": { - "extensionName": { - "type": "String" + "count": { + "type": "int" } } }, - "snackbarFailedToUpdateNamed": "Gagal memperbarui {extensionName}", - "@snackbarFailedToUpdateNamed": { - "description": "Snackbar when extension update fails in the repo tab", - "placeholders": { - "extensionName": { - "type": "String" - } - } + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" }, - "releaseTypeEp": "EP", - "@releaseTypeEp": { - "description": "Badge label for EP releases" + "notifLibraryScanExcluded": "{count} excluded", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" }, - "releaseTypeSingle": "Single", - "@releaseTypeSingle": { - "description": "Badge label for single releases" + "setupChangeFolderTooltip": "Change folder", + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" }, - "trackCoverOnline": "Sampul daring", - "@trackCoverOnline": { - "description": "Label shown when metadata autofill downloaded cover art from the internet" + "libraryClear": "Clear Library", + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" }, - "regionCountryUS": "Amerika Serikat", - "@regionCountryUS": { - "description": "Country name for SongLink region picker" + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "storeCategoryMetadata": "Metadata", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" }, - "regionCountryGB": "Britania Raya", - "@regionCountryGB": { - "description": "Country name for SongLink region picker" + "editMetadataFieldDiscTotal": "Disc Total", + "tutorialLibraryTip1": "View download progress and queue in the Library tab", + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" }, - "regionCountryFR": "Prancis", - "@regionCountryFR": { - "description": "Country name for SongLink region picker" + "libraryFilterLocal": "Local", + "tutorialDownloadInProgressSemantics": "Download in progress", + "searchSortDurationLong": "Durasi (Terpanjang)", + "@appearanceLanguage": { + "description": "Language setting title" }, - "regionCountryDE": "Jerman", - "@regionCountryDE": { - "description": "Country name for SongLink region picker" + "libraryAbout": "About Local Library", + "@libraryAbout": { + "description": "Section header for about info" }, - "regionCountryJP": "Jepang", - "@regionCountryJP": { - "description": "Country name for SongLink region picker" + "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "appearanceSelectAccentColor": "Select accent color {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" }, - "regionCountryKR": "Korea Selatan", - "@regionCountryKR": { - "description": "Country name for SongLink region picker" - }, - "regionCountryIN": "India", - "@regionCountryIN": { - "description": "Country name for SongLink region picker" - }, - "regionCountryID": "Indonesia", - "@regionCountryID": { - "description": "Country name for SongLink region picker" - }, - "regionCountryBR": "Brasil", - "@regionCountryBR": { - "description": "Country name for SongLink region picker" - }, - "regionCountryMX": "Meksiko", - "@regionCountryMX": { - "description": "Country name for SongLink region picker" - }, - "regionCountryAU": "Australia", - "@regionCountryAU": { - "description": "Country name for SongLink region picker" - }, - "regionCountryCA": "Kanada", - "@regionCountryCA": { - "description": "Country name for SongLink region picker" - }, - "regionCountryXK": "Kosovo", - "@regionCountryXK": { - "description": "Country name for SongLink region picker" - }, - "extensionVerificationBrowserTitle": "Browser verifikasi", - "@extensionVerificationBrowserTitle": { - "description": "Settings option title for extension verification browser preference" - }, - "extensionVerificationBrowserSubtitleExternal": "Buka tantangan di browser default terlebih dahulu", - "@extensionVerificationBrowserSubtitleExternal": { - "description": "Subtitle when external browser is preferred for extension verification" - }, - "extensionVerificationBrowserSubtitleInApp": "Buka tantangan di browser dalam aplikasi terlebih dahulu", - "@extensionVerificationBrowserSubtitleInApp": { - "description": "Subtitle when in-app browser is preferred for extension verification" - }, - "extensionVerificationBrowserExternal": "Eksternal", - "@extensionVerificationBrowserExternal": { - "description": "Chip label for external browser verification mode" - }, - "extensionVerificationBrowserInApp": "Dalam aplikasi", - "@extensionVerificationBrowserInApp": { - "description": "Chip label for in-app browser verification mode" - }, - "extensionVerificationHelpTitleManual": "Buka verifikasi secara manual", - "@extensionVerificationHelpTitleManual": { - "description": "Dialog title when automatic browser launch for verification fails" - }, - "extensionVerificationHelpTitleWaiting": "Verifikasi masih menunggu", - "@extensionVerificationHelpTitleWaiting": { - "description": "Dialog title when verification is taking longer than expected" - }, - "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile tidak dapat membuka browser secara otomatis. Buka tautan ini di browser Anda, atau salin secara manual.", - "@extensionVerificationHelpMessageManual": { - "description": "Dialog message when automatic browser launch for verification fails" - }, - "extensionVerificationHelpMessageWaiting": "Jika browser tidak terbuka, atau verifikasi selesai tetapi tidak kembali ke SpotiFLAC Mobile, buka tautan ini lagi atau salin secara manual.", + "trackReplayGain": "Pindai ulang ReplayGain", + "downloadSeparateSinglesFolder": "Folder Singles Terpisah", + "trackAlbumArtist": "Artis album", + "qualityFlacLossless": "FLAC Lossless", "@extensionVerificationHelpMessageWaiting": { "description": "Dialog message when verification may need manual browser help" }, - "extensionVerificationClose": "Tutup", - "@extensionVerificationClose": { - "description": "Button to dismiss the extension verification help dialog" + "tutorialSettingsTitle": "Customize Your Experience", + "extensionActionFailed": "Action failed", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" }, - "extensionVerificationCopyLink": "Salin tautan", - "@extensionVerificationCopyLink": { - "description": "Button to copy the extension verification URL" + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "notifChannelLibraryScanDesc": "Shows local library scan progress", + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" }, - "extensionVerificationLinkCopied": "Tautan verifikasi disalin", - "@extensionVerificationLinkCopied": { - "description": "Snackbar after copying the extension verification URL" + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" removed", + "setupStorageAccessMessageAndroid11": "Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.", + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "optionsPrimaryProvider": "Provider Utama", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" }, - "extensionVerificationOpenBrowser": "Buka browser", - "@extensionVerificationOpenBrowser": { - "description": "Button to open the extension verification URL in a browser" - } + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", + "homeAlbumInfoUnavailable": "Album info not available", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unknown", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "Unduhan yang gagal diekspor otomatis", + "logFilterSection": "Filter", + "dialogDiscardChanges": "Buang Perubahan?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Tracks", + "searchAlbums": "Album", + "trackConvertFormat": "Convert Format", + "metadataProviderPriorityTitle": "Prioritas Metadata", + "libraryFolderHint": "Tap to select folder", + "downloadedAlbumDeleteMessage": "Hapus {count} {count, plural, =1{lagu} other{lagu}} dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "Album", + "updateAvailable": "Pembaruan Tersedia", + "optionsEmbedLyrics": "Sematkan Lirik", + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Tampilkan tab Repo di navigasi", + "settingsTitle": "Pengaturan", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Explore feed cache", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} dipilih", + "downloadAskQualitySubtitle": "Tampilkan pemilih kualitas untuk setiap unduhan", + "filenameShowAdvancedTags": "Tampilkan tag lanjutan", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "Library cover cache", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "Kompatibilitas seluler terbaik, kontainer M4A", + "snackbarFillAllFields": "Harap isi semua field", + "actionCreate": "Create", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} diunduh", + "snackbarLoadingCueSheet": "Loading CUE sheet...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "Pencipta SpotiFLAC asli", + "a11yTrackByArtist": "{trackName} by {artistName}", + "audioAnalysisDynamicRange": "Dynamic Range", + "homeChangeSearchProviderTooltip": "Change search provider", + "loadingSharedLink": "Memuat link yang dibagikan...", + "lyricsModeEmbedSubtitle": "Lirik tersimpan di dalam metadata FLAC", + "setupNotificationBackgroundDescription": "Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.", + "snackbarViewQueue": "Lihat Antrian", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Choose specific albums or singles", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "Konten dari tautan ini gagal dimuat. Silakan coba lagi.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "Simpan", + "trackReEnrichSearching": "Searching metadata online...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "downloadFilenameFormat": "Format Nama File", + "cueSplitTitle": "Split CUE Sheet", + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "Tidak dapat memuat {item}: sumber ekstensi tidak ada", + "albumFolderAlbumOnlySubtitle": "Albums/Nama Album/", + "errorLoadPlaylist": "Failed to load playlist", + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "Buang", + "storageModeSaf": "Custom Folder (SAF)", + "errorRateLimited": "Dibatasi", + "downloadSelectQuality": "Pilih Kualitas", + "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", + "collectionFoldersTitle": "My folders", + "credentialsClientSecret": "Rahasia Klien", + "progressFetchingMetadata": "Mengambil metadata... {current}/{total}", + "settingsDownloadNetworkAny": "WiFi + Data Seluler", + "audioAnalysisDuration": "Duration", + "audioAnalysisAnalyzing": "Analyzing audio...", + "credentialsDescription": "Masukkan Client ID dan Secret Anda untuk menggunakan kuota aplikasi Spotify Anda sendiri.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Putar pratinjau", + "setupPermissionRequiredMessage": "Izin {permissionType} diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.", + "aboutVersion": "Versi", + "qualityHiResFlacSubtitle": "24-bit / hingga 96kHz", + "audioAnalysisSamples": "Samples", + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "Hak cipta", + "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", + "trackCopiedToClipboard": "Disalin ke clipboard", + "optionsEmbedMetadata": "Embed Metadata", + "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "storeCategoryIntegration": "Integration", + "storeClearFilters": "Hapus filter", + "navSettings": "Pengaturan", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "Aplikasi", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "Artis/Album/ dan Artis/Single/", + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "Nama lagu", + "homeRecent": "Terbaru", + "recentEmpty": "Belum ada item terbaru", + "cacheClearAll": "Clear all cache", + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "editMetadataFieldAlbum": "Album", + "settingsAbout": "Tentang", + "libraryFilterTitle": "Filters", + "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", + "extensionHooksAvailable": "{count} hook tersedia", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "Lirik berhasil disematkan", + "optionsUpdateChannelPreview": "Dapatkan rilis preview", + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "libraryForceFullScan": "Force Full Scan", + "snackbarProviderPrioritySaved": "Prioritas provider disimpan", + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Service Status", + "dateWeeksAgo": "{count} minggu lalu", + "historyFilterSingles": "Single", + "tutorialSettingsTip2": "Set default audio quality and format preferences", + "trackLyricsSaved": "Lyrics saved to {fileName}", + "cacheClearAllConfirmTitle": "Clear all cache?", + "noTracksFoundForAlbum": "No tracks found for this album", + "sectionLanguage": "Bahasa", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "Pilih Folder", + "dateYesterday": "Kemarin", + "collectionAddToPlaylist": "Add to playlist", + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "libraryScanCancelled": "Scan cancelled", + "appearanceLanguage": "Bahasa Aplikasi", + "extensionsTitle": "Ekstensi", + "dialogImportPlaylistMessage": "Ditemukan {count} lagu di CSV. Tambahkan ke antrian unduhan?", + "permissionNotification": "Notification", + "notifUpdateReady": "Update Ready", + "lyricsModeDescription": "Pilih cara lirik disimpan bersama unduhan Anda", + "downloadFrom": "Unduh Dari", + "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", + "optionsMaxQualityCover": "Cover Kualitas Maksimal", + "trackOptionAddToWishlist": "Add to Wishlist", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "extensionsNoDownloadProvider": "Tidak ada ekstensi dengan provider unduhan", + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "trackReplayGainFailed": "Gagal menambahkan tag ReplayGain", + "collectionPlaylistRemoveCover": "Remove cover image", + "storeEmptyNoResults": "Tidak ada ekstensi ditemukan", + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "editMetadataFieldComment": "Comment", + "settingsMetadata": "Metadata", + "settingsCache": "Storage & Cache", + "providerPriorityFallbackExtensionsHint": "Hanya ekstensi yang diaktifkan dengan kemampuan penyedia unduhan yang tercantum di sini.", + "libraryFilterAll": "All", + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "extensionsProviderPrioritySection": "Prioritas Provider", + "storeChangeRepoTooltip": "Ubah repositori", + "snackbarFailedToInstall": "Gagal memasang ekstensi", + "libraryScanSubtitle": "Scan for audio files", + "snackbarExtensionInstalled": "{extensionName} terpasang.", + "setupOpenSettings": "Buka Pengaturan", + "extensionsInstalledSection": "Ekstensi Terpasang", + "aboutLinks": "Tautan", + "trackCoverClearSelected": "Clear selected cover", + "libraryAutoScanWeekly": "Weekly", + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "optionsDefaultSearchTab": "Tab Pencarian Default", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "Atur file yang diunduh ke dalam folder", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "Sematkan dalam file", + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Lossy", + "actionPause": "Jeda", + "csvImportTracks": "{count} trek dari CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "actionGo": "Go", + "sectionDebug": "Debug", + "editMetadataFieldDate": "Date", + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "sectionPerformance": "Performa", + "extensionsSearchWith": "Search with {providerName}", + "extensionsDownloadPrioritySubtitle": "Atur urutan layanan unduhan", + "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", + "sectionData": "Data", + "notifFinalizingTrack": "Finalizing {trackName}", + "snackbarFileNotFound": "File tidak ditemukan", + "extensionQualityOptions": "Opsi Kualitas", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "Repositori Ekstensi", + "extensionsSearchProviderDescription": "Pilih layanan yang digunakan untuk mencari lagu", + "albumFolderAlbumOnly": "Album Saja", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "Split into Tracks" } diff --git a/lib/l10n/arb/app_ja.arb b/lib/l10n/arb/app_ja.arb index 873abeea..ddb3a72c 100644 --- a/lib/l10n/arb/app_ja.arb +++ b/lib/l10n/arb/app_ja.arb @@ -1,1628 +1,51 @@ { "@@locale": "ja", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "ホーム", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "ライブラリ", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "設定", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Repo", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "ホーム", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Paste a supported URL or search by name", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "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" - }, - "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" - }, - "settingsOptions": "オプション", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "拡張", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "アプリについて", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "ダウンロード", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Show quality picker for each download", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "ファイル名の形式", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "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" - }, - "optionsTitle": "オプション", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "プライマリーのプロバイダー", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "拡張の使用: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Auto Fallback", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Try other services if download fails", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "拡張のプロバイダーを使用する", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "歌詞を埋め込む", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "最大品質のカバー", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "最高解像度のカバーアートをダウンロード", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsExtensionStore": "Extension Repo", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "更新を確認", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "Notify when new version is available", - "@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": "Preview may contain bugs or incomplete features", - "@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" - }, - "optionsSpotifyCredentials": "Spotify の認証情報", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "クライアント ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "必須 - タップで設定", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify は独自の API 認証情報が必要です。developer.spotify.com から取得できます。", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "拡張", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "無効", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "バージョン {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "作者 {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "アンインストール", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Extension Repo", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "拡張を検索...", - "@storeSearch": { - "description": "Store 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": "PC 版のソースコード", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "問題を報告する", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "問題が発生した場合に報告してください", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "機能の要望", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "アプリの新機能を提案する", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Telegram チャンネル", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "お知らせと更新", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Telegram コミュニティ", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "その他のユーザーとチャット", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "ソーシャル", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "アプリ", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "バージョン", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "アルバム", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "シングルと EP", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "コンピレーション", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "人気", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} 人の月間リスナー", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "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": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "設定を開く", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "{permissionType} の権限が必要です", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "最適な体験を得るには {permissionType} の権限が必要です。この権限は設定で後から変更できます。", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "デフォルトのフォルダを使用しますか?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "デフォルトを使用する", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "ダウンロード先", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "On iOS, downloads are saved to the app's Documents folder. You can access them via the Files app.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "アプリのドキュメントフォルダ", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "ファイルから選択", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "iCloud またはその他の場所を選択", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Spotify のトラックを FLAC でダウンロード", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStorageGranted": "ストレージの権限が許可されました!", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "ストレージの権限が必要です", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "SpotiFLAC はダウンロードした音楽ファイルを保存するためにストレージの権限が必要です。", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "通知の権限が許可されました!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "通知を有効化する", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupFolderChoose": "ダウンロードフォルダを選択", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "Select a folder where your downloaded music will be saved.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupSelectFolder": "フォルダを選択", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupEnableNotifications": "通知を有効化する", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "今はスキップ", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupNext": "次へ", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Get Started", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "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" - }, - "dialogDiscard": "破棄", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "削除", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "アンインストール", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "変更を破棄しますか?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogClearAll": "すべて消去", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogRemoveExtension": "拡張を削除", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "拡張をアンインストールしますか?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "履歴を消去", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "選択済みを削除", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "プレイリストをインポート", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", - "csvImportTracks": "{count} tracks from CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@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}\" already exists in your library", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "履歴を消去しました", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "認証情報を保存しました", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "認証情報を消去しました", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "ファイルが開けません: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "すべての項目を入力してください", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "キューを表示", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "{platform} の URL をクリップボードにコピーしました", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "ファイルがありません", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": ".spotiflac-ext ファイルを選択してください", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "プロバイダーの優先度を保存しました", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "メタデータプロバイダーの優先度を保存しました", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} をインストールしました。", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "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": "Too many requests. Please wait a moment before searching again.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "トラックがありません", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "errorUrlNotRecognized": "Link not recognized", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "This link is not supported. Make sure the URL is correct and a compatible extension is installed.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Failed to load content from this link. Please try again.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "{item} を読み込めません: 拡張ソースがありません", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "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" - }, - "actionRemoveCredentials": "認証情報を削除", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "認証情報を保存", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} 個を選択済み", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "すべてのトラックを選択済み", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "トラックを選択で削除", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "メタデータを取得中... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "CSV を読み取り中...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "曲", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "アーティスト", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "アルバム", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "プレイリスト", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "tooltipPlay": "再生", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "ファイル名の形式", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "高度なタグを表示", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Enable formatted tags for track padding and date patterns", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "構成がありません", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "By Playlist", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "アーティスト別", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "アルバム別", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "アーティスト/アルバム", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "ダウンロードしたファイルをフォルダに整理する", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "ダウンロードフォルダ内のすべてのファイル", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Separate folder for each artist", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Separate folder for each album", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "更新が利用可能です", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "後で", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "ダウンロードを開始中...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "ダウンロードに失敗しました", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "更新のダウンロードに失敗しました", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "新しいバージョンの準備ができています", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "現在", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "新着", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "ダウンロード中...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "新着情報", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "ダウンロードとインストール", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "通知しない", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "プロバイダーの優先度", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "拡張", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "メタデータの優先度", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "レート制限はありません", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "May rate limit", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "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" + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "すべてのログを消去してもよろしいですか?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "Filter logs by severity", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "まだログはありません", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Logs will appear here as you use the app", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "エントリー ({count} 個をフィルター済み)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "エントリー ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Spotify の認証情報", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "クライアント ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "クライアント ID を貼り付け", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "クライアントシークレット", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "クライアントシークレットを貼り付け", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "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": "Choose how lyrics are saved with your downloads", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "Embed in file", - "@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": "Separate .lrc file for players like Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "両方", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Embed and save .lrc file", - "@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": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "ダウンロードプロバイダーを管理", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "デバッグのためのアプリログを表示", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "共有リンクを読み込み中...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Press back again to exit", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "すべてダウンロード ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 個のトラック} other{{count} 個のトラック}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "ファイルパスをコピー", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "デバイスから削除", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "歌詞を読み込み", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "メタデータ", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "ファイル情報", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "歌詞", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "ファイルがありません", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Deezer で開く", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Spotify で開く", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "トラック名", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "アーティスト", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "アルバムアーティスト", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "アルバム", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "トラック番号", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "ディスク番号", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "再生時間", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "オーディオ品質", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "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" - }, - "trackLyricsNotAvailable": "このトラックの歌詞は利用できません", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsTimeout": "リクエストがタイムアウトしました。後ほどお試しください。", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "歌詞の読み込みに失敗しました", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "歌詞を埋め込む", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Lyrics embedded successfully", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "インストゥルメンタルのトラック", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "クリップボードにコピーしました", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "デバイスから削除しますか?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "今日", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "昨日", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "{count} 日前", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "{count} 週間前", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "{count} ヶ月前", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "すべて", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "メタデータ", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "ダウンロード", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "ユーティリティ", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "歌詞", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "統合", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "フィルターを消去", "@storeClearFilters": { "description": "Button to clear all filters" }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" + "cacheCleanupUnused": "未使用のデータを削除", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, - "extensionAuthor": "作者", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "エラー", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "機能", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "メタデータのプロバイダー", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "ダウンロードのプロバイダー", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "歌詞のプロバイダー", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "URL ハンドラ", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "品質のオプション", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "ポストプロセスフック", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "権限", - "@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", + "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "@libraryTracksUnit": { + "description": "Unit label for tracks count (without the number itself)", "placeholders": { "count": { "type": "int" } } }, - "extensionPatternsCount": "{count} 個のパターン", + "folderOrganizationNone": "構成がありません", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" + }, + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" + }, + "@trackConvertConfirmTitle": { + "description": "Confirmation dialog title" + }, "@extensionPatternsCount": { "description": "URL patterns count", "placeholders": { @@ -1631,365 +54,263 @@ } } }, - "extensionStrategy": "ストラテジー: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" + }, + "libraryAutoScanOff": "Off", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "strategy": { + "service": {} + } + }, + "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" + }, + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", + "placeholders": { + "extensionName": { "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" - }, - "extensionsDownloadPriority": "ダウンロードの優先度", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "ダウンロードサービスの順序を設定", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsNoDownloadProvider": "ダウンロードプロバイダーの拡張はありません", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "メタデータの優先度", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "検索とメタデータソースの順序を設定", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "メタデータプロバイダーの拡張はありません", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "検索のプロバイダー", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "カスタム検索の拡張はありません", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "トラックの検索に使用するサービスを選択してください", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "カスタム検索", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "拡張の読み込みエラー", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC ロスレス", - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "qualityHiResFlac": "ハイレゾ FLAC", - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "qualityHiResFlacSubtitle": "24-bit / 最大 96kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "ハイレゾ FLAC 最大", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / 最大 192kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "qualityNote": "実際の品質はサービスからのトラックの可用性に依存します", - "@qualityNote": { - "description": "Note about quality availability" - }, - "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": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@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" - }, - "queueClearAll": "すべて消去", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "すべてのダウンロードを消去してもよろしいですか?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "ダウンロードの自動エクスポートに失敗しました", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "ダウンロードネットワーク", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "Wi-Fi + モバイルデータ", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "Wi-Fi のみ", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "アーティスト / アルバム", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "アルバム/アーティスト名/アルバム名/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "アーティスト / [年] アルバム", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "アルバム/アーティスト名/[2005] アルバム名/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "アルバムのみ", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "アルバム/アルバム名/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[年] アルバム", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "アルバム/[2005] アルバム名/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "アーティスト / アルバム + シングル", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "downloadedAlbumDeleteSelected": "選択済みを削除", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", + "selectionShareCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を共有", + "@selectionShareCount": { + "description": "Share button text with count in selection mode", "placeholders": { "count": { "type": "int" } } }, - "downloadedAlbumSelectedCount": "{count} 個を選択済み", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "downloadedAlbumAllSelected": "すべてのトラックを選択済み", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" + "@logSearchHint": { + "description": "Log search placeholder" }, - "downloadedAlbumTapToSelect": "トラックをタップで選択", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "downloadedAlbumDeleteCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" } } }, - "downloadedAlbumSelectToDelete": "トラックを選択で削除", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" }, - "downloadedAlbumDiscHeader": "ディスク {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" }, - "recentTypeArtist": "アーティスト", - "@recentTypeArtist": { - "description": "Recent access item type - artist" + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" }, - "recentTypeAlbum": "アルバム", - "@recentTypeAlbum": { - "description": "Recent access item type - album" + "@trackGenre": { + "description": "Metadata label - music genre" }, "recentTypeSong": "曲", "@recentTypeSong": { "description": "Recent access item type - song/track" }, - "recentTypePlaylist": "プレイリスト", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" + "logShareLogs": "ログを共有", + "@logShareLogs": { + "description": "Share button tooltip" }, - "recentEmpty": "No recent items yet", - "@recentEmpty": { - "description": "Empty state text for recent access list" + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" }, - "recentShowAllDownloads": "すべてのダウンロードを表示", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" + "extensionsInstallButton": "拡張をインストール", + "@extensionsInstallButton": { + "description": "Button to install extension from file" }, - "recentPlaylistInfo": "プレイリスト: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" + "success": { + "type": "int" + }, + "total": { + "type": "int" } } }, - "discographyDownload": "ディスコグラフィをダウンロード", - "@discographyDownload": { - "description": "Button - download artist discography" + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" }, - "discographyDownloadAll": "すべてダウンロード", - "@discographyDownloadAll": { - "description": "Option - download entire discography" + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" }, - "discographyDownloadAllSubtitle": "{albumCount} 個のリリースから {count} 個のトラック", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", + "extensionsNoExtensions": "拡張はインストールされていません", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "CUE split failed", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Paste a supported URL or search by name", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, + "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless batch conversion", "placeholders": { "count": { "type": "int" }, - "albumCount": { - "type": "int" + "format": { + "type": "String" } } }, - "discographyAlbumsOnly": "アルバムのみ", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" }, - "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Release Date (Oldest)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "カラー", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "カバー画像のキャッシュ", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Split CUE Album", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "消去済み: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" + "target": { + "type": "String" } } }, - "discographySinglesOnly": "シングルと EP のみ", - "@discographySinglesOnly": { - "description": "Option - download only singles" + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": ".spotiflac-ext ファイルを選択してください", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "形式", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" }, "discographySinglesOnlySubtitle": "{count} tracks from {albumCount} singles", "@discographySinglesOnlySubtitle": { @@ -2003,1091 +324,49 @@ } } }, - "discographySelectAlbums": "アルバムを選択...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" + "optionsExtensionStore": "Extension Repo", + "@optionsExtensionStore": { + "description": "Show/hide store tab" }, - "discographySelectAlbumsSubtitle": "Choose specific albums or singles", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "トラックを取得中です...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "Fetching {current} of {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} 個を選択済み", - "@discographySelectedCount": { - "description": "Selection count badge", + "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" } } }, - "discographyDownloadSelected": "選択済みをダウンロード", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" }, - "discographyAddedToQueue": "Added {count} tracks to queue", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "利用可能なアルバムがありません", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "一部のアルバムの取得に失敗しました", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "ストレージアクセス", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "すべてのファイルへのアクセス", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Can write to any folder", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Limited to media folders only", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "ローカルライブラリ", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "ストレージとキャッシュ", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "View size and clear cached data", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "ローカルライブラリ", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryScanSettings": "スキャン設定", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "ローカルライブラリを有効", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "ライブラリのフォルダ", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "タップでフォルダを選択", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryActions": "アクション", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "ライブラリをスキャン", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "オーディオファイルをスキャン", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "ライブラリを消去", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "ライブラリを消去", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "ローカルライブラリについて", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", - "@libraryTracksUnit": { - "description": "Unit label for tracks count (without the number itself)", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryLastScanned": "最終スキャン: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } - }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "スキャン中...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "ライブラリ内", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "ストレージアクセスが必要です", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Selected folder does not exist", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "ダウンロード済み", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "ローカル", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "すべて", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "ダウンロード済み", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "ローカル", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "フィルター", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "リセット", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "適用", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "ソース", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "品質", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "ハイレゾ (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Lossy", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "形式", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterSort": "Sort", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "timeJustNow": "Just now", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{1 分前} other{{count} 分前}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{1 時間前} other{{count} 時間前}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "SpotiFLAC へようこそ!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Finding Music", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "There are two easy ways to find music you want to download.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "音楽をダウンロード中", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "あなたのライブラリ", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "View download progress and queue in the Library tab", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Tap any track to play it with your music player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Switch between list and grid view for better browsing", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "拡張", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Add new download providers or search sources", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Set default audio quality and format preferences", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "強制フルスキャン", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "ストレージとキャッシュ", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "キャッシュの概要", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "キャッシュ済みデータ", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "メンテナンス", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "アプリキャッシュのディレクトリ", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "一時ディレクトリ", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "カバー画像のキャッシュ", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "cacheLibraryCover": "ライブラリのカバーキャッシュ", - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "cacheExploreFeed": "Explore feed cache", - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "cacheTrackLookup": "Track lookup cache", - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "cacheNoData": "キャッシュデータはありません", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "cacheSizeWithFiles": "{size} in {count} files", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheEntries": "{count} 個のエントリ", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheClearSuccess": "消去済み: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "キャッシュを消去しますか?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearAllConfirmTitle": "すべてのキャッシュを消去しますか?", - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "cacheClearAll": "すべてのキャッシュを消去", - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "cacheCleanupUnused": "未使用のデータを削除", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" - }, - "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "cacheRefreshStats": "状態を更新", - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "trackSaveCoverArt": "カバー画像を保存", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "歌詞を保存 (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "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" - }, - "trackEditMetadata": "メタデータを編集", - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "trackCoverSaved": "Cover art saved to {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackCoverNoSource": "No cover art source available", - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "trackLyricsSaved": "Lyrics saved to {fileName}", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichProgress": "Re-enriching metadata...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "trackReEnrichSearching": "Searching metadata online...", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "trackSaveFailed": "失敗: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "trackConvertFormat": "変換の形式", - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "オーディオを変換", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "ターゲットの形式", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "ビットレート", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "trackConvertConfirmTitle": "変換を確認", - "@trackConvertConfirmTitle": { - "description": "Confirmation dialog title" - }, - "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "trackConvertConverting": "オーディオを変換中...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "trackConvertSuccess": "Converted to {format} successfully", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "trackConvertFailed": "変換に失敗しました", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "cueSplitTitle": "分割 CUE シート", - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "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" - }, - "collectionPlaylists": "Playlists", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "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" - }, - "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", - "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" - } - } - }, - "collectionPlaylistCreated": "Playlist created", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "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" - }, - "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist deleted", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "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" - }, - "collectionPlaylistEmptyTitle": "Playlist is empty", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "collectionRemoveFromPlaylist": "Remove from playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "collectionRemoveFromFolder": "フォルダから削除", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "collectionRemoved": "\"{trackName}\" removed", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "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" - } - } - }, - "trackOptionAddToLoved": "Add to Loved", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "trackOptionRemoveFromLoved": "Remove from Loved", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "trackOptionAddToWishlist": "ウィッシュリストに追加", "@trackOptionAddToWishlist": { "description": "Bottom sheet action label - add track to wishlist" }, - "trackOptionRemoveFromWishlist": "ウィッシュから削除", - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" + "discographySinglesOnly": "シングルと EP のみ", + "@discographySinglesOnly": { + "description": "Option - download only singles" }, - "collectionPlaylistChangeCover": "カバー画像を変更", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" }, - "collectionPlaylistRemoveCover": "カバー画像を削除", - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" }, - "selectionShareCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を共有", - "@selectionShareCount": { - "description": "Share button text with count in selection mode", - "placeholders": { - "count": { - "type": "int" - } - } + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" }, - "selectionShareNoFiles": "No shareable files found", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" }, "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", "@selectionConvertCount": { @@ -3098,41 +377,126 @@ } } }, - "selectionConvertNoConvertible": "No convertible tracks selected", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" }, - "selectionBatchConvertConfirmTitle": "一括変換", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" }, - "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", + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, - "selectionBatchConvertProgress": "Converting {current} of {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Telegram チャンネル", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" + "discNumber": { + "type": "int", + "example": "1" } } }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "ポストプロセスフック", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "ダウンロード", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "選択済みを削除", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3148,1316 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} 個をダウンロード済み", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "ハイレゾ FLAC 最大", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "downloadSingleFilenameFormat": "Single Filename Format", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "optionsDefaultSearchTab": "Default Search Tab", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Artist Tag Mode", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Single joined value", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "dialogDownload": "Download", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "searchSortTitle": "Sort Results", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Default", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Title (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Title (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Artist (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Artist (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Duration (Shortest)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Duration (Longest)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Release Date (Oldest)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Release Date (Newest)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "providerPriorityFallbackExtensionsTitle": "Extension Fallback", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "trackLyricsNotInFile": "No lyrics found in this file", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Fetch from Online", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "storeAddRepoTitle": "Add Extension Repository", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" - }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "Repository URL", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Add Repository", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Change repository", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Extension Repository", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Current repository:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "New Repository URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Failed to load repository", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "No extensions found", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Lossy Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Lossy 320kbps Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Every app open", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Weekly", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryFilterMetadata": "Metadata", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Missing year", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "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" - }, - "trackReEnrichFieldsTitle": "Fields to update", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "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" - }, - "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" - } - } - }, - "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "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" - } - } - }, - "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": { "type": "String" } } }, - "trackConvertLosslessHint": "Lossless conversion — no quality loss", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" + "@logFilterLevel": { + "description": "Filter by log level" }, - "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" - } - } + "sectionTheme": "テーマ", + "@sectionTheme": { + "description": "Settings section header" }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "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" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "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" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "lyricsProvidersEnabledSection": "Enabled ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "lyricsProvidersDisabledSection": "Disabled ({count})", - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "lyricsProvidersSaved": "Lyrics provider priority saved", - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "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, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music 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" - }, - "settingsDonateSubtitle": "Buy the developer a coffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "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 text in Android download location bottom sheet" - }, - "storageModeAppFolder": "App Folder (Recommended)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app 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 - use Android SAF picker" - }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" - }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" - }, - "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 enabled" - }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" - }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Auto", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the 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": "Select fields to fill automatically from online metadata", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "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" - } - } - }, - "queueDownloadedHeader": "Downloaded", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Search with {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "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": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto 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" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Cancel download?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Keep", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "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", + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Failed to load album", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Failed to load playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "トラックがありません", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Failed to load artist", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "プロバイダーの優先度", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Download Progress", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Shows download progress for tracks", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Library Scan", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Shows local library scan progress", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "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" - } - } - }, - "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" - } - } - }, - "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", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "デバイスから削除しますか?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4472,132 +653,514 @@ } } }, - "notifUpdateReady": "Update Ready", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "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" - }, - "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" + "setupGetStarted": "Get Started", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "レイアウト", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Fallback Extensions", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "source": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "extensionsMetadataPriority": "メタデータの優先度", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "updateCurrent": "現在", + "@updateCurrent": { + "description": "Label for current version" + }, + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "ストレージアクセスが必要です", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Just now", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Favorite Artists", + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Playlists", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "ログ", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "美しいアプリロゴを作成した才能あるアーティストです!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "プレビュー", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "ホーム", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "最小のアプリバージョン", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Converting {current} of {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "クライアント ID: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Never", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "トラック番号", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "貢献者", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "その他のユーザーとチャット", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Link not recognized", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "レート制限はありません", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "メタデータ", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Failed to load album", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "クライアント ID を貼り付け", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "検索ソース", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "すべてのファイルへのアクセス", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, "extensionsInstalledCount": "{count} extensions installed successfully", "@extensionsInstalledCount": { "description": "Success message after installing multiple extensions", @@ -4608,6 +1171,3228 @@ } } }, + "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "すべて消去", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "フォルダから削除", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "メタデータ", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "Too many requests. Please wait a moment before searching again.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "ファイルがありません", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "PC 版のソースコード", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "{platform} の URL をクリップボードにコピーしました", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Fetching {current} of {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "サービス", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "Added {count} tracks to queue", + "cueSplitTrackCount": "{count} tracks", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "プレイリストをインポート", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "ローカルライブラリ", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Release Date (Newest)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "シングルと EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Extension Fallback", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "プレイリスト: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "詳細ログ", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "アクション", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "失敗: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Extension providers are required", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "オプション", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "更新のダウンロードに失敗しました", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "再試行", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Tap any track to play it with your music player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "選択を解除", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "サポート: トラック、アルバム、プレイリスト、アーティスト、URL", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Playlist is empty", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "ダウンロードフォルダ内のすべてのファイル", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "アルバム", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "cacheSectionMaintenance": "メンテナンス", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / 最大 192kHz", + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "アーティスト/アルバム", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "ファイルが開けません: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "必須 - タップで設定", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "このトラックの歌詞は利用できません", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "ユーティリティ", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Added to \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "キャッシュを消去しますか?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[年] アルバム", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "ストレージとキャッシュ", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "メタデータプロバイダーの拡張はありません", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Title (Z-A)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Finalizing library...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Auto Fallback", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "モバイルバージョンの開発者", + "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "アンインストール", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Delete playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "ダウンロード", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "アーティスト", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "URL ハンドラ", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 分前} other{{count} 分前}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} 個のエントリ", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "検索とメタデータソースの順序を設定", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "トラックを選択で削除", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Change download location and folder organization", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Limited to media folders only", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "ダウンロード", + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "トラックを選択で削除", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "レーベル", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "キャンセル", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "通知を有効化する", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "作者", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "ファイル名の形式", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "検索履歴...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "歌詞を埋め込む", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "クライアントシークレットを貼り付け", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "履歴を消去しました", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "歌詞のプロバイダー", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "すべて", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Finding Music", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Spotify で開く", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Downloaded", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "一部のアルバムの取得に失敗しました", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "オーディオ品質", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "View size and clear cached data", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "アルバムを選択...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "カスタムトラックマッチング", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "機能", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Lossy 320kbps Format", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "「{trackName}」をキューに追加しました", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Every app open", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "リスト", + "updateDownloadInstall": "ダウンロードとインストール", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Title (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "オーディオ品質", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Converted to {format} successfully", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "更新", + "libraryFilterMetadataMissingAny": "Missing any metadata", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Add to Playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "権限", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "お知らせと更新", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", + "discographyAlbumsOnlySubtitle": "{count} tracks from {albumCount} albums", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "通知を有効化する", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "テーマ、カラー、画面", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "再生", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "ダウンロード前に確認する", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "インストゥルメンタルのトラック", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Skip Duplicate Downloads", + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "今はスキップ", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "New Repository URL", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "再生", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "更新チャンネル", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Artist (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Deezer で開く", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "iCloud またはその他の場所を選択", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} 人の月間リスナー", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "キャッシュ済みデータ", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "Download completed", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "アプリのドキュメントフォルダ", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "Failed to load repository", + "settingsDownloadNetwork": "ダウンロードネットワーク", + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Single joined value", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Artist (Z-A)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Service, quality, fallback", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "最終スキャン: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "新着", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "ダウンロードプロバイダーを管理", + "sortAlphaAsc": "A-Z", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Select All", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "アルバム/アーティスト名/[2005] アルバム名/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "トラックを取得中です...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "エラー", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "リリース日", + "discographySelectedCount": "{count} 個を選択済み", + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "updateStartingDownload": "ダウンロードを開始中...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "ディスク番号", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "拡張の使用: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "No orphaned entries found", + "discographySkippedDownloaded": "{added} added, {skipped} already downloaded", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Error: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "discographyAlbumsOnly": "アルバムのみ", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", + "aboutSocial": "ソーシャル", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "No search providers yet", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "インストール済み", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "Download", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "歌詞の読み込みに失敗しました", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "Wi-Fi のみ", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} を更新しました。", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "音楽をダウンロード中", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", + "navLibrary": "ライブラリ", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "No extensions available", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "Preview may contain bugs or incomplete features", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Library scan complete", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "新しいプロバイダーを追加するには .spotiflac-ext ファイルをインストールします", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "スペシャルサンクス", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "インストール", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "アルバム", + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Enable formatted tags for track padding and date patterns", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "エントリー ({count} 個をフィルター済み)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Add Repository", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "問題を報告する", + "snackbarFailedToWriteStorage": "Failed to write back to storage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", + "setupChooseFromFiles": "ファイルから選択", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "拡張のインストールが成功しました", + "progressReadingCsv": "CSV を読み取り中...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "Default Search", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", + "downloadLossy320": "Lossy 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Queue FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Provider Options", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "No download history", + "optionsTitle": "オプション", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "消去", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "変換を確認", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "Playlist deleted", + "metadataMayRateLimit": "May rate limit", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "Love All", + "downloadDirectory": "ダウンロードディレクトリ", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "ライブラリのフォルダ", + "optionsMaxQualityCoverSubtitle": "最高解像度のカバーアートをダウンロード", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "ビットレート", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Size", + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "エントリー ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "アルバム別", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "アプリ", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "storeFilterIntegration": "統合", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "ダウンロード済み", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "On iOS, downloads are saved to the app's Documents folder. You can access them via the Files app.", + "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "曲", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "ファイル設定", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "dialogDelete": "削除", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "認証情報を保存しました", + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Lossless conversion — no quality loss", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Rename playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "アーティスト", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", + "artistCompilations": "コンピレーション", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Library Scan", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "ファイル情報", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "audioAnalysisNoClipping": "No clipping", + "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "Separate .lrc file for players like Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Use the default metadata search", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "歌詞を読み込み", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "リセット", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Extension Repo", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Library cleared", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "ローカルライブラリ", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "すべてのトラックを選択済み", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "ライブラリを消去", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "すべて消去", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "作者 {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Genre", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "By Playlist", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "カバー画像を保存", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "デフォルトを使用する", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Logs will appear here as you use the app", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Download Progress", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "歌詞", + "libraryAutoScan": "Auto Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "ストレージの権限が必要です", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "グリッド", + "trackConvertConverting": "オーディオを変換中...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "There are two easy ways to find music you want to download.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unknown Album", + "trackCoverCurrent": "Current cover", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "完了", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "Repository URL", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress}% of {total} files", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Loved folder is empty", + "tutorialExtensionsTitle": "拡張", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Duration (Shortest)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "ファイルパスをコピー", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "拡張の更新に失敗しました", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Playlist name", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Choose Language", + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "ダウンロード先", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "アプリキャッシュのディレクトリ", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "ポストプロセス", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "ログをクリップボードにコピーしました", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "デフォルトのフォルダを使用しますか?", + "tutorialSearchHint": "Paste or search...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "外部 .lrc ファイル", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "ログを検索...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "クライアント ID", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "required", + "actionCancel": "キャンセル", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Single Filename Format", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Spotify のトラックを FLAC でダウンロード", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "デバイスから削除", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "キャッシュの概要", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Storage Update Required", + "snackbarMetadataSaved": "Metadata saved successfully", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "ログを消去", + "extensionsCustomSearch": "カスタム検索", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "actionRemoveCredentials": "認証情報を削除", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "{count} 個のトラックをキューに追加しました", + "downloadFilenameInsertTag": "Tap to insert tag:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Re-analyze", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Select a folder first", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Not configured", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "オーディオを変換", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "今はスキップ", + "sectionDownload": "ダウンロード", + "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "拡張は新しいメタデータとダウンロードプロバイダーを追加することがあります。信頼できるソースからの拡張のみをインストールしてください。", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Missing year", + "extensionsDownloadPriority": "ダウンロードの優先度", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "ライブラリをスキャン", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "ダウンロードに失敗しました", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "ピュアブラックの背景", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Shows download progress for tracks", + "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", "@extensionsInstallPartialSuccess": { "description": "Message when installing multiple extensions partially succeeds", @@ -4622,155 +4407,99 @@ } } }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", "placeholders": { "count": { "type": "int" } } }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "notifLibraryScanCancelled": "Library scan cancelled", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" }, - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" + "collectionPlaylistNameRequired": "Playlist name is required", + "libraryCleanupMissingFiles": "Cleanup Missing Files", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" + "searchSortTitle": "Sort Results", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" }, "audioAnalysisLufs": "LUFS", - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" + "extensionsErrorLoading": "拡張の読み込みエラー", + "@actionPaste": { + "description": "Generic action - paste from clipboard" }, - "audioAnalysisClipping": "Clipping", - "@audioAnalysisClipping": { - "description": "Clipping metric label" + "aboutFeatureRequestSubtitle": "アプリの新機能を提案する", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" }, - "audioAnalysisNoClipping": "No clipping", - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" + "@aboutTitle": { + "description": "About page title" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" + "@actionGo": { + "description": "Generic action button label" }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "更新済み", + "@extensionUpdated": { + "description": "Extension detail - last update" }, - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" + "downloadLossyFormat": "Lossy Format", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" }, - "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", + "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" + "trackName": { + "type": "String" } } }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "libraryFilterQuality": "品質", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" }, - "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", + "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" } } }, - "searchTracks": "Tracks", - "@searchTracks": { - "description": "Search filter label - tracks" + "@discographyDownload": { + "description": "Button - download artist discography" }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "trackReEnrichFieldsTitle": "Fields to update", + "aboutFeatureRequest": "機能の要望", + "downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" }, - "homeSearchHintProvider": "Search with {providerName}...", - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", + "queueClearAllMessage": "すべてのダウンロードを消去してもよろしいですか?", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", "placeholders": { - "providerName": { + "time": { "type": "String" } } @@ -4779,253 +4508,519 @@ "@homeImportCsvTooltip": { "description": "Tooltip for importing a CSV file into Home search" }, - "homeChangeSearchProviderTooltip": "Change search provider", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "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" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "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" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "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", + "dialogClearHistoryTitle": "履歴を消去", "@logClearSearch": { "description": "Tooltip for clearing the log search field" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "dialogImport": "インポート", + "@dialogImport": { + "description": "Dialog button - import data" }, - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" }, - "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" + "notifLibraryScanErrors": "{count} errors", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "拡張をアンインストールしますか?", + "recentTypePlaylist": "プレイリスト", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "システム", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "アーティスト / アルバム + シングル", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "ストレージアクセスが必要です", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "削除", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "メタデータプロバイダーの優先度を保存しました", + "setupPermissionRequired": "{permissionType} の権限が必要です", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Degraded", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "No lyrics found in this file", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Spotify の認証情報", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "すべてのダウンロードを表示", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "setupNext": "次へ", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Daily", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "trackConvertFailed": "変換に失敗しました", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "アンインストール", + "safMigrationSuccess": "Download folder updated to SAF mode", + "optionsClearHistorySubtitle": "ダウンロード済みのすべてのトラックを履歴から削除", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "optionsUpdateChannelStable": "安定版リリースのみ", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "プレイリスト", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "settingsAppearance": "外観", "logIssueRateLimitedLabel": "RATE LIMITED", "@logIssueRateLimitedLabel": { "description": "Diagnostic badge label when the service rate limits requests" }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "Current repository:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" }, - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" + "@trackLyrics": { + "description": "Tab title - lyrics" }, - "logIssueNetworkErrorDescription": "Connection issues detected", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "@backupImportButton": { + "description": "Button to pick a backup file to restore" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "@setupFolderChoose": { + "description": "Button to choose folder" }, - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" + "@regionCountryAU": { + "description": "Country name for SongLink region picker" }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" + "libraryFilterApply": "適用", + "@libraryFilterApply": { + "description": "Apply filters button" }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "歌詞", + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "Split into {count} tracks successfully", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", "placeholders": { - "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", + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "downloadLossyOpus128": "Opus 128kbps", + "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "{count} {count, plural, =1{個のトラック} other{個のトラック}}を削除", + "updateLater": "後で", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "再開", + "optionsDetailedLoggingOff": "バグレポートを有効", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "storeSearch": "拡張を検索...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Telegram コミュニティ", + "lyricsModeBoth": "両方", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Automatically scan your library for new files", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "ローカルライブラリを有効", + "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", + "trackConvertTargetFormat": "ターゲットの形式", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "設定", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "リクエストがタイムアウトしました。後ほどお試しください。", + "settingsExtensions": "拡張", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "ダウンロード済み", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "ダイナミックカラー", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "credentialsTitle": "Spotify の認証情報", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "外観", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 個のトラック} other{{count} 個のトラック}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Clear search", + "trackSaveLyrics": "歌詞を保存 (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Download Complete", + "snackbarAlreadyDownloaded": "「{trackName}」は既にダウンロードされています", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Separate folder for each album", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Search for tracks", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Embed and save .lrc file", + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "歌詞", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "ストラテジー: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Cancel download?", + "updateWhatsNew": "新着情報", + "updateNewVersionReady": "新しいバージョンの準備ができています", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Select track", + "libraryClearSubtitle": "Remove all scanned tracks", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Repo", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "スキャン設定", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "再生時間", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Search tracks...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "ライブラリ内", + "pressBackAgainToExit": "Press back again to exit", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "通知の権限が許可されました!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Support Development", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "通知しない", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Searching online...", + "discographyDownloadSelected": "選択済みをダウンロード", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Choose the default search provider to switch back from an extension", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "一時ディレクトリ", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Show Duplicate Indicator", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "更新を確認", + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "recentTypeAlbum": "アルバム", + "providerExtension": "拡張", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "No cover art source available", + "libraryFilterMetadata": "Metadata", + "albumFolderArtistYearAlbum": "アーティスト / [年] アルバム", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5040,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} by {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "安定版", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Customize app theme and appearance", + "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -5052,6 +5062,320 @@ } } }, + "dialogRemove": "削除", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "Try other services if download fails", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} 個のパターン", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "This link is not supported. Make sure the URL is correct and a compatible extension is installed.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Artist Tag Mode", + "libraryFilterMetadataComplete": "Complete metadata", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", + "libraryScanning": "スキャン中...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Refresh", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "extensionEnterValue": "Enter value", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Loved", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Add Extension Repository", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "No playlists yet", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "アーティスト別", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "翻訳者", + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "editMetadataFieldTitle": "Title", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Failed to load artist", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "実際の品質はサービスからのトラックの可用性に依存します", + "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Z-A", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC はダウンロードした音楽ファイルを保存するためにストレージの権限が必要です。", + "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", + "tutorialLibraryTip3": "Switch between list and grid view for better browsing", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "ライト", + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "ダウンロードフォルダを選択", + "dialogDownloadAllTitle": "Download All", + "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "利用可能なアルバムがありません", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "cacheNoData": "キャッシュデータはありません", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "aboutTitle": "アプリについて", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "履歴の表示", + "audioAnalysisSampleRate": "Sample Rate", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "Track lookup cache", + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Refresh status", + "notifAllDownloadsComplete": "All Downloads Complete", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "共有", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{albumCount} 個のリリースから {count} 個のトラック", + "settingsDonateSubtitle": "Buy the developer a coffee", + "libraryFilterDownloaded": "ダウンロード済み", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Scan stopped before completion.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "歌詞をコピー", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "アルバムフォルダの構造", + "downloadMusixmatchAuto": "Auto", + "actionDismiss": "Dismiss", + "storeFilterAll": "すべて", + "extensionsDisabled": "無効", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "あなたのライブラリ", + "optionsCheckUpdatesSubtitle": "Notify when new version is available", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "{count} ヶ月前", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Legacy", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Playlist renamed", + "collectionCreatePlaylist": "Create playlist", + "homeGoToAlbum": "Go to Album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Separate folder for each artist", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "バージョン {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Primary artist only for folders", + "tutorialExtensionsTip2": "Add new download providers or search sources", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "SpotiFLAC へようこそ!", "a11ySelectAlbum": "Select album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -5061,89 +5385,679 @@ } } }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "モバイル版のソースコード", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "ソース", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "ストレージアクセス", + "logFilterBySeverity": "Filter logs by severity", + "libraryFolderNotExist": "Selected folder does not exist", + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "albumFolderArtistAlbum": "アーティスト / アルバム", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Empty only", + "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "拡張のプロバイダーを使用する", + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Missing genre", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "setupFolderDescription": "Select a folder where your downloaded music will be saved.", + "extensionDetailsTags": "Tags", + "unknownArtist": "Unknown Artist", + "trackFetchOnlineLyrics": "Fetch from Online", + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, + "downloadAllCount": "すべてダウンロード ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "ディスク {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "認証情報を保存", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "ウィッシュから削除", + "extensionsFallbackTitle": "Fallback Extensions", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "選択済みを削除", + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", + "appearanceThemeDark": "ダーク", + "downloadedAlbumTapToSelect": "トラックをタップで選択", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "updateDownloading": "ダウンロード中...", + "trackLyricsSource": "Source: {source}", + "logFilterLevel": "レベル", + "logNoLogsYet": "まだログはありません", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Auto", + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "今日", + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Bit Depth", "editMetadataFieldTrackTotal": "Track Total", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "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" - }, - "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" - }, - "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", + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "optionsSpotifyWarning": "Spotify は独自の API 認証情報が必要です。developer.spotify.com から取得できます。", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "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": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "メタデータを編集", + "discographyDownloadAll": "すべてダウンロード", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "アルバム/アーティスト名/アルバム名/", + "extensionHealthServiceUnknown": "Service status unknown", + "navHome": "ホーム", + "queueDownloadStarting": "Starting...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "ハイレゾ FLAC", + "selectionSelected": "{count} 個を選択済み", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "ディスコグラフィをダウンロード", + "editMetadataFieldCopyright": "Copyright", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Sort", + "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", + "dialogRemoveExtension": "拡張を削除", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "すべて選択", + "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", + "downloadFolderOrganization": "フォルダ構成", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "すべてのトラックを選択済み", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "デバッグのためのアプリログを表示", + "albumFolderYearAlbumSubtitle": "アルバム/[2005] アルバム名/", + "cancelDownloadKeep": "Keep", + "optionsDetailedLoggingOn": "詳細なログを記録しています", + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Update Failed", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "ローカル", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "サービス", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "notifUpdateFailedBody": "Could not download update. Try again later.", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "artistPopular": "人気", + "extensionRemoveButton": "拡張を削除", + "allFilesAccessEnabledSubtitle": "Can write to any folder", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "検索のプロバイダー", + "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", + "selectionBatchConvertConfirmTitle": "一括変換", + "extensionMetadataProvider": "メタデータのプロバイダー", + "queueDownloadedFileMissing": "Downloaded file missing", + "logClearLogs": "ログを消去", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "アーティスト", + "extensionCustomUrlHandling": "Custom URL Handling", + "appearanceDynamicColorSubtitle": "壁紙の色を使用する", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "Default", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choose how album folders are structured", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "App Folder (Recommended)", + "collectionPlaylistCreated": "Playlist created", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Save album art as .jpg file", + "actionPaste": "Paste", + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "downloadNativeWorker": "Native download worker", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "状態を更新", + "collectionPlaylistChangeCover": "カバー画像を変更", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "ダウンロード履歴を消去", + "trackGenre": "ジャンル", + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "libraryFilterMetadataMissingArtist": "Missing artist", + "extensionsNoCustomSearch": "カスタム検索の拡張はありません", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "ダウンロードのプロバイダー", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "歌詞モード", + "aboutReportIssueSubtitle": "問題が発生した場合に報告してください", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "AMOLED ダーク", + "logIssueNetworkErrorDescription": "Connection issues detected", + "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "権限を許可", + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "{count} 日前", + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "Wishlist is empty", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Service degraded", + "optionsUseExtensionProvidersOn": "Extension providers are enabled", + "selectionConvertNoConvertible": "No convertible tracks selected", + "snackbarCredentialsCleared": "認証情報を消去しました", + "setupStorageGranted": "ストレージの権限が許可されました!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} excluded", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Change folder", + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "ライブラリを消去", + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "storeCategoryMetadata": "Metadata", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "tutorialLibraryTip1": "View download progress and queue in the Library tab", + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "ローカル", + "tutorialDownloadInProgressSemantics": "Download in progress", + "searchSortDurationLong": "Duration (Longest)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "ローカルライブラリについて", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "appearanceSelectAccentColor": "Select accent color {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "Rescan ReplayGain", + "downloadSeparateSinglesFolder": "シングルのフォルダを分割", + "trackAlbumArtist": "アルバムアーティスト", + "qualityFlacLossless": "FLAC ロスレス", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Customize Your Experience", + "extensionActionFailed": "Action failed", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "notifChannelLibraryScanDesc": "Shows local library scan progress", + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" removed", + "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "optionsPrimaryProvider": "プライマリーのプロバイダー", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", + "homeAlbumInfoUnavailable": "Album info not available", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unknown", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "ダウンロードの自動エクスポートに失敗しました", + "logFilterSection": "フィルター", + "dialogDiscardChanges": "変更を破棄しますか?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Tracks", + "searchAlbums": "アルバム", + "trackConvertFormat": "変換の形式", + "metadataProviderPriorityTitle": "メタデータの優先度", + "libraryFolderHint": "タップでフォルダを選択", + "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "アルバム", + "updateAvailable": "更新が利用可能です", + "optionsEmbedLyrics": "歌詞を埋め込む", + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", + "settingsTitle": "設定", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Explore feed cache", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} 個を選択済み", + "downloadAskQualitySubtitle": "Show quality picker for each download", + "filenameShowAdvancedTags": "高度なタグを表示", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "ライブラリのカバーキャッシュ", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "snackbarFillAllFields": "すべての項目を入力してください", + "actionCreate": "Create", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} 個をダウンロード済み", + "snackbarLoadingCueSheet": "Loading CUE sheet...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "オリジナルの SpotiFLAC の作者", + "a11yTrackByArtist": "{trackName} by {artistName}", + "audioAnalysisDynamicRange": "Dynamic Range", + "homeChangeSearchProviderTooltip": "Change search provider", + "loadingSharedLink": "共有リンクを読み込み中...", + "lyricsModeEmbedSubtitle": "FLAC メタデータに保存された歌詞", + "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", + "snackbarViewQueue": "キューを表示", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Choose specific albums or singles", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "Failed to load content from this link. Please try again.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "保存", + "trackReEnrichSearching": "Searching metadata online...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "downloadFilenameFormat": "ファイル名の形式", + "cueSplitTitle": "分割 CUE シート", + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "{item} を読み込めません: 拡張ソースがありません", + "albumFolderAlbumOnlySubtitle": "アルバム/アルバム名/", + "errorLoadPlaylist": "Failed to load playlist", + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "破棄", + "storageModeSaf": "Custom Folder (SAF)", + "errorRateLimited": "レート制限", + "downloadSelectQuality": "品質を選択", + "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", + "collectionFoldersTitle": "My folders", + "credentialsClientSecret": "クライアントシークレット", + "progressFetchingMetadata": "メタデータを取得中... {current}/{total}", + "settingsDownloadNetworkAny": "Wi-Fi + モバイルデータ", + "audioAnalysisDuration": "Duration", + "audioAnalysisAnalyzing": "Analyzing audio...", + "credentialsDescription": "Enter your Client ID and Secret to use your own Spotify application quota.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Play preview", + "setupPermissionRequiredMessage": "最適な体験を得るには {permissionType} の権限が必要です。この権限は設定で後から変更できます。", + "aboutVersion": "バージョン", + "qualityHiResFlacSubtitle": "24-bit / 最大 96kHz", + "audioAnalysisSamples": "Samples", + "libraryFilterQualityHiRes": "ハイレゾ (24bit)", + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "著作権", + "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", + "trackCopiedToClipboard": "クリップボードにコピーしました", + "optionsEmbedMetadata": "Embed Metadata", "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5159,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Integration", + "storeClearFilters": "フィルターを消去", + "navSettings": "設定", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "アプリ", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "トラック名", + "homeRecent": "最近", + "recentEmpty": "No recent items yet", + "cacheClearAll": "すべてのキャッシュを消去", + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "editMetadataFieldAlbum": "Album", + "settingsAbout": "アプリについて", + "libraryFilterTitle": "フィルター", + "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", + "extensionHooksAvailable": "{count} 個のフックが利用可能です", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "Lyrics embedded successfully", + "optionsUpdateChannelPreview": "プレビューリリースを入手", + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "libraryForceFullScan": "強制フルスキャン", + "snackbarProviderPrioritySaved": "プロバイダーの優先度を保存しました", + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Service Status", + "dateWeeksAgo": "{count} 週間前", + "historyFilterSingles": "シングル", + "tutorialSettingsTip2": "Set default audio quality and format preferences", + "trackLyricsSaved": "Lyrics saved to {fileName}", + "cacheClearAllConfirmTitle": "すべてのキャッシュを消去しますか?", + "noTracksFoundForAlbum": "No tracks found for this album", + "sectionLanguage": "言語", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "フォルダを選択", + "dateYesterday": "昨日", + "collectionAddToPlaylist": "Add to playlist", + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "libraryScanCancelled": "Scan cancelled", + "appearanceLanguage": "アプリの言語", + "extensionsTitle": "拡張", + "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", + "permissionNotification": "Notification", + "notifUpdateReady": "Update Ready", + "lyricsModeDescription": "Choose how lyrics are saved with your downloads", + "downloadFrom": "ダウンロード元", + "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", + "optionsMaxQualityCover": "最大品質のカバー", + "trackOptionAddToWishlist": "ウィッシュリストに追加", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "extensionsNoDownloadProvider": "ダウンロードプロバイダーの拡張はありません", + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "collectionPlaylistRemoveCover": "カバー画像を削除", + "storeEmptyNoResults": "No extensions found", + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "editMetadataFieldComment": "Comment", + "settingsMetadata": "Metadata", + "settingsCache": "ストレージとキャッシュ", + "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", + "libraryFilterAll": "すべて", + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "extensionsProviderPrioritySection": "プロバイダーの優先度", + "storeChangeRepoTooltip": "Change repository", + "snackbarFailedToInstall": "拡張のインストールに失敗しました", + "libraryScanSubtitle": "オーディオファイルをスキャン", + "snackbarExtensionInstalled": "{extensionName} をインストールしました。", + "setupOpenSettings": "設定を開く", + "extensionsInstalledSection": "インストール済みの拡張", + "aboutLinks": "リンク", + "trackCoverClearSelected": "Clear selected cover", + "libraryAutoScanWeekly": "Weekly", + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "optionsDefaultSearchTab": "Default Search Tab", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "ダウンロードしたファイルをフォルダに整理する", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "Embed in file", + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Lossy", + "actionPause": "一時停止", + "csvImportTracks": "{count} tracks from CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "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...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "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": { + "providerName": { "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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": {} - } - } + "sectionDebug": "デバッグ", + "editMetadataFieldDate": "Date", + "timeHoursAgo": "{count, plural, =1{1 時間前} other{{count} 時間前}}", + "sectionPerformance": "パフォーマンス", + "extensionsSearchWith": "Search with {providerName}", + "extensionsDownloadPrioritySubtitle": "ダウンロードサービスの順序を設定", + "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", + "sectionData": "データ", + "notifFinalizingTrack": "Finalizing {trackName}", + "snackbarFileNotFound": "ファイルがありません", + "extensionQualityOptions": "品質のオプション", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "Extension Repository", + "extensionsSearchProviderDescription": "トラックの検索に使用するサービスを選択してください", + "albumFolderAlbumOnly": "アルバムのみ", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "Split into Tracks" } diff --git a/lib/l10n/arb/app_ko.arb b/lib/l10n/arb/app_ko.arb index a3b720f9..ca2d571e 100644 --- a/lib/l10n/arb/app_ko.arb +++ b/lib/l10n/arb/app_ko.arb @@ -1,2455 +1,33 @@ { "@@locale": "ko", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "기존 음악을 스캔하고 추적하세요", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Home", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Library", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Settings", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Repo", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Home", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "지원되는 URL을 붙여 넣거나, 이름을 검색", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeSupports": "지원 항목: 트랙, 앨범, 플레이리스트, 아티스트 URLs", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "최근 기록", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyFilterAll": "All", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Albums", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Singles", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historySearchHint": "검색 기록...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Settings", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "다운로드", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "외관", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "옵션", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "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": "Single Filename Format", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "downloadFolderOrganization": "폴더 분류 형식", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "외관", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "System", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "밝은", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "다크", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Dynamic Color", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "배경 화면을 참고하여 강조 색상이 지정됩니다", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "기록 정렬 방식", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "List", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Grid", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "옵션", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "기본 제공자", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "확장 기능을 사용: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsDefaultSearchTab": "Default Search Tab", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "자동 재시도", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "다운로드가 실패한 경우, 다른 서비스로 재시도", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "확장 기능 사용", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "가사 삽입", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "고품질 커버 이미지", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "최고 품질의 커버 이미지를 다운로드", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Artist Tag Mode", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Single joined value", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "optionsExtensionStore": "Extension Repo", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store 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" - }, - "optionsSpotifyCredentials": "Spotify 자격 증명", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "탭하여 설정", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify는 사용자 고유의 API 자격 증명을 요구합니다. developer.spotify.com에서 무료로 발급받으세요", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify API 변경으로 인해 Spotify 검색 기능은 2026년 3월 3일부터 더 이상 지원되지 않습니다. Deezer로 전환해 주세요", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "확장 기능", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "비활성화", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Version {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "by {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "삭제", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Extension Repo", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "확장 기능 검색", - "@storeSearch": { - "description": "Store 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": "Mobile source code", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "PC 소스 코드", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "문제 신고", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "발생하는 모든 문제를 신고하여 주세요.", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "기능 요청", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "앱의 새로운 기능을 제안하여 주세요.", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Telegram Channel", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "공지 및 업데이트 안내", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Telegram Community", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "다른 이용자와 소통", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "소셜", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "App", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Version", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "I Don't Have Spotify(IDHS) 개발자입니다. 위급 상황 발생 시 해결해 주는 대체 링크 해결 도구를 만들었습니다!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "앨범", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "싱글 및 EP", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "편집", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "인기순", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "월간 청취자: {count}", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "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": "Android 11 이상 버전에서는 선택한 다운로드 폴더에 파일을 저장하려면 \"모든 파일 접근\" 권한이 필요합니다.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "설정으로 이동", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "권한이 거부되었습니다. 계속하려면 모든 권한을 허용해 주세요.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "{permissionType} 권한 필요", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "최상의 사용 경험을 위해 {permissionType} 권한이 필요합니다. 설정에서 나중에 변경할 수 있습니다.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "기본 폴더를 사용하시겠습니까?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "선택된 폴더가 없습니다. 기본 음악 폴더를 사용하시겠습니까?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "기본값 사용", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "다운로드 경로", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "iOS에서는 다운로드한 파일이 앱의 문서 폴더에 저장됩니다. 파일 앱을 통해 해당 파일에 접근할 수 있습니다.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "앱 문서 폴더", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "권장 사항 - 파일 앱을 통해 접근 가능", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "파일 탐색기에서 선택", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "iCloud 또는 다른 위치를 선택하세요", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "iOS 제한 사항: 빈 폴더는 선택할 수 없습니다. 파일이 하나 이상 있는 폴더를 선택하세요.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive는 지원되지 않습니다. 앱의 문서 폴더를 사용해 주세요.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Spotify 음악을 FLAC 형식으로 다운로드하세요.", - "@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" - }, - "dialogCancel": "취소", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogSave": "저장", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "삭제", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "재시도", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClear": "지우기", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogDone": "완료", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "불러오기", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDownload": "Download", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "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, =1{track} other{tracks}}를 삭제하시겠습니까?", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "재생 목록 가져오기", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "CSV 파일에서 {count}개의 트랙을 찾았습니다. 다운로드 대기열에 추가하시겠습니까?", - "csvImportTracks": "CSV 파일의 트랙: {count}", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@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" - }, - "snackbarCredentialsSaved": "자격 증명이 저장되었습니다.", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "자격 증명이 제거되었습니다.", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "{count}{count, plural, =1{track} other{tracks}} 제거됨", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "파일을 열 수 없습니다: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "모든 항목을 입력해 주세요.", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "View Queue", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "{platform} 링크가 클립보드에 저장됨", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "파일을 찾을 수 없음", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": ".spotiflac-ext 확장자 파일을 선택", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "제공자 우선순위 저장됨", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "메타데이터 제공자 우선순위 저장됨", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName}(이)가 설치됨", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "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": "Rate Limited", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "요청이 너무 많습니다. 잠시 후 다시 검색해 주세요.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "트랙을 찾을 수 없습니다", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "errorUrlNotRecognized": "Link not recognized", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "This link is not supported. Make sure the URL is correct and a compatible extension is installed.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Failed to load content from this link. Please try again.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "확장 소스가 누락되어, {item}(을)를 로드할 수 없습니다", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "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" - }, - "actionRemoveCredentials": "자격 증명 제거", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "자격 증명 저장", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count}개 선택됨", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "모든 트랙 선택됨", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "삭제할 트랙을 선택", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "메타데이터 가져오는 중... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "CSV 파일을 읽는 중...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "곡들", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "아티스트들", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "앨범들", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "재생목록들", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Sort Results", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Default", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Title (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Title (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Artist (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Artist (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Duration (Shortest)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Duration (Longest)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Release Date (Oldest)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Release Date (Newest)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "재생", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Filename Format", - "@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": "By Playlist", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "By Artist", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "By Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Artist/Album", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Organize downloaded files into folders", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "All files in download folder", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Separate folder for each artist", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Separate folder for each album", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Nested folders for artist and album", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Update Available", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Later", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Starting download...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Download failed", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Failed to download update", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "A new version is ready", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Current", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "New", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "Downloading...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "What's New", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "Download & Install", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Don't remind", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "Provider Priority", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "If a track is not available on the first provider, the app will automatically try the next one.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerPriorityFallbackExtensionsTitle": "Extension Fallback", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Extension", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Metadata Priority", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "No rate limits", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "May rate limit", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Logs", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopied": "Logs copied to clipboard", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Search logs...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Level", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filter", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Share logs", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "로그 제거", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "로그 제거", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "extensionUtilityFunctions": "유틸리티 함수", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "모든 로그를 삭제하시겠습니까?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "심각성에 따라 로그 분류", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "어떠한 로그도 없음", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "앱을 사용하는 동안 로그가 여기에 표시됩니다.", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "({count} filtered)개 항목 필터링", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "항목 수: ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Spotify 자격 증명", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Spotify 애플리케이션 할당량을 사용하려면 클라이언트 ID와 비밀키를 입력하세요.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Client ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Client ID를 붙여넣으세요", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "비밀키", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "비밀키를 붙여넣으세요", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "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": "Debug", - "@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 파일", - "@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": "Theme", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Layout", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Language", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "App Language", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "settingsAppearanceSubtitle": "Theme, colors, display", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Manage download providers", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "View app logs for debugging", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Loading shared link...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Press back again to exit", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Download All ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Copy file path", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Remove from device", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Load Lyrics", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Metadata", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "File Info", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Lyrics", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "File not found", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Open in Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Open in Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Track name", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Artist", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Album artist", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Album", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Track number", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Disc number", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Duration", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Audio quality", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Release date", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Genre", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Label", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Copyright", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "Downloaded", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Copy lyrics", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsNotAvailable": "Lyrics not available for this track", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsNotInFile": "No lyrics found in this file", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Fetch from Online", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "trackLyricsTimeout": "Request timed out. Try again later.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Failed to load lyrics", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Embed Lyrics", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Lyrics embedded successfully", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Instrumental track", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "Copied to clipboard", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Remove from device?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "This will permanently delete the downloaded file and remove it from your history.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "Today", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Yesterday", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "{count} days ago", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "{count} weeks ago", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "{count} months ago", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "All", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Metadata", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Download", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Utility", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Lyrics", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Integration", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Clear filters", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Add Extension Repository", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" + "cacheCleanupUnused": "사용되지 않는 데이터 정리", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" + "trackConvertDitherNone": "없음", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, - "storeRepoUrlLabel": "Repository URL", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Add Repository", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Change repository", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Extension Repository", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Current repository:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "New Repository URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Failed to load repository", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "No extensions found", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Author", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Error", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Capabilities", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Metadata Provider", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Download Provider", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Lyrics Provider", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "URL Handler", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Quality Options", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Post-Processing Hooks", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Permissions", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Settings", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Remove Extension", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Updated", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Min App Version", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Custom Track Matching", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Post-Processing", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} hook(s) available", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionPatternsCount": "{count} pattern(s)", - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionStrategy": "Strategy: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "extensionsProviderPrioritySection": "Provider Priority", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Installed Extensions", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "No extensions installed", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Install .spotiflac-ext files to add new providers", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Install Extension", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Extensions can add new metadata and download providers. Only install extensions from trusted sources.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "Extension installed successfully", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsDownloadPriority": "Download Priority", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Set download service order", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "No extensions with download provider", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Metadata Priority", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Set search & metadata source order", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "No extensions with metadata provider", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Search Provider", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "No extensions with custom search", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Choose which service to use for searching tracks", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Custom search", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Error loading extension", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Lossless", - "@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-bit / up to 96kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / up to 192kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Lossy Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Lossy 320kbps Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "Actual quality depends on track availability from the service", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Ask Before Download", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Download Directory", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Separate Singles Folder", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Album Folder Structure", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Choose how album folders are structured", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Select Quality", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Download From", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "AMOLED Dark", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Pure black background", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Clear All", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Are you sure you want to clear all downloads?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Auto-export failed downloads", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Download Network", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "WiFi + Mobile Data", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "WiFi Only", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Artist / Album", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Albums/Artist Name/Album Name/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Artist / [Year] Album", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Albums/Artist Name/[2005] Album Name/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Album Only", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Albums/Album Name/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Year] Album", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Albums/[2005] Album Name/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Artist / Album + Singles", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Artist/Album/ and Artist/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Delete Selected", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} selected", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "All tracks selected", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Tap tracks to select", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Select tracks to delete", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Disc {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "recentTypeArtist": "Artist", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Album", - "@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" - }, - "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" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Every app open", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Weekly", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Scan Library", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Scan for audio files", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Clear Library", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Clear Library", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "About Local Library", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", + "libraryTracksUnit": "{count, plural, =1{트랙} other{트랙}}", "@libraryTracksUnit": { "description": "Unit label for tracks count (without the number itself)", "placeholders": { @@ -2458,1023 +36,60 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "folderOrganizationNone": "정리하지 않음", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScanned": "Last scanned: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "In Library", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Selected folder does not exist", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Local", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "All", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Downloaded", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Local", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filters", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Lossy", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterMetadata": "Metadata", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Missing year", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "libraryFilterSort": "Sort", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "timeJustNow": "Just now", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Finding Music", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "There are two easy ways to find music you want to download.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Downloading Music", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Your Library", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "View download progress and queue in the Library tab", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Tap any track to play it with your music player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Switch between list and grid view for better browsing", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Add new download providers or search sources", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Set default audio quality and format preferences", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Force Full Scan", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Storage & Cache", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "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" - }, - "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" - }, - "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "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" - }, - "trackReEnrichFieldsTitle": "Fields to update", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "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" - }, - "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" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@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" - } - } - }, - "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "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" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "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" - } - } - }, - "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" - }, - "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "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", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "Split CUE Album", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "컨테이너", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "끄기", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} 링크가 복사됨", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "자동 대체 중에 사용할 수 있는 설치된 다운로드 확장 프로그램을 선택하세요", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "Split into {count} tracks successfully", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "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" - }, - "collectionPlaylists": "Playlists", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "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" - }, - "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedToPlaylist": "Added to \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Playlist created", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "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" - }, - "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist deleted", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "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" - }, - "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" - }, - "collectionRemoved": "\"{trackName}\" removed", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "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" - } - } - }, - "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" - }, - "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": "{count} {count, plural, =1{트랙} other{트랙}} 공유", "@selectionShareCount": { "description": "Share button text with count in selection mode", "placeholders": { @@ -3483,43 +98,103 @@ } } }, - "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", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "No convertible tracks selected", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Batch Convert", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "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", + "trackCoverReplace": "표지 교체", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "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.", + "downloadAppleElrcWordSyncEnabled": "단어별 타임스탬프 원본 유지", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "노래", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "로그 공유", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "확장 프로그램 설치", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "{total} 개의 트랙 중 {success} 개에 리플레이게인이 추가됨", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "최소화", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "인터넷 연결 상태를 확인하세요", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "설치된 확장 프로그램이 없음", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "CUE 분할 실패", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "무손실", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "지원되는 URL을 붙여넣거나, 이름으로 검색하세요", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, + "selectionBatchConvertConfirmMessageLossless": "{count} 개의 {count, plural, =1{트랙} other{트랙}}을 {format}으로 변환하시겠습니까? (무손실 — 음질 손실 없음)\n\n변환 후 원본 파일이 삭제됩니다", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", "placeholders": { @@ -3531,19 +206,298 @@ } } }, - "selectionBatchConvertProgress": "Converting {current} of {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "이 트랙은 아직 사용 가능할 수 있습니다. 몇 분 기다렸다가 병렬 다운로드를 줄인 후에 다시 시도하세요", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "발매일자 (오래된순)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "I Don't Have Spotify(IDHS) 개발자입니다. 위급 상황 발생 시 해결해 주는 대체 링크 해결 도구를 만들었습니다!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "셔플 켜기", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "색상", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "표지 이미지 캐시", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "CUE 앨범 분할", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "지워짐: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "표지 이미지", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": ".spotiflac-ext 파일을 선택하세요", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "형식", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "{quality} 제한이 있는 무손실 출력", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "다운로드할 재생목록 선택", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "즐겨찾는 아티스트에 추가", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{albumCount} 개의 싱글에서 {count} 개의 트랙", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, - "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", + "optionsExtensionStore": "확장 프로그램 리포", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "다운로드 기록에서 {count} 개 (목록에서 제외됨)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "싱글 & EP만", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "메타데이터를 삽입하는 중...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "원본 음질", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "가사", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "{count} {count, plural, =1{트랙} other{트랙}} 변환", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "라이브러리 셔플", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "표지 이미지", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "가사, 향상된 메타데이터 및 더 많은 기능을 이용하세요", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "앨범 ''{albumName}'' 열기", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "현재 다운로드 목록이 비어 있음", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 개의 트랙 다운로드 성공} other{{count} 개의 트랙 다운로드 성공}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "다운로드", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "텔레그램 채널", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "인도네시아", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "후처리 후크", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "백업을 생성하는 중...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "다운로드", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "선택 항목 삭제", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "표지 선택", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, + "selectionBatchConvertSuccess": "{total} 개 중 {success} 개를 {format}로 변환 완료", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", "placeholders": { @@ -3558,906 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "스테레오", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "백업 파일 생성", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "앱", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} 정보를 사용할 수 없음", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" - }, - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", - "@lyricsProvidersDescription": { - "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, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music 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" - }, - "settingsDonateSubtitle": "Buy the developer a coffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "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": { "type": "String" } } }, - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "No tracks found for this album", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "테마", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "storageModeAppFolder": "App Folder (Recommended)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "storageModeSaf": "Custom Folder (SAF)", - "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilenameInsertTag": "Tap to insert tag:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Auto", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the 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": "Select fields to fill automatically from online metadata", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "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" - } - } - }, - "queueDownloadedHeader": "Downloaded", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Search with {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "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": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto 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" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Cancel download?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "''{trackName}''가 위시리스트에 추가됨", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Keep", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "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", + "logAffectedDomains": "영향받은 도메인: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Failed to load album", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Failed to load playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "트랙을 찾을 수 없음", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Failed to load artist", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "제공자 우선순위", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Download Progress", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Shows download progress for tracks", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Library Scan", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Shows local library scan progress", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "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" - } - } - }, - "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" - } - } - }, - "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", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "기기에서 제거하시겠습니까?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "활성화된 제공자가 없음", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "앨범, 앨범 아티스트", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "SD 카드를 포함한 아무 폴더나 선택하세요", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4472,658 +653,187 @@ } } }, - "notifUpdateReady": "Update Ready", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "폴더 이름에서 피처링 아티스트가 제거됩니다 (예: Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "로컬 라이브러리를 스캔하는 중", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "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" - }, - "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" + "setupGetStarted": "시작하기", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "레이아웃", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Fallback Extensions", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" - }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "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" - } - } - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "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" - }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "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" - }, - "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" - } - } - }, - "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 CSV", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV 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" - }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "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" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "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" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Finalizing download", + "queueFinalizingDownload": "다운로드를 마무리하는 중", "@queueFinalizingDownload": { "description": "Accessibility label for a queue item that is finalizing" }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "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", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "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": { + "sourceFormat": { "type": "String" }, - "artistName": { - "type": "String" - } - } - }, - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", - "placeholders": { - "itemType": { + "targetFormat": { "type": "String" }, - "name": { + "bitrate": { "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" - } - } + "extensionsMetadataPriority": "메타데이터 우선순위", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" }, - "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" - } - } + "updateCurrent": "현재 버전", + "@updateCurrent": { + "description": "Label for current version" }, - "a11yTrackByArtist": "{trackName} by {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", - "placeholders": { - "trackName": { - "type": "String" - }, - "artistName": { - "type": "String" - } - } + "@aboutFeatureRequest": { + "description": "Link to suggest features" }, - "a11ySelectAlbum": "Select album {albumName}", - "@a11ySelectAlbum": { - "description": "Accessibility label for selecting an album", - "placeholders": { - "albumName": { - "type": "String" - } - } + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", - "placeholders": { - "albumName": { - "type": "String" - } - } + "backupRestoreConfirmMessage": "현재 설정, 다운로드 기록, 좋아요 표시한 트랙, 위시리스트 및 재생목록이 백업 파일의 내용으로 대체됩니다. 이 작업은 되돌릴 수 없습니다", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" }, - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (아시아 노래에 적합)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" }, - "editMetadataFieldTrackTotal": "Track Total", - "@editMetadataFieldTrackTotal": { - "description": "Label for total tracks field in the edit metadata sheet" + "libraryScanCancelledSubtitle": "준비가 되면 스캔을 다시 시도할 수 있습니다", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" }, - "editMetadataFieldDiscTotal": "Disc Total", - "@editMetadataFieldDiscTotal": { - "description": "Label for total discs field in the edit metadata sheet" + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" }, - "editMetadataFieldComposer": "Composer", - "@editMetadataFieldComposer": { - "description": "Label for composer field in the edit metadata sheet" + "@trackAlbum": { + "description": "Metadata label - album name" }, - "editMetadataFieldComment": "Comment", - "@editMetadataFieldComment": { - "description": "Label for comment field in the edit metadata sheet" - }, - "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" - }, - "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", + "dialogDeleteSelectedMessage": "기록에서 {count} 개의 {count, plural, =1{트랙} other{트랙}}을 삭제하시겠습니까?\n\n저장소에서도 파일이 삭제됩니다", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", "placeholders": { "count": { "type": "int" } } }, - "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "trackReEnrich": "보강", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "저장소 접근 권한 필요", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "각 재생 목록에 대한 하위 폴더를 만듭니다", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "모든 다운로드 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "앨범 아티스트 폴더 이름에서 제거된 참여 아티스트", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "방금 전", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "불필요한 다운로드 파일 정리", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "좋아하는 아티스트", + "audioAnalysisRescanning": "오디오를 다시 분석하는 중...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "재생목록", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "로그", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "아름다운 로고를 만들어주신 재능 있는 아티스트!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "베타", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} 개의 {count, plural, =1{재생목록} other{재생목록}}이 삭제됨", "@collectionPlaylistsDeleted": { "description": "Snackbar after deleting selected playlists", "placeholders": { @@ -5132,43 +842,64 @@ } } }, - "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" - } - } + "trackReplayGainSubtitle": "음량 분석 및 리플레이게인 태그 작성", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" }, - "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" - } - } + "homeTitle": "홈", + "@homeTitle": { + "description": "Home screen title" }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "extensionMinAppVersion": "최소 앱 버전", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} 개의 좋아요 표시한 {count, plural, =1{트랙} other{트랙}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", "placeholders": { "count": { "type": "int" } } }, - "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "audioAnalysisTruePeak": "트루 피크", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 개의 다운로드가 사용자에 의해 취소됨} other{{count} 개의 다운로드가 사용자에 의해 취소됨}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "{total} 개 중 {current} 개를 변환하는 중...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, "@trackReEnrichSuccessWithFailures": { "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", "placeholders": { @@ -5183,16 +914,2678 @@ } } }, - "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", - "@selectionDeleteTracksCount": { - "description": "Button label for deleting selected tracks", + "previewUnavailable": "미리듣기를 사용할 수 없음", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "클라이언트 ID: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "플레이어", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 개의 재생목록} other{{count} 개의 재생목록}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", "placeholders": { "count": { "type": "int" } } }, - "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "libraryLastScannedNever": "절대 안 함", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "트랙 번호", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "음량을 분석하는 중...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "재생목록 소스 폴더", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "개발에 힘써주신 분들", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "저장소", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "오디오", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "다른 이용자와 소통", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "모든 재생목록이 선택됨", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Spotify/Deezer 트랙 ID을 조회합니다. 지우면 속도가 느려질 수 있습니다", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "아직 백업할 내용이 없습니다", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "링크를 인식할 수 없음", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC 단어 동기화", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "중국어 번역 포함", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "트랙에 하트를 탭하여 '좋아요'를 유지하세요", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "사용 제한 없음", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "메타데이터 재구성 성공 ({successCount}/{total}) - 실패: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "레이블 누락", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "메타데이터", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "좋아요 표시한 트랙에서 제거", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "앨범 불러오기 실패", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "클라이언트 ID를 붙여넣으세요", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "검색 출처", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "모든 파일 접근", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "extensionsInstalledCount": "{count} 개의 확장 프로그램 설치 성공", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "snackbarFailedToEmbedLyrics": "가사 삽입 실패", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "서비스 사용 제한됨", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "다운로드 취소됨", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "리플레이게인", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "다운로드된 앨범 및 트랙 표지 이미지입니다. 볼 때 다시 다운로드됩니다", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "모두 지우기", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "폴더 이름에 전체 아티스트 문자열이 사용됩니다", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "백업 복원", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "폴더에서 제거", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "메타데이터", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "링크 복사", + "errorRateLimitedMessage": "요청이 너무 많습니다. 잠시 후 다시 검색해 주세요", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "장르 (내림차순)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "파일을 찾을 수 없음", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer는 요청 횟수 제한이 없으므로 기본 앱으로 사용하는 것이 좋습니다. Spotify는 요청 횟수가 많아지면 요청 횟수를 제한할 수 있습니다", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "PC 소스 코드", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "온라인에서 자동 채우기", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "{count} 개의 {count, plural, =1{트랙} other{트랙}}이 제거됨", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "오픈 소스 동기화 가사 데이터베이스", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Musixmatch에서 번역된 가사를 요청하려면 BCP-47 언어 코드를 입력하세요 (예시: en, de, ja)", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "{platform} 링크가 클립보드에 저장됨", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "QQDL 및 HiFi API 개발자입니다. 이 프로젝트는 무손실 다운로드 지원을 형성하는 데 도움을 주셨습니다", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "{total} 개 중 {current} 개를 가져오는 중...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "자동 스크롤: ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "제공자", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "다운로드 목록에 {count} 개의 트랙이 추가됨", + "cueSplitTrackCount": "{count} 개의 트랙", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "재생목록 가져오기", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "로컬 라이브러리", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "로그 복사", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "모바일 네트워크 사용 시 다운로드 일시 중지", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "발매일자 (최신순)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "기록과 관계없이 모든 트랙이 다운로드됩니다", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "순서대로 재생", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "싱글 및 EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "확장 프로그램 대체", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "재생목록: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "앨범: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "상세 로깅", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "트랙당 최소 크기, 약 4MB", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "작업", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "선택된 폴더가 없습니다. 기본 음악 폴더를 사용하시겠습니까?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "예시: en, de, ja", + "trackSaveFailed": "실패: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "리플레이게인 추가", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "유용한 확장 프로그램을 찾으려면 리포 탭을 탐색하세요", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "확장 프로그램 제공자가 필요함", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "앨범 (오름차순)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "모노", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "단어별 동기화 가사 (프록시 경유)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "옵션", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "업데이트 다운로드 실패", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "예상 캐시 사용량: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "다시 시도", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "음악 플레이어로 재생하려면 아무 트랙이나 탭하세요", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "서비스 오프라인", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "선택 해제", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "지원 항목: 트랙, 앨범, 재생목록, 아티스트 URL", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "즐겨찾는 아티스트에서 제거", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "재생목록이 비어 있음", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "최신순", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "중지", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "다운로드 폴더의 모든 파일", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "앨범", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "라이브러리에서 셔플을 사용할 수 없음: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "중복", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "저장을 탭하면 선택한 표지가 현재 내장된 표지를 대체합니다", + "cacheSectionMaintenance": "유지 관리", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "{count} 개의 {count, plural, =1{트랙} other{트랙}}을 {bitrate} 비트레이트로 {format}으로 변환하시겠습니까?\n\n변환 후 원본 파일이 삭제됩니다", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / 최대 192kHz", + "snackbarRemovedTracksFromLoved": "'좋아요 표시한 트랙'에서 {count} 개의 트랙이 제거됨", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "아티스트/앨범", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "파일을 열 수 없음: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "필수 - 탭하여 설정", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "코덱", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "이 트랙의 가사를 사용할 수 없습니다", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "유틸리티", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "''{playlistName}''에 추가됨", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "캐시를 지우시겠습니까?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[연도] 앨범", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "저장소 & 캐시", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "메타데이터 제공자가 있는 확장 프로그램이 없음", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "제목 (내림차순)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "오디오 음질 분석", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "라이브러리를 마무리하는 중...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "독일", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "자동 대체", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "파일 & 폴더", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "모바일 버전 개발자", + "errorCouldNotKeepFolderAccess": "선택한 폴더에 대한 접근 권한을 유지할 수 없습니다", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "이미 다운로드한 노래 건너뛰기", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "삭제", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "재생목록 삭제", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "온라인 표지", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "다운로드", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "아티스트", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "URL 핸들러", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "고급", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 분 전} other{{count} 분 전}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "코소보", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "시스템 기본값", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} 개의 항목", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "검색 & 메타데이터 출처 순서 설정", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "삭제할 트랙 선택", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "다운로드 위치 및 폴더 구성 변경", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "미디어 폴더에만 제한됨", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "다운로드", + "settingsFilesSubtitle": "다운로드 위치, 파일 이름, 폴더 구조", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "드래그하여 검색 및 메타데이터 출처 순서를 설정하세요", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "삭제할 트랙을 선택", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "브라우저 열기", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "레이블", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "영국", + "dialogCancel": "취소", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "알림 활성화", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "작성자", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "파일 이름 형식", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "기록 검색...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "다운로드 및 오디오 변환으로 생성된 임시 파일", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "가사 삽입", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "클라이언트 비밀키를 붙여넣으세요", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "기록 삭제됨", + "downloadNetworkCompatibilityModeDisabled": "표준 ​​네트워크 설정 사용", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "가사 제공자", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "모두", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "음악 찾기", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Spotify에서 열기", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "다운로드됨", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "일부 앨범 가져오기 실패", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 개의 트랙} other{{count} 개의 트랙}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "트랙 또는 앨범 이름으로 검색하는 데 사용되는 서비스", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "다운로드하는 중 ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "내부", + "trackAudioQuality": "오디오 음질", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "라이브러리에서 누락된 파일 {count} 개가 제거됨", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "아직 좋아하는 아티스트가 없음", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "'좋아요 표시한 트랙'에 {count} 개의 트랙이 추가됨", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "''{trackName}''에 대한 활성 다운로드를 취소합니다", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "크기 보기 및 캐시된 데이터 지우기", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} 개의 트랙이 색인됨", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "앨범 검색...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "음악 메타데이터를 검색하고, 확장 프로그램을 관리하고, 라이브러리를 정리하세요", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "사용자 정의 트랙 매칭", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "기능", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "가사를 .Irc 파일로 가져와서 저장", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "서비스에 대한 요청이 너무 많습니다", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "손실 압축 320kbps 형식", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "표지 이미지, 태그, 리플레이게인, 제공자", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "온라인에서 메타데이터를 검색하고 파일에 삽입", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "재생 중인 노래가 없음", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "음악 다운로드는 간단하고 빠릅니다. 작동 방식은 다음과 같습니다", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "''{playlistName}''과 그 안에 있는 모든 트랙을 삭제하시겠습니까?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "메타데이터 재구성 성공", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} 개의 기록 {count, plural, =1{항목} other{항목}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "''{trackName}''가 다운로드 목록에 추가됨", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "앱을 열 때마다", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "채널", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "리스트", + "updateDownloadInstall": "다운로드 & 설치", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "끄기", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "제목 (오름차순)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "''{trackName}''이 '좋아요 표시한 트랙'에서 제거됨", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "오디오 품질", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "{format}으로 변환 성공", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "''{extensionName}''을 제거하시겠습니까?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "확장 프로그램용 베타 Android 서비스 워커", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "업데이트", + "libraryFilterMetadataMissingAny": "메타데이터 누락", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "온라인 메타데이터에서 자동으로 채워질 필드를 선택하세요", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "SongLink 지역", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "호환되는 다른 서비스가 없음", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "선택한 트랙에 대한 온라인 일치 항목을 검색하고 FLAC을 다운로드 목록에 추가합니다\n\n기존 파일은 수정되거나 삭제되지 않습니다\n\n신뢰도가 높은 일치 항목만 자동으로 대기열에 추가됩니다\n\n{count} 개가 선택되었습니다", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "재생목록에 추가", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "권한", + "releaseTypeSingle": "싱글", + "aboutTelegramChannelSubtitle": "공지 및 업데이트 안내", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "메타데이터 제공자 우선순위", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "다운로드 목록에 추가", + "audioAnalysisDecodedFormat": "디코딩 형식", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "이미 ''{playlistName}''에 있음", + "discographyAlbumsOnlySubtitle": "{albumCount} 개의 앨범에서 {count} 개의 트랙", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "알림 활성화", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "테마, 색상, 디스플레이", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "내장 미리듣기 플레이어", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "재생", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "기존 음악 라이브러리를 검사하여 다운로드 시 중복 곡을 감지합니다. FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF 및 APE 형식을 지원합니다. 가능한 경우 파일 태그의 메타데이터를 읽어 사용합니다", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "다운로드 전 확인", + "nowPlayingNoMetadata": "사용할 수 있는 메타데이터가 없음", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "반주 트랙", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "{count} 개의 {count, plural, =1{트랙} other{트랙}}을 {format}({quality})으로 변환하시겠습니까?\n\n출력은 무손실 코덱을 유지하지만 비트 심도/샘플 속도가 제한됩니다. 변환 후 원본 파일이 삭제됩니다", + "downloadDeduplication": "중복 다운로드 건너뛰기", + "libraryFilterSortOldest": "오래된순", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "다음에 할래요", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "새 리포지토리 URL", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "''{target}''의 캐시된 데이터를 지웁니다. 다운로드한 음악 파일은 삭제되지 않습니다", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "재생", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "업데이트 채널", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "모든 변경 사항을 적용하려면 앱을 다시 시작하세요", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "실패한 다운로드를 TXT 파일으로 자동 저장합니다", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "아티스트 (오름차순)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "앨범 아티스트", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "선택한 항목에 대한 신뢰할 수 있는 온라인 일치 항목을 찾을 수 없음", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Deezer에서 열기", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "iCloud 또는 다른 위치를 선택하세요", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "월별 청취자: {count}", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "캐시된 데이터", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "다운로드 완료", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "싱글과 EP를 별도의 폴더에 저장합니다", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "앱 문서 폴더", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "리포지토리 불러오기 실패", + "settingsDownloadNetwork": "다운로드 네트워크", + "metadataSaveFailedStorage": "저장소에 메타데이터 다시 쓰기 실패", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "단일 결합 값", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "트랙", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "아티스트 (내림차순)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "디더링", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "서비스, 음질, 대체", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "마지막 스캔 시간: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "iOS 제한 사항: 빈 폴더는 선택할 수 없습니다. 파일이 하나 이상 있는 폴더를 선택하세요", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "새 버전", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "다운로드 제공자 관리", + "sortAlphaAsc": "오름차순", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "모두 선택", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "앨범/아티스트 이름/[2005] 앨범 이름/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} 개의 {count, plural, =1{항목} other{항목}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "트랙을 가져오는 중...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "앨범 다운로드가 없음", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "오류", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 명의 좋아하는 아티스트} other{{count} 명의 좋아하는 아티스트}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "활성화됨 ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "''{trackName}''를 다운로드하는 중", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "발매일자", + "discographySelectedCount": "{count} 개 선택됨", + "collectionArtistCount": "{count, plural, =1{1 명의 아티스트} other{{count} 명의 아티스트}}", + "logIssueNetworkErrorLabel": "네트워크 오류", + "updateStartingDownload": "다운로드를 시작하는 중...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "디스크 번호", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "확장 프로그램 사용: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "다운로드 기록을 끄시겠습니까?", + "tutorialWelcomeTip3": "메타데이터, 표지 이미지 및 가사 자동 삽입", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "베타", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "불필요한 항목이 없습니다", + "discographySkippedDownloaded": "{added} 개 추가됨, {skipped} 개 이미 다운로드됨", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "가사 제공자 우선순위", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "오류: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "저장되지 않은 변경 사항이 손실됩니다", + "previewStop": "미리듣기 중지", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "{sourceFormat}에서 {targetFormat}으로 변환하시겠습니까? (무손실 — 음질 손실 없음)\n\n변환 후에 원본 파일이 삭제됩니다", + "discographyAlbumsOnly": "앨범만", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "설치된 다운로드 확장 프로그램 중 대체 프로그램으로 사용할 항목을 선택하세요", + "aboutSocial": "소셜 네트워크", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "나이퀴스트", + "trackCoverSelected": "선택된 표지", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "이미 다운로드된 트랙은 건너뜁니다", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "아직 검색 제공자가 없음", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "설치됨", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "리플레이게인 태그가 추가됨", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "기존 트랙을 검색할 때 표시", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "다운로드", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "가사 불러오기 실패", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "권한이 거부되었습니다. 계속하려면 모든 권한을 허용해 주세요", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "WiFi 전용", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "''{extensionName}''이 설치됨", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "계속하려면 확장 프로그램을 설치하세요", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "음악 다운로드", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "알 수 없는 제목", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "대체, 메타데이터, 가사, 표지 이미지", + "navLibrary": "라이브러리", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "모두", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "사용 가능한 확장 프로그램이 없음", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "베타 버전은 불안정할 수 있습니다", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "라이브러리 스캔 완료", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "지원되는 URL을 붙여넣거나 검색...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "새 제공자를 추가하려면 .spotiflac-ext 파일을 설치하세요", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "이 백업을 복원하시겠습니까?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "특별히 감사드리는 분들", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "설치", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "앨범", + "extensionCustomUrlHandlingSubtitle": "이 확장 프로그램은 다음 사이트의 링크를 처리할 수 있습니다", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "트랙 패딩 및 날짜 패턴에 대한 서식 있는 태그를 활성화합니다", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "항목 ({count} 개 필터됨)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "리포지토리 추가", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "문제 신고", + "snackbarFailedToWriteStorage": "저장소 다시 쓰기 실패", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "잘못된 폴더가 선택됨", + "allFilesAccessDisabledMessage": "모든 파일 접근을 비활성화하였습니다. 앱은 제한된 저장소 접근을 사용합니다", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "언어 코드", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "저장되지 않은 변경 사항이 있습니다. 폐기하시겠습니까?", + "setupChooseFromFiles": "파일 탐색기에서 선택", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "320kbps 손실 다운로드의 출력 형식을 선택하세요. 필요에 따라 원본 스트림이 선택한 형식으로 변환됩니다", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "''{trackName}''가 위시리스트에서 제거됨", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "확장 프로그램 설치 성공", + "progressReadingCsv": "CSV 파일을 읽는 중...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "릴리스", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "인증 브라우저", + "extensionDefaultProvider": "기본 검색", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "플레이어 호환성을 최대화하려면 '아티스트 A, 아티스트 B'와 같이 하나의 아티스트 값을 입력하세요", + "downloadLossy320": "손실 압축 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "FLAC 다운로드 목록", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "원본", + "sectionLyricsProviderOptions": "제공자 옵션", + "nowPlayingTitle": "현재 재생 중", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "트랙 선택 해제", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "다운로드 기록이 없음", + "optionsTitle": "옵션", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "지우기", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "사용자 정의 폴더에 저장할 경우에 쓰기 오류가 발생하면 이 옵션을 활성화하세요. Android 13 이상에서는 기본적으로 특정 디렉터리에 대한 접근이 제한됩니다", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "변환 확인", + "storeCategoryLyrics": "가사", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "재생목록 삭제 완료", + "metadataMayRateLimit": "사용 제한이 있을 수 있음", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "모두 좋아요 표시", + "downloadDirectory": "다운로드 디렉토리", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "라이브러리 폴더", + "optionsMaxQualityCoverSubtitle": "최고 해상도의 표지 이미지를 다운로드", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "탐색 탭 콘텐츠(신규 발매, 인기 콘텐츠)는 다음 방문 시 새로 고쳐집니다", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "''{artistName}''의 트랙 ''{trackName}'' 열기", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "링크를 열 수 없습니다. 다시 시도해 주세요", + "collectionNoPlaylistsSubtitle": "트랙 분류를 시작하려면 재생목록을 만드세요", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "앨범 (내림차순)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "비트레이트", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "크기", + "extensionHealthServiceOnline": "서비스 온라인", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "항목 ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "{bitrate} 비트레이트로 {sourceFormat}에서 {targetFormat}으로 변환하시겠습니까?\n\n변환 후 원본 파일이 삭제됩니다", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "앨범별", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "재생", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "앱 정보", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "비활성화됨: 음량 정규화 태그 없음", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "삽입, 모드, 제공자, 언어 옵션", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP 차단 감지됨", + "storeFilterIntegration": "연동", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "다운로드됨", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile에서 브라우저를 자동으로 열지 못하였습니다. 아래 링크를 브라우저에서 열거나 직접 복사하세요", + "setupDownloadLocationIosMessage": "iOS에서는 다운로드한 파일이 앱의 문서 폴더에 저장됩니다. 파일 앱을 통해 해당 파일에 접근할 수 있습니다", + "optionsArtistTagModeDescription": "여러 아티스트를 내장 태그에 작성하는 방법을 선택하세요", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "노래", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "파일 설정", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "주파수 컷오프", + "dialogDelete": "삭제", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "다운로드한 모든 음악은 라이브러리 탭에 정리되어 있습니다", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, "@queueDownloadSpeedStatus": { "description": "Queue status while downloading with speed", "placeholders": { @@ -5201,19 +3594,1463 @@ } } }, - "queueDownloadStarting": "Starting...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" }, - "a11ySelectTrack": "Select track", - "@a11ySelectTrack": { - "description": "Accessibility label for selecting a track" + "snackbarCredentialsSaved": "자격 증명이 저장됨", + "cacheCleanupResult": "정리 완료: {downloadCount} 개의 사용되지 않는 다운로드, {libraryCount} 개의 누락된 라이브러리 항목", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } }, - "a11yDeselectTrack": "Deselect track", - "@a11yDeselectTrack": { - "description": "Accessibility label for deselecting a track" + "trackConvertLosslessHint": "무손실 변환 — 음질 손실 없음", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" }, - "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "collectionRenamePlaylist": "재생목록 이름 변경", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "총 오류 수: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "사용 가능한 최적의 항목을 자동으로 선택합니다", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "앱에서 사용할 언어를 선택하세요. 나중에 설정에서 변경할 수 있습니다", + "settingsBackupSubtitle": "라이브러리, 기록 및 설정을 새 기기로 옮겨보세요", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "아티스트", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "아무 트랙에서 +를 길게 탭하여 여기에 추가하세요", + "artistCompilations": "컴필레이션", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "폴더 선택기 열기 실패: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "라이브러리 스캔", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "다운로드 기록 저장", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "{title}, {count} 개의 {count, plural, =1{항목} other{항목}} 열기", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "파일 정보", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "앨범 아티스트 누락", + "audioAnalysisNoClipping": "클리핑 없음", + "tutorialSettingsDesc": "설정에서 앱을 원하는 대로 맞춤 설정하세요", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "삼성 뮤직과 같은 플레이어용 별도 .lrc 파일", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "기본 메타데이터 검색 사용", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "가사 불러오기", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "아직 인증을 기다리는 중", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "초기화", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "확장 프로그램 리포", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "라이브러리가 초기화됨", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "다운로드 완료", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "로컬 라이브러리", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "모든 트랙 선택됨", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 개의 앨범} other{{count} 개의 앨범}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "라이브러리 정리", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "모두 지우기", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "작성자: {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "커뮤니티 확장 프로그램을 사용하여 앱의 기능을 확장하세요", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "외부 플레이어", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "장르", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "재생목록별", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 개의 트랙} other{{count} 개의 트랙}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "없음", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "표지 이미지 저장", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "최소 한 명의 제공자가 활성화된 상태로 유지되어야 합니다", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "기본값 사용", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "앱을 사용하는 동안에 로그가 여기에 표시됩니다", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "가사를 저장하는 중...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "표지 이미지가 ''{fileName}''에 저장됨", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "가사", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "끄고 지우기", + "extensionHealthChecksConfigured": "{count} 개의 {count, plural, =1{검사} other{검사}}가 설정됨", + "cleanupOrphanedDownloadsSubtitle": "더 이상 존재하지 않는 파일의 기록 항목을 제거합니다", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "다운로드 진행률", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "가사", + "libraryAutoScan": "자동 스캔", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC은 이제 다운로드에 Android 저장소 접근 프레임워크(SAF)를 사용합니다. 이로써 Android 10 이상에서 '권한 거부' 오류가 해결됩니다", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "저장소 접근 권한 필요", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "그리드", + "trackConvertConverting": "오디오를 변환하는 중...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "FLAC 및 Opus의 경우 아티스트당 하나의 아티스트 태그를 작성하세요. MP3 및 M4A는 병합된 상태로 유지됩니다", + "snackbarPlayingNext": "다음 곡 재생", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "새 검색 결과를 표시할 탭을 먼저 선택하세요", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "다운로드하고 싶은 음악을 찾는 두 가지 쉬운 방법이 있습니다", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "이 페이지의 모든 캐시 카테고리가 지워집니다. 다운로드한 음악 파일은 삭제되지 않습니다", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "홈 피드 제공자", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "알 수 없는 앨범", + "trackCoverCurrent": "현재 표지", + "downloadSongLinkRegionDesc": "SongLink를 통해 트랙 링크를 해결할 경우에 사용되는 지역입니다. 스트리밍 서비스를 이용할 수 있는 국가를 선택하세요", + "downloadPrimaryArtistOnlyOff": "기본 아티스트만: OFF", + "dialogDone": "완료", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "리포지토리 URL", + "downloadSelectServiceToEnable": "이 옵션을 활성화하려면 음질 옵션이 있는 공급자를 선택하세요", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{total} 개의 파일 중 {progress}%", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "'좋아요 표시한 트랙' 폴더가 비어 있음", + "tutorialExtensionsTitle": "확장 프로그램", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "재생시간 (짧은순)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "파일 경로 복사", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "아티스트/앨범/ 및 아티스트/song.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "트랙 #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "확장 프로그램 업데이트 실패", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "이미 라이브러리에 있음", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "재생목록 이름", + "extensionVerificationCopyLink": "링크 복사", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "언어 선택", + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "브라질", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "Spotify API 변경으로 인해 Spotify 검색 기능은 2026년 3월 3일부터 더 이상 지원되지 않습니다. Deezer로 전환해 주세요", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotifyFLAC은 음악 라이브러리를 스캔하기 위해 저장소 접근 권한이 필요합니다. 설정에서 권한을 부여해 주세요", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "이 확장 프로그램을 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "다운로드 경로", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "이전 네트워크에 대한 레거시 TLS 설정 사용", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "좋아요 표시한 트랙에 추가", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "앱 캐시 디렉토리", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "최대 규모의 가사 데이터베이스 (다국어 지원)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "후처리", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "로그가 클립보드에 복사됨", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "아티스트를 검색하는 중...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "기본 폴더를 사용하시겠습니까?", + "tutorialSearchHint": "붙여넣기 또는 검색...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Musixmatch 언어", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "외부 .lrc 파일", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "로그를 검색하는 중...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "클라이언트 ID", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "필수", + "actionCancel": "취소", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "비활성화됨 (고급): 모든 메타데이터 삽입 건너뛰기", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "보안을 위해 로컬/사설 주소가 차단됨", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "싱글 파일 이름 형식", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "캐시를 지워도 다운로드한 음악 파일은 삭제되지 않습니다", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "잘못된 ISRC 형식", + "libraryFilterMetadataMissingTrackNumber": "트랙 번호 누락", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "확장 프로그램의 토큰과 API 키가 백업 파일에 함께 저장됩니다. 백업 파일은 안전하게 보관하세요. 비활성화하면 복원 후 다시 입력해야 합니다", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "채널별 통계", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "싱글 다운로드가 없음", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Spotify 음악을 FLAC 형식으로 다운로드하세요", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "기기에서 제거", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "캐시 요약", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "리플레이게인 ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "예시: https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "저장소 업데이트 필요", + "snackbarMetadataSaved": "메타데이터 저장 성공", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "로그 삭제", + "extensionsCustomSearch": "사용자 정의 검색", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{count} 개의 파일에 {size} 사용", + "actionRemoveCredentials": "자격 증명 제거", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "공유할 수 있는 파일을 찾을 수 없음", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "다운로드 목록에 {count} 개의 트랙이 추가됨", + "downloadFilenameInsertTag": "태그를 삽입하려면 탭하세요:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "''{artistName}''가 좋아하는 아티스트에서 제거됨", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "다운로드하는 중 - {speed} MB/s", + "backupRestoreConfirmButton": "복원", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "백업 생성 실패", + "notifLibraryScanFailed": "라이브러리 스캔 실패", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "다시 분석", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "음질을 선택하려면 음질 옵션이 있는 제공자를 선택하세요", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{파일} other{파일}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "먼저 폴더를 선택하세요", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "앨범", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "설정되지 않음", + "queueRetryAllFailed": "재시도 {count} 번 실패", + "folderOrganizationByPlaylistSubtitle": "각 재생목록별 별도 폴더", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "확장 프로그램 제공자", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "오디오 변환", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "다음에 할래요", + "sectionDownload": "다운로드", + "downloadLossyOpus256Subtitle": "최고 음질 Opus, 트랙당 약 8MB", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "v{version} 이상 필요", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "드래그하여 메타데이터 제공자 순서를 변경하세요. 앱은 트랙을 검색하고 메타데이터를 가져올 경우에 위에서 아래로 제공자를 시도합니다", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "확장 프로그램은 새 메타데이터와 다운로드 제공자를 추가할 수 있습니다. 신뢰할 수 있는 출처에서만 확장 프로그램을 설치하세요", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "연도 누락", + "extensionsDownloadPriority": "다운로드 우선순위", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "라이브러리 스캔", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "레이블", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "다운로드 실패", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "순수 검정 배경화면", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "트랙 다운로드 진행률 표시", + "setupIcloudNotSupported": "iCloud Drive는 지원되지 않습니다. 앱의 문서 폴더를 사용해 주세요", + "trackLyricsEmbeddedSource": "내장", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "extensionsInstallPartialSuccess": "{attempted} 개의 확장 프로그램 중 {installed} 개가 설치됨", + "@extensionsInstallPartialSuccess": { + "description": "Message when installing multiple extensions partially succeeds", + "placeholders": { + "installed": { + "type": "int", + "description": "Number of successfully installed extensions" + }, + "attempted": { + "type": "int", + "description": "Number of selected extensions" + } + } + }, + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanCancelled": "라이브러리 스캔이 취소됨", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "collectionPlaylistNameRequired": "재생목록 이름은 필수입니다", + "libraryCleanupMissingFiles": "누락된 파일 정리", + "storeCategoryUtility": "유틸리티", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "searchSortTitle": "결과 정렬", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "audioAnalysisLufs": "LUFS", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" + }, + "extensionsErrorLoading": "확장 프로그램 불러오기 오류", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "aboutFeatureRequestSubtitle": "앱의 새 기능을 제안해 주세요", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "@aboutTitle": { + "description": "About page title" + }, + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "@actionGo": { + "description": "Generic action button label" + }, + "regionCountryFR": "프랑스", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "업데이트됨", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "downloadLossyFormat": "손실 압축 형식", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" + }, + "snackbarAlreadyInLibrary": "라이브러리에 ''{trackName}''이 이미 존재함", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryExternalPlayerSubtitle": "감상용으로 권장됩니다. 최고 음질, 갭리스 재생, EQ 및 다양한 오디오 형식을 지원합니다", + "extensionCustomUrlHandlingShareHint": "이 사이트의 링크를 SpotiFLAC Mobile로 공유하면 이 확장 프로그램이 처리합니다", + "libraryFilterQuality": "음질", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "editMetadataAutoFillDone": "온라인 메타데이터로부터 {count} 개의 {count, plural, =1{필드} other{필드}}가 채워짐", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "trackReEnrichFieldsTitle": "업데이트할 필드", + "aboutFeatureRequest": "기능 요청", + "downloadSingleFilenameFormatDescription": "싱글 및 EP용 파일 이름 패턴입니다. 앨범 형식과 동일한 태그를 사용합니다", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "queueClearAllMessage": "모든 다운로드를 지우시겠습니까?", + "dialogDisableHistoryMessage": "기존 기록이 삭제됩니다. 다운로드한 파일은 삭제되지 않습니다", + "extensionLastChecked": "마지막 확인 시간: {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "CSV 가져오기", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV file into Home search" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "dialogClearHistoryTitle": "기록 지우기", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "dialogImport": "불러오기", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "notifLibraryScanErrors": "{count} 개의 오류", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "확장 프로그램을 제거하시겠습니까?", + "recentTypePlaylist": "재생목록", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "이렇게 하면 다운로드한 파일이 영구적으로 삭제되고 기록에서 제거됩니다", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "시스템", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "아티스트 / 앨범 + 싱글", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "찾을 수 없음", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "자동 채우기를 위해 하나 이상의 필드를 선택하세요", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "작곡가", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "HiFi 프로젝트의 원작자이자, 무손실 음원 소스 연동 기능의 토대를 구축한 개발자입니다", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "백업 & 복원", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "저장소 접근 권한 필요", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "삭제", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "디스크 번호 누락", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "메타데이터 제공자 우선순위가 저장됨", + "setupPermissionRequired": "''{permissionType}'' 권한 필요", + "backupRestoring": "백업을 복원하는 중...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "저하됨", + "regionCountryKR": "한국", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "이 파일에서 가사를 찾을 수 없습니다", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Spotify 자격 증명", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "아티스트 이름 필터", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "모든 다운로드 표시", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "트랙 & 디스크 번호", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "인증 링크가 복사됨", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "앨범 아티스트 메타데이터: 기본만", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Spotify에 연결을 탭하여 이 필드를 채우세요", + "setupNext": "다음", + "extensionVerificationBrowserSubtitleInApp": "인증을 앱 내 브라우저에서 먼저 실행합니다", + "libraryAutoScanDaily": "매일", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "다음 곡", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "자동 스크롤: OFF", + "trackConvertFailed": "변환 실패", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "제거", + "safMigrationSuccess": "다운로드 폴더가 SAF 모드로 업데이트됨", + "optionsClearHistorySubtitle": "기록에서 모든 다운로드한 트랙을 제거합니다", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "다음 곡 재생", + "extensionsNoHomeFeedExtensions": "홈 피드가 있는 확장 프로그램가 없음", + "optionsUpdateChannelStable": "안정 버전만 받기", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "재생목록", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "네트워크 호환 모드", + "settingsAppearance": "디자인", + "logIssueRateLimitedLabel": "사용 제한", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueSummary": "문제 요약", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "현재 리포지토리:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "storageModeAppFolderSubtitle": "기본적으로 Music/SpotiFLAC에 저장", + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "libraryFilterApply": "적용", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "다음 화면에서 '모든 파일 관리 권한 허용'을 활성화해 주세요", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "가사", + "extensionSettingNotSet": "설정되지 않음", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: 번역 포함", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "{count} 개의 트랙 분할 성공", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitArtist": "아티스트: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "자세한 내용은 릴리스 노트를 참조하세요", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "위시리스트", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "가져오기 & 채우기", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "드래그하여 다운로드 제공자 순서를 변경하세요. 앱은 트랙을 다운로드할 경우에 위에서 아래로 제공자를 차례로 시도합니다", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "싱글 트랙 다운로드는 여기에 표시됩니다", + "downloadLossyOpus128": "Opus 128kbps", + "downloadUseAlbumArtistForFolders": "폴더에 앨범 아티스트 사용", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "{count} {count, plural, =1{트랙} other{트랙}} 삭제", + "updateLater": "나중에", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "계속", + "optionsDetailedLoggingOff": "버그 보고서 활성화", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "참여 아티스트 필터", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "트랙 아티스트 태그로 이름이 지정된 폴더", + "storeSearch": "확장 프로그램 검색...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "텔레그램 커뮤니티", + "lyricsModeBoth": "둘 다", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "라이브러리에서 새 파일을 자동으로 스캔합니다", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "로컬 라이브러리 활성화", + "queueFlacFindingProgress": "FLAC 일치 항목을 찾는 중... ({current}/{total})", + "trackConvertTargetFormat": "변경될 형식", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "설정", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "요청 시간이 초과되었습니다. 나중에 다시 시도하세요", + "settingsExtensions": "확장 프로그램", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "다운로드됨", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "동적 색상", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "백업 파일 선택", + "downloadAppleElrcWordSyncDisabled": "더 안전한 Apple Music 가사 (줄 단위)", + "credentialsTitle": "Spotify 자격 증명", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "디자인", + "downloadNeteaseIncludeRomanizationDisabled": "로마자 표기 없음", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 개의 트랙} other{{count} 개의 트랙}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "로그 지우기", + "trackSaveLyrics": "가사 (.lrc) 저장", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "다운로드 완료", + "snackbarAlreadyDownloaded": "''{trackName}''은 이미 다운로드되어 있음", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "각 앨범별 별도 폴더", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "삼각형 HP", + "searchTracksEmptyPrompt": "트랙 검색", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": ".lrc 파일을 삽입하고 저장합니다", + "trackReEnrichFieldExtra": "장르, 레이블, 저작권", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "가사", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "전략: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "FLAC/Opus용 태그 분할", + "extensionsHomeFeedUse": "{extensionName} 홈 피드 사용", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "다운로드를 취소하시겠습니까?", + "updateWhatsNew": "새 기능", + "updateNewVersionReady": "새 버전이 준비되었습니다", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "트랙 선택", + "libraryClearSubtitle": "스캔된 모든 트랙 제거", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "모든", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "리포", + "backupExportSectionDescription": "설정, 다운로드 기록, 좋아요 표시한 트랙, 위시리스트, 즐겨찾는 아티스트 및 재생목록을 하나의 파일로 저장하여 보관하거나 다른 휴대전화로 옮길 수 있습니다", + "libraryScanSettings": "스캔 설정", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "재생시간", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "트랙 검색...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "오프라인", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "아티스트", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "in 라이브러리", + "pressBackAgainToExit": "종료하려면 뒤로가기 버튼을 다시 탭하세요", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "알림 권한이 부여되었습니다!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "개발 지원", + "snackbarFailedToUpdateNamed": "{extensionName} 업데이트 실패", + "backupContentsTitle": "백업 콘텐츠", + "updateDontRemind": "알림 안 함", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "온라인에서 검색하는 중...", + "discographyDownloadSelected": "선택 항목 다운로드", + "trackConvertResampler": "리샘플러", + "queueFilteringIndicator": "필터링하는 중...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "확장 프로그램에서 기본 검색 제공자로 전환하려면 기본 검색 제공자를 선택하세요", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "''{album}''을 {count} 개의 개별 FLAC 파일로 분할하시겠습니까?\n\n파일은 동일한 디렉토리에 저장됩니다", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "캐나다", + "cacheTempDirectory": "임시 디렉토리", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "중복 표시기 표시", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "{providerName}으로 검색...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "업데이트 확인", + "replayGainBatchAnalyzing": "리플레이게인을 분석하는 중...", + "recentTypeAlbum": "앨범", + "providerExtension": "확장 프로그램", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "사용할 수 있는 표지 출처가 없음", + "libraryFilterMetadata": "메타데이터", + "albumFolderArtistYearAlbum": "아티스트 / [연도] 앨범", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "클리핑", + "@a11yOpenAlbumByArtistTrackCount": { + "description": "Accessibility label for opening an album item with track count", + "placeholders": { + "albumName": { + "type": "String" + }, + "artistName": { + "type": "String" + }, + "trackCount": { + "type": "int" + } + } + }, + "backupExtensionsRestoreFailed": "{count} 개의 {count, plural, =1{확장 프로그램} other{확장 프로그램}}을 다시 설치할 수 없습니다. 스토어에서 수동으로 설치하세요", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "안정", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "앱 테마 및 디자인 사용자 정의", + "setupAppDocumentsFolderSubtitle": "권장 사항 - 파일 앱을 통해 접근 가능", + "a11yPlayTrackByArtist": "''{artistName}''의 ''{trackName}'' 재생", "@a11yPlayTrackByArtist": { "description": "Accessibility label for playing a local library track", "placeholders": { @@ -5225,195 +5062,468 @@ } } }, - "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", - "@storeExtensionsCount": { - "description": "Store extension result count", + "dialogRemove": "제거", + "extensionVerificationClose": "닫기", + "bulkDownloadPlaylistsButton": "{count} 개의 {count, plural, =1{재생목록} other{재생목록}} 다운로드", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", "placeholders": { "count": { "type": "int" } } }, - "storeRequiresVersion": "Requires v{version}+", - "@storeRequiresVersion": { - "description": "Store compatibility badge for minimum app version", + "optionsAutoFallbackSubtitle": "다운로드가 실패한 경우에 다른 서비스를 이용해 보세요", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} 개의 패턴", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "이 링크는 지원되지 않습니다. URL이 올바른지, 호환되는 확장 프로그램이 설치되어 있는지 확인하세요", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "아티스트 태그 모드", + "libraryFilterMetadataComplete": "전체 메타데이터", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", "placeholders": { "version": { "type": "String" } } }, - "actionGo": "Go", - "@actionGo": { - "description": "Generic action button label" + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" }, - "logIssueSummary": "Issue Summary", - "@logIssueSummary": { - "description": "Header for log issue analysis summary" + "optionsReplayGainSubtitleOn": "음량 스캔 및 리플레이게인 태그 삽입 (EBU R128)", + "libraryScanning": "스캔하는 중...", + "@libraryScanning": { + "description": "Status during scan" }, - "logTotalErrors": "Total errors: {count}", - "@logTotalErrors": { - "description": "Total error count in log issue analysis", + "cacheRefresh": "새로고침", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "다운로드한 트랙과 함께 동기화된 가사를 저장합니다", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "앨범에서 여러 트랙을 다운로드하면 여기에 표시됩니다", + "extensionEnterValue": "값을 입력하세요", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "좋아요 표시한 트랙", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "확장 프로그램 리포지토리 추가", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "CUE+FLAC을 개별 트랙으로 분할", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "아직 재생목록이 없음", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "더 이상 존재하지 않는 파일에 대한 항목을 제거합니다", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "아티스트별", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "번역에 도움주신 분들", + "notifAlreadyInLibraryCount": "이미 라이브러리에 있음 ({completed}/{total})", + "editMetadataFieldTitle": "제목", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "아티스트 불러오기 실패", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "실제 음질은 서비스의 트랙 가용성에 따라 달라집니다", + "downloadFilenameDescription": "''{artist}'', ''{title}'', ''{album}'', ''{track}'', ''{year}'', ''{date}'', ''{disc}''를 자리표시자로 사용하세요", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "내림차순", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", "placeholders": { "count": { "type": "int" } } }, - "logAffectedDomains": "Affected: {domains}", - "@logAffectedDomains": { - "description": "Affected domains in log issue analysis", - "placeholders": { - "domains": { - "type": "String" - } - } + "@loadingSharedLink": { + "description": "Status when opening shared URL" }, - "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "extensionServiceStatus": "Service Status", - "@extensionServiceStatus": { - "description": "Extension detail section header for service status" - }, - "extensionServiceHealth": "Service health", + "extensionServiceHealth": "서비스 상태", "@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", + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", "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" + "setupStorageDescription": "SpotiFLAC은 다운로드한 음악 파일을 저장하기 위해 저장소 접근 권한이 필요합니다", + "tutorialReadyMessage": "모든 준비가 완료되었습니다! 지금 바로 좋아하는 음악을 다운로드하세요", + "tutorialLibraryTip3": "더 나은 탐색을 위해 리스트 보기와 그리드 보기 사이를 전환하세요", + "selectionDeletePlaylistsCount": "{count} {count, plural, =1{재생목록} other{재생목록}} 삭제", + "appearanceThemeLight": "밝은", + "queueEmptyHistorySubtitle": "다운로드한 트랙이 여기에 표시됩니다", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" }, - "extensionLastChecked": "Last checked {time}", - "@extensionLastChecked": { - "description": "Timestamp for the latest extension service health check", + "backupRestoreFailed": "백업 복원 실패", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "다운로드 목록에 {addedCount} 개의 트랙을 추가하고, {skippedCount} 개의 트랙을 건너뜀", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", "placeholders": { - "time": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "다운로드 폴더를 선택하세요", + "dialogDownloadAllTitle": "모두 다운로드", + "providerPriorityInfo": "첫 ​​번째 제공자에서 트랙을 사용할 수 없는 경우에 앱은 자동으로 다음 제공자를 시도합니다", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "사용 가능한 앨범이 없음", + "downloadAppleQqMultiPersonDisabled": "스피커 레이블이 없는 표준 가사", + "cacheNoData": "캐시된 데이터가 없음", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "다운로드 시작", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "VPN을 사용하거나 DNS를 1.1.1.1 또는 8.8.8.8로 변경해 보세요", + "aboutTitle": "정보", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "기록 정렬 방식", + "audioAnalysisSampleRate": "샘플링 레이트", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "확장 프로그램 가사 제공자는 내장 가사 제공자보다 먼저 실행됩니다. 하나 이상의 제공자가 활성화되어 있어야 합니다", + "cacheTrackLookup": "트랙 조회 캐시", + "extensionsHomeFeedOffSubtitle": "메인 화면에 홈 피드를 표시하지 않습니다", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "상태 새로고침", + "notifAllDownloadsComplete": "모든 다운로드 완료", + "downloadNeteaseIncludeRomanizationEnabled": "로마자 표기 포함", + "editMetadataFieldDateHint": "YYYY-MM-DD 또는 YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "공유", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{albumCount} 개의 릴리스에서 {count} 개의 트랙", + "settingsDonateSubtitle": "개발자에게 커피 한 잔 사주세요", + "libraryFilterDownloaded": "다운로드됨", + "downloadNetworkAnySubtitle": "Wi-Fi 또는 모바일 네트워크 사용", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "스캔이 완료되기 전에 중단되었습니다", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "{extensionName} 설치 실패", + "trackCopyLyrics": "가사 복사", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "호주", + "downloadAlbumFolderStructure": "앨범 폴더 구조", + "downloadMusixmatchAuto": "자동", + "actionDismiss": "닫기", + "storeFilterAll": "모두", + "extensionsDisabled": "비활성화됨", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "{count} 개의 트랙을 다운로드하시겠습니까?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "내 라이브러리", + "optionsCheckUpdatesSubtitle": "새 버전이 출시되면 알림", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "재생목록", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "{count} 달 전", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "레거시", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "재생목록 이름 변경 완료", + "collectionCreatePlaylist": "재생목록 생성", + "homeGoToAlbum": "앨범으로 이동", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "각 아티스트별 별도 폴더", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "버전 {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "폴더에 기본 아티스트만 사용", + "tutorialExtensionsTip2": "새 다운로드 제공자 또는 검색 출처를 추가하세요", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "SpotiFLAC에 오신 것을 환영합니다!", + "a11ySelectAlbum": "앨범 ''{albumName}'' 선택", + "@a11ySelectAlbum": { + "description": "Accessibility label for selecting an album", + "placeholders": { + "albumName": { "type": "String" } } }, - "extensionRefreshStatus": "Refresh status", - "@extensionRefreshStatus": { - "description": "Tooltip for refreshing extension service health status" + "aboutMobileSource": "모바일 소스 코드", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" }, - "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" + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" }, - "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" + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" }, - "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", - "@extensionSettingsCount": { - "description": "Count of settings exposed by an extension quality option", + "libraryFilterSource": "출처", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "저장소 접근", + "logFilterBySeverity": "심각성에 따라 로그 분류", + "libraryFolderNotExist": "선택한 폴더가 존재하지 않음", + "optionsEmbedMetadataSubtitleOn": "메타데이터, 표지 이미지 및 내장 가사를 파일에 기록", + "albumFolderArtistAlbum": "아티스트 / 앨범", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "권한이 거부되었습니다. 시스템 설정에서 '모든 파일 접근'를 수동으로 활성화하세요", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "비어 있음만", + "settingsLocalLibrarySubtitle": "음악 스캔 & 중복 감지", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "확장 프로그램 사용", + "cacheCleanupUnusedSubtitle": "불필요한 다운로드 기록 및 누락된 라이브러리 항목을 제거합니다", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "장르 누락", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", + "placeholders": { + "hex": { + "type": "String" + } + } + }, + "setupFolderDescription": "다운로드한 음악 파일이 저장될 폴더를 선택하세요", + "extensionDetailsTags": "태그", + "unknownArtist": "알 수 없는 아티스트", + "trackFetchOnlineLyrics": "온라인에서 가져오기", + "snackbarNoActionDefined": "이 버튼에 대해 정의된 작업이 없음", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" + }, + "downloadAllCount": "모두 다운로드 ({count})", + "@downloadAllCount": { + "description": "Download all button with count", "placeholders": { "count": { "type": "int" } } }, - "extensionHealthOnline": "Online", + "downloadedAlbumDiscHeader": "디스크 {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "자격 증명 저장", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "온라인", "@extensionHealthOnline": { "description": "Extension service health status - online" }, - "extensionHealthDegraded": "Degraded", - "@extensionHealthDegraded": { - "description": "Extension service health status - degraded" + "settingsSaveDownloadHistorySubtitle": "완료된 다운로드를 기록 및 라이브러리 보기에 유지합니다", + "trackOptionRemoveFromWishlist": "위시리스트에서 제거", + "extensionsFallbackTitle": "대체 확장 프로그램", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" }, - "extensionHealthOffline": "Offline", - "@extensionHealthOffline": { - "description": "Extension service health status - offline" + "metadataSaveFailedFfmpeg": "FFmpeg를 통해 메타데이터 저장 실패", + "@albumFolderAlbumOnly": { + "description": "Album folder option" }, - "extensionHealthNotConfigured": "Not configured", - "@extensionHealthNotConfigured": { - "description": "Extension service health status - not configured" + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" }, - "extensionHealthUnknown": "Unknown", - "@extensionHealthUnknown": { - "description": "Extension service health status - unknown" + "downloadedAlbumDeleteSelected": "선택 항목 삭제", + "selectionSelectPlaylistsToDelete": "삭제할 재생 목록 선택", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" }, - "extensionHealthRequired": "required", - "@extensionHealthRequired": { - "description": "Label for a required extension service health check" + "storeAddRepoDescription": "확장 프로그램을 찾아보고 설치하려면 registry.json 파일이 포함된 GitHub 리포지토리 URL을 입력하세요", + "appearanceThemeDark": "어두운", + "downloadedAlbumTapToSelect": "트랙을 탭하여 선택하세요", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } }, - "extensionSettingNotSet": "Not set", - "@extensionSettingNotSet": { - "description": "Value shown when an extension setting has no value" + "@backupRestored": { + "description": "Snackbar after a successful restore" }, - "extensionActionFailed": "Action failed", - "@extensionActionFailed": { - "description": "Fallback error when an extension action fails without details" + "nowPlayingLibraryEmpty": "라이브러리가 비어 있음", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" }, - "extensionEnterValue": "Enter value", - "@extensionEnterValue": { - "description": "Hint for editing an extension setting value" + "editMetadataAutoFillNoResults": "온라인에서 일치하는 메타데이터를 찾을 수 없음", + "updateDownloading": "다운로드하는 중...", + "trackLyricsSource": "출처: {source}", + "logFilterLevel": "레벨", + "logNoLogsYet": "아직 로그 없음", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } }, - "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": "{serviceName}에서 열기", "@trackOpenInService": { "description": "Button label to open a track in a named music service", "placeholders": { @@ -5422,120 +5532,677 @@ } } }, - "trackLyricsEmbeddedSource": "Embedded", - "@trackLyricsEmbeddedSource": { - "description": "Lyrics source label for embedded lyrics" + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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", + "libraryClearConfirmMessage": "이렇게 하면 라이브러리에서 스캔된 모든 트랙이 제거됩니다. 실제 음악 파일은 삭제되지 않습니다", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", "placeholders": { "count": { "type": "int" } } }, - "settingsSaveDownloadHistory": "Save download history", - "@settingsSaveDownloadHistory": { - "description": "Settings switch title for storing completed downloads in history" + "extensionsHomeFeedAuto": "자동", + "searchEmptyResultSubtitle": "다른 키워드를 검색해 보세요", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" }, - "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", + "dateToday": "오늘", + "a11yOpenItem": "{itemType} {name} 열기", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", "placeholders": { - "service": {} + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } } - } + }, + "audioAnalysisBitDepth": "비트 심도", + "editMetadataFieldTrackTotal": "전체 트랙 수", + "@editMetadataFieldTrackTotal": { + "description": "Label for total tracks field in the edit metadata sheet" + }, + "@editMetadataFieldDiscTotal": { + "description": "Label for total discs field in the edit metadata sheet" + }, + "replayGainBatchConfirmMessage": "음량을 분석하고 {count} 개의 트랙에 리플레이게인 태그를 추가하시겠습니까?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "앨범 아티스트 태그로 이름이 지정된 폴더", + "optionsSpotifyWarning": "Spotify는 사용자 고유의 API 자격 증명을 요구합니다. 'developer.spotify.com'에서 무료로 발급받으세요", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "메타데이터 편집", + "discographyDownloadAll": "모두 다운로드", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "앨범/아티스트 이름/앨범 이름/", + "extensionHealthServiceUnknown": "서비스 상태 알 수 없음", + "navHome": "홈", + "queueDownloadStarting": "시작하는 중...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} 게의 파일이 스캔됨 • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "selectionSelected": "{count} 개 선택됨", + "extensionDetailsInformation": "정보", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "디스코그래피 다운로드", + "editMetadataFieldCopyright": "저작권", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "정렬", + "cacheLibraryCoverDesc": "로컬 음악 파일에서 표지 이미지를 추출하였습니다. 다음 스캔 시 다시 추출합니다", + "dialogRemoveExtension": "확장 프로그램 제거", + "backupExportSectionTitle": "백업 생성", + "downloadEmbedLyricsDisabled": "먼저 메타데이터 삽입을 활성화하세요", + "openInOtherServices": "다른 서비스에서 열기", + "actionSelectAll": "모두 선택", + "settingsDownloadNetworkSubtitle": "다운로드에 사용할 네트워크를 선택하세요. Wi-Fi 전용으로 설정하면 모바일 데이터 사용 시 다운로드가 일시 중지됩니다", + "downloadFolderOrganization": "폴더 분류 형식", + "tutorialWelcomeTip2": "설치된 다운로드 확장 프로그램에서 FLAC 음질 오디오를 받으세요", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "모든 트랙 선택됨", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "디버깅을 위한 앱 로그 보기", + "albumFolderYearAlbumSubtitle": "앨범/[2005] 앨범 이름/", + "cancelDownloadKeep": "유지", + "optionsDetailedLoggingOn": "상세한 로그가 기록되고 있습니다", + "safMigrationMessage2": "새 저장소 시스템으로 전환하려면 다운로드 폴더를 다시 선택하세요", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "일본", + "notifUpdateFailed": "업데이트 실패", + "downloadCreatePlaylistSourceFolderRedundant": "폴더 구성 설정에 의해 처리됨", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "다운로드한 트랙을 저장할 위치를 선택하세요", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "비활성화됨 ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "로컬", + "backupContentsExtensions": "{count, plural, =1{1 개의 확장 프로그램} other{{count} 개의 확장 프로그램}}", + "sectionService": "서비스", + "lyricsProviderQqMusicDesc": "QQ Music (중국 노래에 적합, 프록시 경유)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "누락된 파일에 대한 불필요한 다운로드 기록 및 라이브러리 항목을 제거합니다", + "selectionTapPlaylistsToSelect": "선택할 재생목록을 탭하세요", + "notifUpdateFailedBody": "업데이트를 다운로드할 수 없습니다. 나중에 다시 시도하세요", + "downloadNeteaseIncludeTranslationDisabled": "원본 가사만", + "artistPopular": "인기", + "extensionRemoveButton": "확장 프로그램 제거", + "allFilesAccessEnabledSubtitle": "모든 폴더에 쓰기 가능", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "검색 제공자", + "tutorialWelcomeDesc": "좋아하는 음악을 무손실 음질로 다운로드하는 방법을 알아보겠습니다. 이 간단한 튜토리얼은 기본 사항을 보여줍니다", + "selectionBatchConvertConfirmTitle": "일괄 변환", + "extensionMetadataProvider": "메타데이터 제공자", + "queueDownloadedFileMissing": "다운로드한 파일이 없음", + "logClearLogs": "로그 삭제", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Spotify, Deezer에서 음악을 다운로드하거나 지원되는 URL을 붙여넣으세요", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "몇 분 기다린 후에 다시 시도하세요", + "downloadAllowLocalNetworkEnabled": "로컬/사설 주소에 대한 요청이 허용됨 (로컬 프록시 또는 사용자 지정 DNS용)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "아티스트", + "extensionCustomUrlHandling": "사용자 정의 URL 처리", + "appearanceDynamicColorSubtitle": "배경 화면을 참고하여 강조 색상이 지정됩니다", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "기본값", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "앨범 폴더 구조를 선택하세요", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "SpotiFLAC Mobile에서 빠른 로컬 미리듣기 전용이며, 일반적인 음악 감상에는 권장되지 않습니다", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "앱 폴더 (추천)", + "collectionPlaylistCreated": "재생목록 생성 완료", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "표지 이미지를 .jpg 파일로 저장", + "actionPaste": "붙여넣기", + "extensionSettingsCount": "{count} 개의 {count, plural, =1{설정} other{설정}}", + "downloadNativeWorker": "기본 다운로드 워커", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "''{extensionName}''이 설치됨. '설정 > 확장 프로그램'에서 활성화하세요", + "cacheRefreshStats": "통계 새로고침", + "collectionPlaylistChangeCover": "표지 이미지 변경", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "다운로드 기록 삭제", + "trackGenre": "장르", + "snackbarSelectedPlaylistsEmpty": "선택한 재생목록에 트랙이 없습니다", + "collectionAddedTracksToPlaylist": "''{playlistName}''에 {count} 개의 {count, plural, =1{트랙} other{트랙}}이 추가됨", + "downloadNeteaseIncludeRomanization": "Netease: 로마자 표기 포함", + "libraryFilterMetadataMissingArtist": "아티스트 누락", + "extensionsNoCustomSearch": "사용자 정의 검색이 있는 확장 프로그램이 없음", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "다운로드 제공자", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "가사 설정", + "aboutReportIssueSubtitle": "발생하는 모든 문제를 신고해 주세요", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "아몰레드 블랙", + "logIssueNetworkErrorDescription": "연결 문제가 감지됨", + "folderOrganizationByArtistAlbumSubtitle": "아티스트 및 앨범용 중첩 폴더", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "권한을 부여해 주세요", + "lyricsProvidersDescription": "가사 출처를 활성화, 비활성화 및 재정렬합니다. 가사가 발견될 때까지 위에서 아래로 제공자를 시도합니다", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "{count} 일 전", + "extensionsHomeFeedDescription": "메인 화면에 홈 피드를 제공하는 확장 프로그램을 선택하세요", + "downloadLossyMp3Subtitle": "최상의 호환성, 트랙당 약 10MB", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "자세히", + "collectionWishlistEmptyTitle": "위시리스트가 비어 있음", + "downloadAppleQqMultiPersonEnabled": "듀엣 및 그룹 트랙이 포함된 스피커 레이블", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "서비스 저하됨", + "optionsUseExtensionProvidersOn": "확장 프로그램 제공자가 활성화됨", + "selectionConvertNoConvertible": "선택된 변환할 수 있는 트랙이 없음", + "snackbarCredentialsCleared": "자격 증명이 삭제됨", + "setupStorageGranted": "저장소 접근 권한이 부여되었습니다!", + "downloadAllowLocalNetwork": "로컬 네트워크 접근 허용", + "optionsMaxQualityCoverSubtitleDisabled": "메타데이터 삽입이 꺼져 있을 때 비활성화됨", + "nowPlayingNoLyrics": "이 파일에는 가사가 없음", + "selectionDeleteTracksCount": "{count} {count, plural, =1{트랙} other{트랙}} 삭제", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} 개가 제외됨", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "폴더 변경", + "logIssueIspBlockingDescription": "ISP에서 다운로드 서비스 접속을 차단했을 수 있습니다", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "라이브러리 정리", + "collectionRemoveFromPlaylist": "재생목록에서 제거", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "확장 프로그램 자격 증명 포함", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 개의 트랙 다운로드 성공} other{{completed} 개의 트랙 다운로드 성공}}, {failed, plural, =1{1 개 실패} other{{failed} 개 실패}}", + "storeCategoryMetadata": "메타데이터", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "전체 디스크 수", + "tutorialLibraryTip1": "라이브러리 탭에서 다운로드 진행 상황과 다운로드 목록을 확인하세요", + "playlistsCount": "{count, plural, =1{1 개의 재생목록} other{{count} 개의 재생목록}}", + "downloadCreatePlaylistSourceFolderDisabled": "모든 트랙을 다운로드 폴더에 직접 저장합니다", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "로컬", + "tutorialDownloadInProgressSemantics": "다운로드를 진행하는 중", + "searchSortDurationLong": "재생시간 (긴순)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "로컬 저장소에 대한 정보", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "이 CUE 시트에 대한 오디오 파일을 찾을 수 없습니다", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} 다운로드 완료. 설치하려면 탭하세요", + "appearanceSelectAccentColor": "강조 색상 {hex} 선택", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "리플레이게인 다시 스캔", + "downloadSeparateSinglesFolder": "싱글 폴더 별도 다운로드", + "trackAlbumArtist": "앨범 아티스트", + "qualityFlacLossless": "FLAC 무손실", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "사용자 환경 맞춤 설정", + "extensionActionFailed": "작업 실패", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: 다인용 가사", + "downloadFallbackExtensionsSubtitle": "대체 확장 프로그램으로 사용할 확장 프로그램을 선택하세요", + "notifChannelLibraryScanDesc": "로컬 라이브러리 스캔 진행률을 표시합니다", + "storeExtensionsCount": "{count} 개의 {count, plural, =1{확장 프로그램} other{확장 프로그램}}", + "trackCoverNoEmbeddedArt": "내장된 표지 이미지가 없음", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "''{extensionName}''이 v{version}으로 업데이트됨", + "collectionRemoved": "''{trackName}'' 제거 완료", + "setupStorageAccessMessageAndroid11": "Android 11 이상 버전에서는 선택한 다운로드 폴더에 파일을 저장하려면 '모든 파일 접근' 권한이 필요합니다", + "notifDownloadsFinished": "다운로드 완료 ({completed} 개 완료, {failed} 개 실패)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} 개의 파일 • {percentage}%", + "optionsPrimaryProvider": "기본 제공자", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "트랙이 무손실 음질로 제공되지 않을 수 있습니다", + "collectionAddedToLoved": "''{trackName}''이 '좋아요 표시한 트랙'에 추가됨", + "albumFolderArtistAlbumFlat": "아티스트 / 앨범 (싱글 플랫)", + "homeAlbumInfoUnavailable": "앨범 정보를 사용할 수 없음", + "settingsLyrics": "가사", + "extensionVerificationBrowserExternal": "외부", + "regionCountryIN": "인도", + "extensionHealthUnknown": "알 수 없음", + "backupContentsWishlist": "{count} 개의 위시리스트 {count, plural, =1{트랙} other{트랙}}", + "settingsAutoExportFailed": "실패한 다운로드 자동 내보내기", + "logFilterSection": "필터", + "dialogDiscardChanges": "변경 사항 폐기", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "트랙", + "searchAlbums": "앨범", + "trackConvertFormat": "형식 변환", + "metadataProviderPriorityTitle": "메타데이터 우선순위", + "libraryFolderHint": "탭하여 폴더를 선택하세요", + "downloadedAlbumDeleteMessage": "앨범에서 {count} 개의 {count, plural, =1{트랙} other{트랙}}을 삭제하시겠습니까?\n\n저장소에서도 파일이 삭제됩니다", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "앨범", + "updateAvailable": "업데이트 사용 가능", + "optionsEmbedLyrics": "가사 삽입", + "trackReEnrichProgress": "메타데이터를 다시 구성하는 중...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "최대 피크", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "하단바에서 리포 탭 표시", + "settingsTitle": "설정", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "탐색 피드 캐시", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} 개 선택됨", + "downloadAskQualitySubtitle": "다운로드를 할 때마다 음질을 선택하도록 합니다", + "filenameShowAdvancedTags": "고급 태그 표시", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "대체 확장 프로그램", + "downloadAlbumArtistMetadataFull": "앨범 아티스트 메타데이터: 전체", + "cacheLibraryCover": "라이브러리 표지 캐시", + "actionShuffle": "셔플", + "backupCreated": "백업 생성 완료", + "downloadLossyAacSubtitle": "최상의 모바일 호환성, M4A 컨테이너", + "snackbarFillAllFields": "모든 항목을 입력해 주세요", + "actionCreate": "생성", + "snackbarAddedToQueueGeneric": "현재 다운로드 목록에 추가됨", + "downloadedAlbumDownloadedCount": "{count} 개 다운로드됨", + "snackbarLoadingCueSheet": "CUE 시트를 불러오는 중...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "SpotiFLAC 오리지널 개발자", + "a11yTrackByArtist": "''{artistName}''의 ''{trackName}''", + "audioAnalysisDynamicRange": "다이나믹 레인지", + "homeChangeSearchProviderTooltip": "검색 제공자 변경", + "loadingSharedLink": "공유된 링크를 불러오는 중...", + "lyricsModeEmbedSubtitle": "FLAC 메타데이터 내에 저장됩니다", + "setupNotificationBackgroundDescription": "알림으로 다운로드 진행 상황을 확인하세요. 앱이 백그라운드에서 실행 중일 때 다운로드 상태와 완료 여부를 확인할 수 있습니다", + "snackbarViewQueue": "다운로드 목록 보기", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "싱글과 앨범을 같은 폴더에 저장합니다", + "backupRestored": "백업 복원 성공", + "trackConvertConfirmMessageLosslessCapped": "{sourceFormat}에서 {targetFormat}({quality})으로 변환하시겠습니까?\n\n출력은 무손실 코덱을 유지하지만 비트 심도/샘플 속도가 제한됩니다. 변환 후 원본 파일이 삭제됩니다", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "특정 앨범 또는 싱글을 선택하세요", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "데이터를 복원할 백업 파일을 선택하세요. 이 작업을 수행하면 현재 기기에 저장된 설정, 기록 및 라이브러리가 백업 파일의 내용으로 대체됩니다", + "errorUrlFetchFailed": "이 링크에서 콘텐츠를 불러오는 데 실패하였습니다. 다시 시도해 주세요", + "lyricsProviderLyricsPlusDesc": "단어별 노래방 가사 (Apple/Musixmatch/Spotify/QQ, 프록시 이용)", + "dialogSave": "저장", + "trackReEnrichSearching": "온라인에서 메타데이터를 검색하는 중...", + "regionCountryUS": "미국", + "audioAnalysisDescription": "스펙트럼 분석으로 무손실 음질을 확인합니다", + "downloadFilenameFormat": "파일 이름 형식", + "cueSplitTitle": "CUE 시트 분할", + "settingsAppSubtitle": "업데이트, 데이터, 확장프로그램 리포, 디버그", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "''{item}''을 불러올 수 없음: 확장 소스가 누락됨", + "albumFolderAlbumOnlySubtitle": "앨범/앨범 이름/", + "errorLoadPlaylist": "재생목록 불러오기 실패", + "logIssueTrackNotFoundLabel": "트랙을 찾을 수 없음", + "extensionVerificationHelpTitleManual": "수동으로 인증 열기", + "dialogDiscard": "폐기", + "storageModeSaf": "사용자 정의 폴더 (SAF)", + "errorRateLimited": "사용 제한됨", + "downloadSelectQuality": "음질 선택", + "dialogDownloadPlaylistsMessage": "{playlistCount} 개의 {playlistCount, plural, =1{재생목록} other{재생록록}}에서 {trackCount} 개의 {trackCount, plural, =1{트랙} other{트랙}}을 다운로드하시겠습니까?", + "collectionFoldersTitle": "내 폴더", + "credentialsClientSecret": "클라이언트 비밀키", + "progressFetchingMetadata": "메타데이터를 가져오는 중... {current}/{total}", + "settingsDownloadNetworkAny": "WiFi + 모바일 네트워크", + "audioAnalysisDuration": "재생시간", + "audioAnalysisAnalyzing": "오디오를 분석하는 중...", + "credentialsDescription": "Spotify 애플리케이션 할당량을 사용하려면 클라이언트 ID와 비밀키를 입력하세요", + "extensionVerificationHelpMessageWaiting": "브라우저가 열리지 않았거나 인증을 완료한 후에도 SpotiFLAC Mobile로 돌아오지 않았다면, 아래 링크를 다시 열거나 직접 복사하세요", + "editMetadataFieldDiscNum": "디스크 #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "미리듣기 재생", + "setupPermissionRequiredMessage": "최상의 사용 경험을 위해 ''{permissionType}'' 권한이 필요합니다. 설정에서 나중에 변경할 수 있습니다", + "aboutVersion": "버전", + "qualityHiResFlacSubtitle": "24-bit / 최대 96kHz", + "audioAnalysisSamples": "샘플", + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "sectionMetadataProviders": "제공자", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "저작권", + "libraryForceFullScanSubtitle": "캐시를 무시하고 모든 파일을 다시 스캔합니다", + "trackCopiedToClipboard": "클립보드에 복사됨", + "optionsEmbedMetadata": "메타데이터 삽입", + "collectionAddedTracksToPlaylistWithExisting": "''{playlistName}''에 {count} 개의 {count, plural, =1{트랙} other{트랙}}이 추가됨 ({alreadyCount} 개의 트랙은 이미 재생목록에 있음)", + "@collectionAddedTracksToPlaylistWithExisting": { + "description": "Snackbar after adding multiple tracks to a playlist when some were already present", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + }, + "alreadyCount": { + "type": "int" + } + } + }, + "storeCategoryIntegration": "연동", + "storeClearFilters": "필터 지우기", + "navSettings": "설정", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "앱", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "전체 앨범 아티스트 문자열 사용", + "trackConvertFormatSubtitle": "AAC/M4A, MP3, Opus, ALAC 또는 FLAC으로 변환", + "albumFolderArtistAlbumSinglesSubtitle": "아티스트/앨범/ 및 아티스트/싱글/", + "collectionDeletePlaylistsMessage": "{count} 개의 {count, plural, =1{재생목록} other{재생목록}}을 삭제하시겠습니까?", + "lyricsProvidersSaved": "가사 제공자 우선순위가 저장됨", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "트랙 이름", + "homeRecent": "최근 기록", + "recentEmpty": "최근 항목이 없음", + "cacheClearAll": "모든 캐시 지우기", + "trackReEnrichFieldReleaseInfo": "데이터 & ISRC", + "regionCountryMX": "멕시코", + "a11yOpenAlbumByArtistTrackCount": "''{artistName}''의 앨범 ''{albumName}'' 열기 ({trackCount} 번째 곡)", + "editMetadataFieldAlbum": "앨범", + "settingsAbout": "정보", + "libraryFilterTitle": "필터", + "cleanupOrphanedDownloadsResult": "기록에서 {count} 개의 불필요한 항목이 제거됨", + "extensionHooksAvailable": "{count} 개의 후크 사용 가능", + "backupContentsSettings": "앱 설정", + "trackLyricsEmbedded": "가사 삽입 성공", + "optionsUpdateChannelPreview": "베타 버전을 받기", + "collectionAddedToFavoriteArtists": "''{artistName}''가 좋아하는 아티스트에 추가됨", + "libraryForceFullScan": "전제 스캔 강제 실행", + "snackbarProviderPrioritySaved": "제공자 우선순위가 저장됨", + "collectionFavoriteArtistsEmptySubtitle": "아티스트 페이지에서 하트를 탭하여 여기에 추가하세요", + "libraryBuiltInPlayerInfo": "내장 플레이어는 로컬 트랙을 빠르게 미리듣기 위한 도구입니다. 실제 음악 감상은 외부 음악 플레이어를 이용하는 것을 권장합니다", + "extensionServiceStatus": "서비스 상태", + "dateWeeksAgo": "{count} 주 전", + "historyFilterSingles": "싱글", + "tutorialSettingsTip2": "기본 오디오 음질 및 형식 설정", + "trackLyricsSaved": "가사가 ''{fileName}''에 저장됨", + "cacheClearAllConfirmTitle": "모든 캐시를 지우시겠습니까?", + "noTracksFoundForAlbum": "이 앨범에서 트랙을 찾을 수 없음", + "sectionLanguage": "언어", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "폴더 선택", + "dateYesterday": "어제", + "collectionAddToPlaylist": "재생목록에 추가", + "snackbarUnsupportedAudioFormat": "지원되지 않는 오디오 형식", + "libraryScanCancelled": "스캔이 취소됨", + "appearanceLanguage": "앱 언어", + "extensionsTitle": "확장 프로그램", + "dialogImportPlaylistMessage": "CSV 파일에서 {count} 개의 트랙을 찾았습니다. 다운로드 목록에 추가하시겠습니까?", + "permissionNotification": "알림", + "notifUpdateReady": "업데이트 준비 완료", + "lyricsModeDescription": "다운로드한 파일에 가사를 저장하는 방법을 선택하세요", + "downloadFrom": "다운로드 출처", + "collectionWishlistEmptySubtitle": "나중에 다운로드할 트랙을 저장하려면 트랙에서 +를 탭하세요", + "cueSplitSplitting": "CUE 시트를 분할하는 중... ({current}/{total})", + "optionsMaxQualityCover": "고품질 표지 이미지", + "trackOptionAddToWishlist": "위시리스트에 추가", + "settingsBackup": "백업 & 복원", + "aboutPaxsenixSubtitle": "Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou 및 Genius용 가사 프록시", + "notifDownloadCompleteCount": "다운로드 완료 ({completed}/{total})", + "extensionsNoDownloadProvider": "다운로드 제공자가 있는 확장 프로그램가 없음", + "libraryFilterSortGenreAsc": "장르 (오름차순)", + "trackReplayGainFailed": "리플레이게인 태그 추가 실패", + "collectionPlaylistRemoveCover": "표지 이미지 제거", + "storeEmptyNoResults": "확장 프로그램을 찾을 수 없음", + "logIssueTrackNotFoundDescription": "일부 트랙은 다운로드 서비스에서 찾을 수 없습니다", + "editMetadataFieldComment": "주석", + "settingsMetadata": "메타데이터", + "settingsCache": "저장소 & 캐시", + "providerPriorityFallbackExtensionsHint": "다운로드 공급자 기능이 활성화된 확장 프로그램만 여기에 나열됩니다", + "libraryFilterAll": "모두", + "notifDownloadingUpdate": "SpotiFLAC Mobile v{version}을 다운로드하는 중", + "extensionsProviderPrioritySection": "제공자 우선순위", + "storeChangeRepoTooltip": "리포지토리 변경", + "snackbarFailedToInstall": "확장 프로그램 설치 실패", + "libraryScanSubtitle": "오디오 파일 스캔", + "snackbarExtensionInstalled": "''{extensionName}''이 설치됨", + "setupOpenSettings": "설정 열기", + "extensionsInstalledSection": "설치된 확장 프로그램", + "aboutLinks": "링크", + "trackCoverClearSelected": "선택된 표지 지우기", + "libraryAutoScanWeekly": "주간", + "downloadMusixmatchLanguageAuto": "자동 (원본 언어)", + "optionsDefaultSearchTab": "기본 검색 탭", + "downloadPrimaryArtistOnlyOn": "기본 아티스트만: ON", + "folderOrganizationDescription": "다운로드한 파일을 폴더로 정리", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "파일에 포함", + "trackReEnrichFfmpegFailed": "FFmpeg 메타데이터 삽입 실패", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "손실 압축", + "actionPause": "일시 중지", + "csvImportTracks": "CSV 파일의 트랙: {count}", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "actionGo": "이동", + "sectionDebug": "디버그", + "editMetadataFieldDate": "날짜", + "timeHoursAgo": "{count, plural, =1{1 시간 전} other{{count} 시간 전}}", + "sectionPerformance": "성능", + "extensionsSearchWith": "{providerName}으로 검색", + "extensionsDownloadPrioritySubtitle": "다운로드 서비스 순서를 설정하세요", + "cacheAppDirectoryDesc": "HTTP 응답, WebView 데이터 및 기타 임시 앱 데이터", + "sectionData": "데이터", + "notifFinalizingTrack": "''{trackName}''를 마무리하는 중", + "snackbarFileNotFound": "파일을 찾을 수 없음", + "extensionQualityOptions": "음질 옵션", + "extensionVerificationBrowserSubtitleExternal": "인증을 기본 브라우저에서 먼저 실행합니다", + "backupInvalidFile": "이 파일은 유효한 SpotiFLAC 백업이 아닙니다", + "storeRepoDialogTitle": "확장 프로그램 리포지토리", + "extensionsSearchProviderDescription": "트랙 검색에 사용할 서비스를 선택하세요", + "albumFolderAlbumOnly": "앨범만", + "nowPlayingOpenInExternalPlayer": "외부 플레이어에서 열기", + "cueSplitButton": "트랙으로 분할" } diff --git a/lib/l10n/arb/app_nl.arb b/lib/l10n/arb/app_nl.arb index 78866881..af3706f9 100644 --- a/lib/l10n/arb/app_nl.arb +++ b/lib/l10n/arb/app_nl.arb @@ -29,6 +29,14 @@ "@homeSubtitle": { "description": "Subtitle shown below search box" }, + "homeEmptyTitle": "No search providers yet", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", "@homeSupports": { "description": "Info text about supported URL types" @@ -166,14 +174,6 @@ "@optionsDefaultSearchTabSubtitle": { "description": "Subtitle for the preferred default search tab setting" }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, "optionsSwitchBack": "Choose the default search provider to switch back from an extension", "@optionsSwitchBack": { "description": "Hint to switch back from extension search" @@ -226,6 +226,64 @@ "@optionsReplayGainSubtitleOff": { "description": "Subtitle when ReplayGain is disabled" }, + "trackReplayGain": "Rescan ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, "optionsArtistTagMode": "Artist Tag Mode", "@optionsArtistTagMode": { "description": "Setting title for how artist metadata is written into files" @@ -670,6 +728,18 @@ "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, + "setupLanguageTitle": "Choose Language", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" @@ -702,6 +772,18 @@ "@dialogDownload": { "description": "Confirm button in Download All dialog" }, + "previewPlay": "Play preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, "dialogDiscard": "Discard", "@dialogDiscard": { "description": "Dialog button - discard changes" @@ -928,6 +1010,10 @@ "@errorNoTracksFound": { "description": "Error - search returned no results" }, + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, "errorUrlNotRecognized": "Link not recognized", "@errorUrlNotRecognized": { "description": "Error title - URL not handled by any extension or service" @@ -1554,6 +1640,15 @@ "@trackCopyLyrics": { "description": "Action - copy lyrics to clipboard" }, + "trackLyricsSource": "Source: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, "trackLyricsNotAvailable": "Lyrics not available for this track", "@trackLyricsNotAvailable": { "description": "Message when lyrics not found" @@ -1844,6 +1939,30 @@ "@extensionsInstalledSuccess": { "description": "Success message after install" }, + "extensionsInstalledCount": "{count} extensions installed successfully", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", + "@extensionsInstallPartialSuccess": { + "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": "Download Priority", "@extensionsDownloadPriority": { "description": "Setting - download provider order" @@ -1938,15 +2057,23 @@ }, "downloadLossyMp3": "MP3 320kbps", "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" + "description": "Lossy format option - MP3 320kbps" }, "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", "@downloadLossyMp3Subtitle": { "description": "Subtitle for MP3 320kbps lossy option" }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, "downloadLossyOpus256": "Opus 256kbps", "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" + "description": "Lossy format option - Opus 256kbps" }, "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", "@downloadLossyOpus256Subtitle": { @@ -1954,7 +2081,7 @@ }, "downloadLossyOpus128": "Opus 128kbps", "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" + "description": "Lossy format option - Opus 128kbps" }, "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", "@downloadLossyOpus128Subtitle": { @@ -3285,6 +3412,10 @@ "@collectionLoved": { "description": "Custom folder for favorite tracks" }, + "collectionFavoriteArtists": "Favorite Artists", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, "collectionPlaylists": "Playlists", "@collectionPlaylists": { "description": "Custom user playlists folder" @@ -3318,6 +3449,15 @@ } } }, + "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", @@ -3389,6 +3529,14 @@ "@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" @@ -3450,6 +3598,24 @@ } } }, + "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" @@ -3466,6 +3632,14 @@ "@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" @@ -3569,15 +3743,15 @@ }, "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" + "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 naming" + "description": "Subtitle when track artist is used for folder names" }, "lyricsProvidersTitle": "Lyrics Provider Priority", "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "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": { @@ -3637,6 +3811,10 @@ "@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" @@ -3659,12 +3837,175 @@ }, "settingsDonate": "Support Development", "@settingsDonate": { - "description": "Settings menu item - donate" + "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" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "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" + }, + "backupRestoring": "Restoring backup...", + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "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" + }, + "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 store.", + "@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" @@ -3751,11 +4092,11 @@ }, "downloadLocationSubtitle": "Choose where to save your downloaded tracks", "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "description": "Subtitle shown in the download location picker sheet" }, "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "description": "Storage mode option - app-managed folder" }, "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", "@storageModeAppFolderSubtitle": { @@ -3763,7 +4104,7 @@ }, "storageModeSaf": "Custom Folder (SAF)", "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "description": "Storage mode option - Storage Access Framework" }, "storageModeSafSubtitle": "Pick any folder, including SD card", "@storageModeSafSubtitle": { @@ -3771,7 +4112,7 @@ }, "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "description": "Description shown in filename format editor" }, "downloadFilenameInsertTag": "Tap to insert tag:", "@downloadFilenameInsertTag": { @@ -3779,11 +4120,11 @@ }, "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "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 disabled" + "description": "Subtitle when separate singles folder is off" }, "downloadArtistNameFilters": "Artist Name Filters", "@downloadArtistNameFilters": { @@ -3791,135 +4132,159 @@ }, "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" + "description": "Setting to create a subfolder per playlist source" }, "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" + "description": "Subtitle when playlist folder is enabled" }, "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" + "description": "Subtitle when playlist folder is disabled" }, "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" + "description": "Subtitle when folder organization is already set to playlist" }, "downloadSongLinkRegion": "SongLink Region", "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" + "description": "Setting for SongLink region used during fallback resolution" }, "downloadNetworkCompatibilityMode": "Network Compatibility Mode", "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" + "description": "Setting for legacy TLS/network handling" }, "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" + "description": "Subtitle when network compatibility mode is on" }, "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" + "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": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" + "description": "Subtitle when quality picker is disabled due to extension service" }, "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" + "description": "Legacy info shown when a provider does not expose quality options" }, "downloadEmbedLyricsDisabled": "Enable metadata embedding first", "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" }, "downloadNeteaseIncludeTranslation": "Netease: Include Translation", "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" + "description": "Setting to include translated lyrics from Netease" }, "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" + "description": "Subtitle when Netease translation is on" }, "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" + "description": "Subtitle when Netease translation is off" }, "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" + "description": "Setting to include romanized lyrics from Netease" }, "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" + "description": "Subtitle when Netease romanization is on" }, "downloadNeteaseIncludeRomanizationDisabled": "No romanization", "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" + "description": "Subtitle when Netease romanization is off" }, "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" + "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 word-by-word is enabled" + "description": "Subtitle when multi-person lyrics is on" }, "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" + "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 title for Musixmatch language preference" + "description": "Setting for Musixmatch lyrics translation language" }, "downloadMusixmatchLanguageAuto": "Auto (original language)", "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" + "description": "Subtitle when no language is set" }, "downloadFilterContributing": "Filter Contributing Artists", "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" + "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 enabled" + "description": "Subtitle when contributing artist filter is on" }, "downloadFilterContributingDisabled": "Full Album Artist string used", "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" + "description": "Subtitle when contributing artist filter is off" }, "downloadProvidersNoneEnabled": "No providers enabled", "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" + "description": "Shown when no lyrics providers are active" }, "downloadMusixmatchLanguageCode": "Language code", "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" + "description": "Label for Musixmatch language input field" }, "downloadMusixmatchLanguageHint": "e.g. en, de, ja", "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" + "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 the Musixmatch language picker" + "description": "Description in Musixmatch language picker" }, "downloadMusixmatchAuto": "Auto", "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" + "description": "Button to clear Musixmatch language (use auto)" }, "downloadNetworkAnySubtitle": "Use WiFi or mobile data", "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" + "description": "Subtitle for any-network option in picker" }, "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" + "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 the SongLink region picker" + "description": "Description in SongLink region picker" }, "snackbarUnsupportedAudioFormat": "Unsupported audio format", "@snackbarUnsupportedAudioFormat": { @@ -4143,6 +4508,18 @@ "@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" @@ -4175,6 +4552,30 @@ "@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" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, "audioAnalysisSamples": "Samples", "@audioAnalysisSamples": { "description": "Total samples metric label" @@ -4206,12 +4607,20 @@ }, "extensionsHomeFeedAuto": "Auto", "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" + "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", @@ -4374,6 +4783,31 @@ } } }, + "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" @@ -4493,271 +4927,6 @@ "@notifUpdateFailedBody": { "description": "Notification body when app update download fails" }, - "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" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "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" - }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "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" - } - } - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "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" - }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "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" - }, - "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" - } - } - }, "searchTracks": "Tracks", "@searchTracks": { "description": "Search filter label - tracks" @@ -5070,6 +5239,86 @@ } } }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "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" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "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" @@ -5537,5 +5786,423 @@ "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": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@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" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "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" + }, + "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" } -} +} \ No newline at end of file diff --git a/lib/l10n/arb/app_pt_PT.arb b/lib/l10n/arb/app_pt_PT.arb index b01ee629..6a13995f 100644 --- a/lib/l10n/arb/app_pt_PT.arb +++ b/lib/l10n/arb/app_pt_PT.arb @@ -1,2453 +1,31 @@ { "@@locale": "pt_PT", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Início", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Library", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Configurações", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Repo", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Início", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Paste a supported URL or search by name", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeSupports": "Suporte: Faixas, Álbuns, Playlists, URLs de Artista", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "Recentes", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyFilterAll": "Tudo", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Álbuns", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Singles", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historySearchHint": "Pesquisar histórico...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Configurações", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "Download", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "Aparência", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "Opções", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Extensões", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "Sobre", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Download", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Mostrar seletor de qualidade para cada download", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Formato do Nome do Arquivo", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadSingleFilenameFormat": "Single Filename Format", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Filename pattern for singles and EPs. Uses the same tags as the album format.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "downloadFolderOrganization": "Organização de Pastas", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Aparência", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "Sistema", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Claro", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Escuro", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Cores Dinâmicas", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Usar cores do seu papel de parede", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "Visualização do Histórico", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Lista", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Grade", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Opções", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "Provedor Primário", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Usando a extensão: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsDefaultSearchTab": "Default Search Tab", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Fallback Automático", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Tentar outros serviços se o download falhar", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Usar Provedores de Extensão", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Incorporar Letras", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "Capa de Qualidade Máxima", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Baixar capa do álbum com a mais alta resolução", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Artist Tag Mode", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Single joined value", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "optionsExtensionStore": "Extension Repo", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "Procurar Atualizações", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "Notificar quando uma nova versão estiver disponível", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "optionsUpdateChannel": "Canal de Atualização", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "optionsUpdateChannelStable": "Somente versões estáveis", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "optionsUpdateChannelPreview": "Obter versões de prévia", - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "optionsUpdateChannelWarning": "A prévia pode conter erros ou recursos incompletos", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "optionsClearHistory": "Limpar Histórico de Download", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "optionsClearHistorySubtitle": "Remover todas as faixas baixadas do histórico", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "optionsDetailedLogging": "Registro detalhado", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "optionsDetailedLoggingOn": "Registros detalhados estão sendo gravados", - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "optionsDetailedLoggingOff": "Habilitar para relatórios de erros", - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "optionsSpotifyCredentials": "Credenciais do Spotify", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Obrigatório - toque para configurar", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "O Spotify requer as suas próprias credenciais de API. Consiga gratuitamente em developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Extensões", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Desabilitado", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Versão {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "por {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Desinstalar", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Extension Repo", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Pesquisar extensões...", - "@storeSearch": { - "description": "Store search placeholder" - }, - "storeInstall": "Instalar", - "@storeInstall": { - "description": "Install extension button" - }, - "storeInstalled": "Instalado", - "@storeInstalled": { - "description": "Already installed badge" - }, - "storeUpdate": "Atualizar", - "@storeUpdate": { - "description": "Update available button" - }, - "aboutTitle": "Sobre", - "@aboutTitle": { - "description": "About page title" - }, - "aboutContributors": "Colaboradores", - "@aboutContributors": { - "description": "Section for contributors" - }, - "aboutMobileDeveloper": "Desenvolvedor da versão móvel", - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "aboutOriginalCreator": "Criador do SpotiFLAC original", - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "aboutLogoArtist": "O artista talentoso que criou o nosso lindo logotipo do aplicativo!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "aboutTranslators": "Tradutores", - "@aboutTranslators": { - "description": "Section for translators" - }, - "aboutSpecialThanks": "Agradecimentos Especiais", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "aboutLinks": "Links", - "@aboutLinks": { - "description": "Section for external links" - }, - "aboutMobileSource": "Código-fonte do app móvel", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "Código-fonte do app desktop", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Reportar um problema", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Reporte qualquer problema que encontrar", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Solicitação de recurso", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Sugira novos recursos para o aplicativo", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Canal do Telegram", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Anúncios e atualizações", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Comunidade do Telegram", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Converse com outros usuários", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Social", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "Aplicativo", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Versão", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Álbuns", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Singles e EPs", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Compilações", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Populares", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} ouvintes mensais", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "trackMetadataService": "Serviço", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "trackMetadataPlay": "Reproduzir", - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "trackMetadataShare": "Compartilhar", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "trackMetadataDelete": "Apagar", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "setupGrantPermission": "Conceder Permissão", - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "setupSkip": "Ignorar por enquanto", - "@setupSkip": { - "description": "Skip current step button" - }, - "setupStorageAccessRequired": "Acesso ao Armazenamento Necessário", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "setupStorageAccessMessageAndroid11": "O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Abrir Configurações", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Permissão negada. Por favor, conceda todas as permissões para continuar.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "Permissão {permissionType} Necessária", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "A permissão {permissionType} é necessária para a melhor experiência. Você pode alterar isso mais tarde em Configurações.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Usar Pasta Padrão?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Nenhuma pasta selecionada. Você gostaria de usar a pasta padrão de música?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Usar Padrão", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Local do Download", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "No iOS, downloads são salvos na pasta Documentos do aplicativo. Você pode acessá-los através do app Arquivos.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "Pasta Documentos do App", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Recomendado - acessível através do aplicativo Arquivos", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Escolher dos Arquivos", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Selecione o iCloud ou outro local", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "Limitação do iOS: Pastas vazias não podem ser selecionadas. Escolha uma pasta com pelo menos um arquivo.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Baixar faixas do Spotify em FLAC", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStorageGranted": "Permissão de Armazenamento Concedida!", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "Permissão de Armazenamento Necessária", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "O SpotiFLAC precisa de permissão de armazenamento para salvar os seus arquivos de música baixados.", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "Permissão de Notificações Concedida!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "Habilitar Notificações", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupFolderChoose": "Escolher Pasta de Download", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "Selecione uma pasta onde as suas músicas baixadas serão salvas.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupSelectFolder": "Seleccionar Pasta", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupEnableNotifications": "Habilitar Notificações", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupNotificationBackgroundDescription": "Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "Ignorar por enquanto", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupNext": "Próximo", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Começar", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupAllowAccessToManageFiles": "Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "dialogCancel": "Cancelar", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogSave": "Salvar", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "Apagar", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "Tentar novamente", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClear": "Limpar", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogDone": "Concluído", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "Importar", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDownload": "Download", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "dialogDiscard": "Descartar", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "Remover", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "Desinstalar", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "Descartar Alterações?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "Você tem alterações não salvas. Deseja descartá-las?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogClearAll": "Limpar Tudo", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogRemoveExtension": "Remover Extensão", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Tem certeza de que deseja remover esta extensão? Isso não pode ser desfeito.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "Desinstalar Extensão?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "Tem certeza que deseja remover {extensionName}?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "Limpar Histórico", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Tem certeza que deseja limpar todo o histórico de downloads? Isso não pode ser desfeito.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "Apagar Selecionados", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "Apagar {count} {count, plural, =1{faixa} other{faixas}} do histórico?\n\nIsso também apagará os arquivos do armazenamento.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Importar Playlist", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "{count} Faixas encontradas em CSV. Adicioná-las à lista de downloads?", - "csvImportTracks": "{count} faixas do CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "\"{trackName}\" adicionada à fila", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAddedTracksToQueue": "{count} faixas adicionadas à fila", - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAlreadyDownloaded": "\"{trackName}\" já foi baixada", - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "Histórico limpo", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "Credenciais salvas", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Credenciais limpas", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{faixa apagada} other{faixas apagadas}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Não foi possível abrir o arquivo: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Por favor, preencha todos os campos", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Ver Fila", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "URL do {platform} copiado para a área de transferência", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "Arquivo não encontrado", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Por favor, selecione um arquivo .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Prioridade de provedor salva", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Prioridade do provedor de metadados salva", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} instalada.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarExtensionUpdated": "{extensionName} atualizada.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarFailedToInstall": "Falha ao instalar a extensão", - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "snackbarFailedToUpdate": "Falha ao atualizar a extensão", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "errorRateLimited": "Tráfico Limitado (Rate Limited)", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "Nenhuma faixa encontrada", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "errorUrlNotRecognized": "Link not recognized", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "This link is not supported. Make sure the URL is correct and a compatible extension is installed.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Failed to load content from this link. Please try again.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "Não é possível carregar {item}: faltando a fonte da extensão", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Pausar", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Retomar", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Cancelar", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Selecionar Tudo", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Desselecionar", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Remover Credenciais", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Salvar Credenciais", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} selecionado(s)", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Todas as faixas selecionadas", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Selecione as faixas para apagar", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Buscando metadados... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "Lendo CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Músicas", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Artistas", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Álbuns", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Playlists", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Sort Results", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Default", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Title (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Title (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Artist (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Artist (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Duration (Shortest)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Duration (Longest)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Release Date (Oldest)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Release Date (Newest)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "Reproduzir", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Formato do Nome do Arquivo", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Show advanced tags", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Enable formatted tags for track padding and date patterns", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "Nenhuma organização", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "By Playlist", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Separate folder for each playlist", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "Por Artista", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "Por Album", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Artista/Álbum", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Organizar arquivos baixados em pastas", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Todos os arquivos na pasta de download", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Pasta separada para cada artista", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Pasta separada para cada álbum", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Pastas aninhadas para artista e álbum", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Atualização Disponível", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Depois", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Iniciando download...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Download falhou", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Falha ao baixar a atualização", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Uma nova versão está pronta", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Atual", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "Novo", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "Baixando...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "Novidades", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "Baixar e Instalar", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Não lembrar", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "Prioridade de Provedor", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "Arraste para reordenar provedores de download. O aplicativo irá tentar provedores de cima para baixo ao baixar as faixas.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerPriorityFallbackExtensionsTitle": "Extension Fallback", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Extensão", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Prioridade de Metadados", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Arraste para reordenar provedores de metadados. O aplicativo tentará provedores de cima para baixo ao procurar por faixas e buscar metadados.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "O Deezer não tem limites de taxa e é recomendado como principal. O Spotify pode limitar a taxa após muitas solicitações.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "Sem limites de taxa", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Pode ter limites de taxa", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Registros", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopied": "Registros copiados para área de transferência", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Pesquisar registros...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Nível", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filtro", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Compartilhar registros", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "Limpar registros", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "Limpar Registros", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "Tem certeza de que deseja limpar todos os registros?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "Filtrar registros por gravidade", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "Ainda não há registros", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Os registros aparecerão aqui enquanto você usa o aplicativo", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "Entradas ({count} filtradas)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "Entradas ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Credenciais do Spotify", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Digite a sua Client ID e Secret para usar a sua própria cota de aplicativo do Spotify.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Client ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Colar Client ID", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Client Secret", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Colar Client Secret", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "channelStable": "Estável", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "channelPreview": "Prévia", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "sectionSearchSource": "Origem da Pesquisa", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "sectionDownload": "Download", - "@sectionDownload": { - "description": "Settings section header" - }, - "sectionPerformance": "Desempenho", - "@sectionPerformance": { - "description": "Settings section header" - }, - "sectionApp": "Aplicativo", - "@sectionApp": { - "description": "Settings section header" - }, - "sectionData": "Dados", - "@sectionData": { - "description": "Settings section header" - }, - "sectionDebug": "Depuração", - "@sectionDebug": { - "description": "Settings section header" - }, - "sectionService": "Serviço", - "@sectionService": { - "description": "Settings section header" - }, - "sectionAudioQuality": "Qualidade de Áudio", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "sectionFileSettings": "Configurações de Arquivo", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "sectionLyrics": "Letras", - "@sectionLyrics": { - "description": "Settings section header" - }, - "lyricsMode": "Modo de Letras", - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "lyricsModeDescription": "Escolha como as letras são salvas com os seus downloads", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "Incorporar no arquivo", - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "lyricsModeEmbedSubtitle": "Letra armazenada nos metadados da FLAC", - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "lyricsModeExternal": "Arquivo .lrc externo", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "lyricsModeExternalSubtitle": "Arquivo .lrc separado para reprodutores como o Samsung Music", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "Ambos", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Incorporar e salvar arquivo .lrc", - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "sectionColor": "Cor", - "@sectionColor": { - "description": "Settings section header" - }, - "sectionTheme": "Tema", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Layout", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Idioma", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "Idioma do aplicativo", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "settingsAppearanceSubtitle": "Tema, cores, exibição", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Gerenciar provedores de download", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "Ver logs do app para depuração", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Carregando link compartilhado...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Pressione voltar novamente para sair", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Baixar Todos ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 faixa} other{{count} faixas}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Copiar caminho do arquivo", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Remover do dispositivo", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Carregar Letras", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Metadados", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Informações do Arquivo", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Letras", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "Arquivo não encontrado", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Abrir no Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Abrir no Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Nome da faixa", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Artista", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Artista do álbum", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Álbum", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Número da faixa", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Número do disco", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Duração", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Qualidade de Áudio", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Data de lançamento", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Género", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Gravadora", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Direitos Autorais", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "Baixado", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Copiar letra", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsNotAvailable": "Letra não disponível para esta faixa", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsNotInFile": "No lyrics found in this file", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Fetch from Online", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "trackLyricsTimeout": "A solicitação expirou. Tente novamente mais tarde.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Falha ao carregar a letra", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Incorporar Letras", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Letras incorporadas com sucesso", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Faixa de instrumentais", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "Copiado para a área de transferência", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Remover do dispositivo?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "Isto irá excluir o arquivo baixado permanentemente e removê-lo do seu histórico.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "Hoje", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Ontem", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "{count} dias atrás", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "{count} semanas atrás", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "{count} meses atrás", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "Tudo", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Metadados", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Download", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Utilidade", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Letras", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Integração", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Limpar filtros", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Add Extension Repository", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" + "cacheCleanupUnused": "Cleanup unused data", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "Repository URL", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "e.g. https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Add Repository", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Change repository", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Extension Repository", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Current repository:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "New Repository URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Failed to load repository", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "No extensions found", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Autor", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Erro", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Funcionalidades", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Provedor de Metadados", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Provedor de Download", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Provedor de Letras", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "Gerenciador de URL", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Opções de Qualidade", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Ganchos de Pós-Processamento", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Permissões", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Configurações", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Remover Extensão", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Atualizado", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Versão Mínima do App", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Correspondência de Faixa Personalizada", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Pós-Processamento", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} gancho(s) disponíveis", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionPatternsCount": "{count} padrão(ões)", - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionStrategy": "Estratégia: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "extensionsProviderPrioritySection": "Prioridade de Provedor", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Extensões Instaladas", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "Nenhuma extensão instalada", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Instale arquivos .spotiflac-ext para adicionar novos provedores", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Instalar Extensão", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Extensões podem adicionar novos metadados e baixar provedores. Somente instale extensões a partir de fontes confiáveis.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "Extensão instalada com sucesso", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsDownloadPriority": "Prioridade de Download", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Definir ordem do serviço de download", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "Nenhuma extensão com provedor de download", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Prioridade de Metadados", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Definir ordem de origem de pesquisa e metadados", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Nenhuma extensão com provedor de metadados", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Provedor de Pesquisa", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Nenhuma extensão com pesquisa personalizada", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Escolha qual serviço utilizar para pesquisar faixas", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Busca personalizada", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Erro ao carregar extensão", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Lossless", - "@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-bit / até 96kHz", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / até 192kHz", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "Lossy 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Lossy Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Lossy 320kbps Format", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "A qualidade real depende da faixa que estiver disponível no serviço", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Perguntar qualidade antes de baixar", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Pasta de Download", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Pasta de Singles Separada", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Estrutura da Pasta de Álbum", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Escolher a estrutura das pastas dos álbuns", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Primary artist only for folders", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Selecionar Qualidade", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Baixar De", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "Escuro AMOLED", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Fundo preto puro", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Limpar Tudo", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Você tem certeza que deseja limpar todos os downloads?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Auto-export failed downloads", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Download Network", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "WiFi + Mobile Data", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "WiFi Only", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Artista / Álbum", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Álbuns/Nome do Artista/Nome do Álbum/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Artista / [Ano] Álbum", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Álbuns/Nome do Artista/[2005] Nome do Álbum/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Somente Álbum", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Albums/Nome do Álbum/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Ano] Álbum", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Álbuns/[2005] Nome do Álbum/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Artista / Álbum + Singles", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Artista/Álbum/ e Artista/Singles/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Apagar Selecionados", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Excluir {count} {count, plural, =1{faixa} other{faixas}} deste álbum?\n\nIsso também excluirá os arquivos do armazenamento.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} selecionado(s)", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "Todas as faixas selecionadas", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Toque nas faixas para selecionar", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Apagar {count} {count, plural, =1{faixa} other{faixas}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Selecione as faixas para apagar", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Disco {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "recentTypeArtist": "Artista", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Álbum", - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "recentTypeSong": "Música", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "recentTypePlaylist": "Playlist", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "recentEmpty": "No recent items yet", - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "recentShowAllDownloads": "Show All Downloads", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" - }, - "recentPlaylistInfo": "Playlist: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "discographyDownload": "Baixar Discografia", - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "discographyDownloadAll": "Baixar Tudo", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "discographyDownloadAllSubtitle": "{count} faixas de {albumCount} lançamentos", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographyAlbumsOnly": "Somente Álbuns", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "discographyAlbumsOnlySubtitle": "{count} faixas de {albumCount} álbuns", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySinglesOnly": "Somente Singles e EPs", - "@discographySinglesOnly": { - "description": "Option - download only singles" - }, - "discographySinglesOnlySubtitle": "{count} faixas de {albumCount} singles", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySelectAlbums": "Selecione Álbuns...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "discographySelectAlbumsSubtitle": "Escolher álbuns ou singles específicos", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "Buscando faixas...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "Buscando {current} de {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} selecionado(s)", - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyDownloadSelected": "Baixar Selecionados", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "discographyAddedToQueue": "{count} faixas adicionadas à fila", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} adicionada(s), {skipped} já baixada(s)", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "Nenhum álbum disponível", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "Falha ao obter alguns álbuns", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "Storage Access", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "All Files Access", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Can write to any folder", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Limited to media folders only", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "Local Library", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "Storage & Cache", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "View size and clear cached data", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "Local Library", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryScanSettings": "Scan Settings", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "Enable Local Library", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Scan and track your existing music", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "Library Folder", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "Tap to select folder", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Show Duplicate Indicator", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryAutoScan": "Auto Scan", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Every app open", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Daily", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Weekly", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Actions", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Scan Library", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Scan for audio files", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Select a folder first", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Cleanup Missing Files", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Clear Library", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Remove all scanned tracks", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Clear Library", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "About Local Library", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", - "@libraryAboutDescription": { - "description": "Description of local library feature" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", "@libraryTracksUnit": { @@ -2458,1022 +36,59 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "folderOrganizationNone": "Nenhuma organização", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScanned": "Last scanned: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryLastScannedNever": "Never", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanFinalizing": "Finalizing library...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryScanProgress": "{progress}% of {total} files", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "In Library", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Removed {count} missing files from library", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Library cleared", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Storage Access Required", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Selected folder does not exist", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Local", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "All", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Downloaded", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Local", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filters", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Lossy", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterMetadata": "Metadata", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Complete metadata", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Missing any metadata", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Missing year", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Missing genre", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "libraryFilterSort": "Sort", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Latest", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Oldest", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterSortAlbumAsc": "Album (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Album (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Genre (A-Z)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Genre (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "timeJustNow": "Just now", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Finding Music", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "There are two easy ways to find music you want to download.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Downloading Music", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Your Library", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "View download progress and queue in the Library tab", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Tap any track to play it with your music player", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Switch between list and grid view for better browsing", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Extensions", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Add new download providers or search sources", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Customize Your Experience", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Change download location and folder organization", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Set default audio quality and format preferences", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Customize app theme and appearance", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Force Full Scan", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "No orphaned entries found", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Storage & Cache", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Cache overview", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Cached Data", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Maintenance", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "App cache directory", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Temporary directory", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "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" - }, - "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" - }, - "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "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" - }, - "trackReEnrichFieldsTitle": "Fields to update", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "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" - }, - "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" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@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" - } - } - }, - "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "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" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "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" - } - } - }, - "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" - }, - "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "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", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "Split CUE Album", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "Desligar", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "Escolha quais extensões de download instaladas podem ser usadas durante a alternativa automática.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "Split into {count} tracks successfully", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "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" - }, - "collectionPlaylists": "Playlists", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "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" - }, - "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedToPlaylist": "Added to \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Playlist created", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "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" - }, - "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist deleted", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Playlist renamed", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "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" - }, - "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" - }, - "collectionRemoved": "\"{trackName}\" removed", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "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" - } - } - }, - "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" - }, - "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", @@ -3483,42 +98,102 @@ } } }, - "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", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "No convertible tracks selected", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Batch Convert", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "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", + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "Música", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "Compartilhar registros", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "Instalar Extensão", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "ReplayGain adicionado a {success} de {total} faixas", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "Nenhuma extensão instalada", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "CUE split failed", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Cole um URL compatível ou pesquise por nome", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", @@ -3531,18 +206,297 @@ } } }, - "selectionBatchConvertProgress": "Converting {current} of {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Data de lançamento (mais antiga)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "Criador do I Don't Have Spotify (IDHS). O resolvedor de link alternativo que salva o dia!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "Cor", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Cache da imagem de capa", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Split CUE Album", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Cleared: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "Por favor, selecione um arquivo .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{count} faixas de {albumCount} singles", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, + "optionsExtensionStore": "Repositório de extensões", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "Somente Singles e EPs", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Get lyrics, enhanced metadata, and more features", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Canal do Telegram", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "Ganchos de Pós-Processamento", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "Baixar", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "Apagar Selecionados", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3558,906 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} baixado(s)", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "FLAC Max de alta resolução", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" - }, - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", - "@lyricsProvidersDescription": { - "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, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music 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" - }, - "settingsDonateSubtitle": "Buy the developer a coffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "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": { "type": "String" } } }, - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "No tracks found for this album", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "Tema", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "storageModeAppFolder": "App Folder (Recommended)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "storageModeSaf": "Custom Folder (SAF)", - "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilenameInsertTag": "Tap to insert tag:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Auto", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the 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": "Select fields to fill automatically from online metadata", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "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" - } - } - }, - "queueDownloadedHeader": "Downloaded", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Search with {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "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": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto 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" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Cancel download?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Keep", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "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", + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Failed to load album", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Failed to load playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "Nenhuma faixa encontrada", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Failed to load artist", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "Prioridade de Provedor", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Download Progress", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Shows download progress for tracks", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Library Scan", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Shows local library scan progress", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "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" - } - } - }, - "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" - } - } - }, - "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", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "Remover do dispositivo?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4472,283 +653,220 @@ } } }, - "notifUpdateReady": "Update Ready", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "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" - }, - "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" + "setupGetStarted": "Começar", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "Aparência\n", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Fallback Extensions", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "source": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } + "extensionsMetadataPriority": "Prioridade de Metadados", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "description": "Message when installing multiple extensions partially succeeds", - "placeholders": { - "installed": { - "type": "int", - "description": "Number of successfully installed extensions" - }, - "attempted": { - "type": "int", - "description": "Number of selected extensions" - } - } + "updateCurrent": "Atual", + "@updateCurrent": { + "description": "Label for current version" }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" + "@aboutFeatureRequest": { + "description": "Link to suggest features" }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" }, - "collectionFavoriteArtists": "Favorite Artists", "@collectionFavoriteArtists": { "description": "Custom folder for favorite artists" }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "Apagar {count} {count, plural, =1{faixa} other{faixas}} do histórico?\n\nIsso também apagará os arquivos do armazenamento.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", "placeholders": { "count": { "type": "int" } } }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" }, - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" }, - "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", - "@collectionAddedToFavoriteArtists": { - "description": "Snackbar after adding artist to favorite artists", + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "Storage Access Required", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Tem certeza que deseja limpar todo o histórico de downloads? Isso não pode ser desfeito.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Just now", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Cleanup Orphaned Downloads", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Favorite Artists", + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Playlists", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "Registros", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", "placeholders": { - "artistName": { - "type": "String" + "current": { + "type": "int" + }, + "total": { + "type": "int" } } }, - "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", - "@collectionRemovedFromFavoriteArtists": { - "description": "Snackbar after removing artist from favorite artists", + "aboutLogoArtist": "O artista talentoso que criou o nosso lindo logotipo do aplicativo!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "Prévia", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", "placeholders": { - "artistName": { - "type": "String" + "count": { + "type": "int" } } }, - "artistOptionAddToFavorites": "Add to Favorite Artists", - "@artistOptionAddToFavorites": { - "description": "Action label - add artist to favorite artists" + "trackReplayGainSubtitle": "Analisar o volume e gravar etiquetas ReplayGain", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" }, - "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", - "@artistOptionRemoveFromFavorites": { - "description": "Action label - remove artist from favorite artists" + "homeTitle": "Início", + "@homeTitle": { + "description": "Home screen title" }, - "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", - "@downloadAppleElrcWordSync": { - "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" + "extensionMinAppVersion": "Versão Mínima do App", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" }, - "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" - }, - "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" - }, - "audioAnalysisLufs": "LUFS", - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } }, "audioAnalysisTruePeak": "True Peak", "@audioAnalysisTruePeak": { "description": "True peak metric label" }, - "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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "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" - }, - "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", @@ -4758,15 +876,1708 @@ } } }, - "searchTracks": "Tracks", - "@searchTracks": { - "description": "Search filter label - tracks" + "@dialogRetry": { + "description": "Dialog button - retry action" }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Converting {current} of {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Prévia indisponível", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "ID do cliente: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Never", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "Número da faixa", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Analisando o volume...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "Colaboradores", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "Converse com outros usuários", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Link não reconhecido", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Tap love on tracks to keep your favorites", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "Sem limites de taxa", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "Metadados", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Failed to load album", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Manter o Android aberto", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "Colar Client ID", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "Origem da Pesquisa", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "All Files Access", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, + "extensionsInstalledCount": "{count} extensões instaladas com sucesso", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Downloaded album and track cover art. Will re-download when viewed.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "Limpar Tudo", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Full artist string used for folder name", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Remove from folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "Metadados", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Genre (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "Arquivo não encontrado", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "O Deezer não tem limites de taxa e é recomendado como principal. O Spotify pode limitar a taxa após muitas solicitações.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "Código-fonte do app desktop", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{faixa apagada} other{faixas apagadas}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "URL do {platform} copiado para a área de transferência", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "O criador do QQDL e da HiFi API. Este projeto ajudou a moldar o suporte a transferências sem perdas.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Buscando {current} de {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "Serviço", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "{count} faixas adicionadas à fila", + "cueSplitTrackCount": "{count} tracks", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Importar Playlist", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Local Library", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Data de lançamento (mais recente)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "Singles e EPs", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Alternativa de extensão", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Playlist: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "Registro detalhado", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Actions", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "Nenhuma pasta selecionada. Você gostaria de usar a pasta padrão de música?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "Failed: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Adicionar ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Provedores de extensão são necessários", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Album (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "Opções", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "Falha ao baixar a atualização", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "Tentar novamente", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Tap any track to play it with your music player", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "Desselecionar", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "Suporte: Faixas, Álbuns, Playlists, URLs de Artista", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Playlist is empty", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Latest", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "Todos os arquivos na pasta de download", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "Álbuns", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "cacheSectionMaintenance": "Maintenance", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / até 192kHz", + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "Artista/Álbum", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "Não foi possível abrir o arquivo: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "Obrigatório - toque para configurar", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "Letra não disponível para esta faixa", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "Utilidade", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Added to \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Clear cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Ano] Álbum", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Storage & Cache", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "Nenhuma extensão com provedor de metadados", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Título (Z-A)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16 bits / 44,1 kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Finalizing library...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Fallback Automático", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "Desenvolvedor da versão móvel", + "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "Desinstalar", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Delete playlist", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "Artistas", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "Gerenciador de URL", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "Padrão do sistema", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} entries", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "Definir ordem de origem de pesquisa e metadados", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Selecione as faixas para apagar", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Change download location and folder organization", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Limited to media folders only", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "", + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "Selecione as faixas para apagar", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "Gravadora", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "Cancelar", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "Habilitar Notificações", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "Autor", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "Formato do Nome do Arquivo", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "Pesquisar histórico...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Temporary files from downloads and audio conversion.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "Incorporar Letras", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "Colar Client Secret", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "Histórico limpo", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "Provedor de Letras", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "Tudo", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Finding Music", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Abrir no Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Downloaded", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Falha ao obter alguns álbuns", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Serviço usado para pesquisar por faixa ou nome do álbum", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "Qualidade de Áudio", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Removed {count} missing files from library", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "View size and clear cached data", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Selecione Álbuns...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Pesquisar metadados de músicas, gerenciar extensões e organizar sua biblioteca.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "Correspondência de Faixa Personalizada", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "Funcionalidades", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Lossy 320kbps Format", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Downloading music is simple and fast. Here's how it works.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Delete \"{playlistName}\" and all tracks inside it?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "\"{trackName}\" adicionada à fila", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Sempre que abrir o aplicativo", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "Lista", + "updateDownloadInstall": "Baixar e Instalar", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Título (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "Qualidade de Áudio", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Converted to {format} successfully", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "Tem certeza que deseja remover {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "Atualizar", + "libraryFilterMetadataMissingAny": "Missing any metadata", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Add to Playlist", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "Permissões", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "Anúncios e atualizações", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" }, - "homeSearchHintProvider": "Search with {providerName}...", "@homeSearchHintProvider": { "description": "Placeholder for the main search field when a provider is selected", "placeholders": { @@ -4775,219 +2586,867 @@ } } }, - "homeImportCsvTooltip": "Import CSV", - "@homeImportCsvTooltip": { - "description": "Tooltip for importing a CSV file into Home search" + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" }, - "homeChangeSearchProviderTooltip": "Change search provider", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" + "collectionAlreadyInPlaylist": "Already in \"{playlistName}\"", + "discographyAlbumsOnlySubtitle": "{count} faixas de {albumCount} álbuns", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" + "setupNotificationEnable": "Habilitar Notificações", + "@setupNotificationEnable": { + "description": "Button to enable notifications" }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "Tema, cores, exibição", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "Reproduzir", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Scans your existing music collection to detect duplicates when downloading. Supports FLAC, M4A, MP3, Opus, and OGG formats. Metadata is read from file tags when available.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "Perguntar qualidade antes de baixar", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "Faixa de instrumentais", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Skip Duplicate Downloads", + "libraryFilterSortOldest": "Oldest", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "Ignorar por enquanto", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "URL do novo repositório", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "Reproduzir", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "Canal de Atualização", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "Save failed downloads to TXT file automatically", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Artista (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Abrir no Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "Selecione o iCloud ou outro local", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} ouvintes mensais", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Cached Data", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" }, "tutorialDownloadCompletedSemantics": "Download completed", "@tutorialDownloadCompletedSemantics": { "description": "Accessibility label for completed download state in tutorial demo" }, - "tutorialDownloadInProgressSemantics": "Download in progress", - "@tutorialDownloadInProgressSemantics": { - "description": "Accessibility label for active download state in tutorial demo" + "@logNoLogsYet": { + "description": "Empty state title" }, - "tutorialStartDownloadSemantics": "Start download", - "@tutorialStartDownloadSemantics": { - "description": "Accessibility label for idle download button in tutorial demo" + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } }, - "optionsEmbedMetadata": "Embed Metadata", - "@optionsEmbedMetadata": { - "description": "Settings toggle title for writing metadata into downloaded files" + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" }, - "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", - "@optionsEmbedMetadataSubtitleOn": { - "description": "Subtitle when metadata embedding is enabled" + "setupAppDocumentsFolder": "Pasta Documentos do App", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" }, - "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", - "@optionsEmbedMetadataSubtitleOff": { - "description": "Subtitle when metadata embedding is disabled" + "storeLoadError": "Falha ao carregar o repositório", + "settingsDownloadNetwork": "Download Network", + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Valor único combinado", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Artista (Z-A)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Serviço, qualidade, alternativa", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Last scanned: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "Limitação do iOS: Pastas vazias não podem ser selecionadas. Escolha uma pasta com pelo menos um arquivo.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "Novo", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "Gerenciar provedores de download", + "sortAlphaAsc": "A-Z", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Select All", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "Álbuns/Nome do Artista/[2005] Nome do Álbum/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Buscando faixas...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "Erro", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "Data de lançamento", + "discographySelectedCount": "{count} selecionado(s)", + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "updateStartingDownload": "Iniciando download...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "Número do disco", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "Usando a extensão: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Automatic metadata, cover art, and lyrics embedding", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "No orphaned entries found", + "discographySkippedDownloaded": "{added} adicionada(s), {skipped} já baixada(s)", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Error: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "previewStop": "Parar prévia", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "discographyAlbumsOnly": "Somente Álbuns", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Escolha quais extensões de download instaladas podem ser usadas como alternativa", + "aboutSocial": "Social", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "Ainda não há provedores de pesquisa", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "Instalado", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "Etiquetas ReplayGain adicionadas", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Show when searching for existing tracks", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "Baixar", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "Falha ao carregar a letra", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "Permissão negada. Por favor, conceda todas as permissões para continuar.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "WiFi Only", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} atualizada.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Instale uma extensão para continuar.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Downloading Music", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Alternativa, metadados, letras, capa do álbum", + "navLibrary": "Biblioteca", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "Nenhuma extensão disponível", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "A prévia pode conter erros ou recursos incompletos", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Library scan complete", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "Instale arquivos .spotiflac-ext para adicionar novos provedores", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "Agradecimentos Especiais", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "Instalar", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "Álbuns", + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Ativar etiquetas formatadas para preenchimento de faixas e padrões de data", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "Entradas ({count} filtradas)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Adicionar repositório", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "Reportar um problema", + "snackbarFailedToWriteStorage": "Failed to write back to storage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "allFilesAccessDisabledMessage": "All Files Access disabled. The app will use limited storage access.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "Você tem alterações não salvas. Deseja descartá-las?", + "setupChooseFromFiles": "Escolher dos Arquivos", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "Extensão instalada com sucesso", + "progressReadingCsv": "Lendo CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "Pesquisa padrão", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Escreva um valor ARTIST único como \"Artista A, Artista B\" para máxima compatibilidade com o ‘player’", + "downloadLossy320": "Lossy 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Queue FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Provider Options", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "No download history", + "optionsTitle": "Opções", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "Limpar", + "@dialogClear": { + "description": "Dialog button - clear items" }, "downloadFilenameHintExample": "{artist} - {title}", "@downloadFilenameHintExample": { "description": "Example placeholder for the download filename format input" }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" + "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" }, - "trackCoverReplace": "Replace Cover", - "@trackCoverReplace": { - "description": "Button label for replacing selected cover art" + "trackConvertConfirmTitle": "Confirm Conversion", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" }, - "trackCoverPick": "Pick Cover", - "@trackCoverPick": { - "description": "Button label for selecting cover art" + "collectionPlaylistDeleted": "Playlist deleted", + "metadataMayRateLimit": "Pode ter limites de taxa", + "@metadataMayRateLimit": { + "description": "Spotify provider description" }, - "trackCoverClearSelected": "Clear selected cover", - "@trackCoverClearSelected": { - "description": "Tooltip for clearing the newly selected cover art" + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" }, - "trackCoverCurrent": "Current cover", - "@trackCoverCurrent": { - "description": "Label for the currently embedded cover preview" + "tooltipLoveAll": "Love All", + "downloadDirectory": "Pasta de Download", + "@downloadDirectory": { + "description": "Setting - download folder" }, - "trackCoverSelected": "Selected cover", - "@trackCoverSelected": { - "description": "Label for the newly selected cover preview" + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" }, - "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" + "libraryFolder": "Library Folder", + "optionsMaxQualityCoverSubtitle": "Baixar capa do álbum com a mais alta resolução", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "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", + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", "placeholders": { - "hex": { - "type": "String" + "count": { + "type": "int" } } }, - "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" + "cacheExploreFeedDesc": "Explore tab content (new releases, trending). Will refresh on next visit.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" }, "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", "@a11yOpenTrackByArtist": { @@ -5001,18 +3460,229 @@ } } }, - "a11yOpenItem": "Open {itemType} {name}", - "@a11yOpenItem": { - "description": "Accessibility label for opening a generic item", + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Create a playlist to start categorizing tracks", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Album (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Size", + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "Entradas ({count})", + "@logEntries": { + "description": "Total log count", "placeholders": { - "itemType": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { "type": "String" }, - "name": { + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "Por Album", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "Aplicativo", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Desativado: sem etiquetas de normalização de intensidade", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "storeFilterIntegration": "Integração", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "Baixado", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "No iOS, downloads são salvos na pasta Documentos do aplicativo. Você pode acessá-los através do app Arquivos.", + "optionsArtistTagModeDescription": "Escolha como múltiplos artistas são escritos em etiquetas incorporadas.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "Músicas", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "Configurações de Arquivo", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "dialogDelete": "Apagar", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "All your downloaded music is organized in the Library tab.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "Credenciais salvas", + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Lossless conversion — no quality loss", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Rename playlist", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Selecione o idioma de sua preferência para o aplicativo. Você pode alterar isso depois em Configurações.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Artista", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Long-press + on any track to add it here", + "artistCompilations": "Compilações", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Library Scan", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", "@a11yOpenItemCount": { "description": "Accessibility label for opening a grouped item with count", @@ -5025,7 +3695,1332 @@ } } }, - "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "trackFileInfo": "Informações do Arquivo", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "audioAnalysisNoClipping": "No clipping", + "tutorialSettingsDesc": "Personalize the app in Settings to match your preferences.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "Arquivo .lrc separado para reprodutores como o Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Usar a pesquisa padrão de metadados", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "Carregar Letras", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Repositório de extensões", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Library cleared", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Local Library", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "Todas as faixas selecionadas", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Clear Library", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "Limpar Tudo", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "por {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Extend the app's capabilities with community extensions.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Genre", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "Por playlist", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Save Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "Usar Padrão", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Os registros aparecerão aqui enquanto você usa o aplicativo", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "cleanupOrphanedDownloadsSubtitle": "Remove history entries for files that no longer exist", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Download Progress", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "Letras", + "libraryAutoScan": "Auto Scan", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "Permissão de Armazenamento Necessária", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "Grade", + "trackConvertConverting": "Converting audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "Escrever uma etiqueta de artista por artista para FLAC e Opus; MP3 e M4A permanecem combinados.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Escolha qual aba será aberta primeiro para novos resultados de pesquisa.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "There are two easy ways to find music you want to download.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unknown Album", + "trackCoverCurrent": "Current cover", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "Concluído", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "URL do repositório", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress}% of {total} files", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Loved folder is empty", + "tutorialExtensionsTitle": "Extensions", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Duração (mais curta)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "Copiar caminho do arquivo", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "Falha ao atualizar a extensão", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Playlist name", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Escolher idioma", + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "A busca do Spotify será descontinuada em 3 de março de 2026 devido a mudanças na API do Spotify. Por favor, mude para o Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Tem certeza de que deseja remover esta extensão? Isso não pode ser desfeito.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "Local do Download", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "App cache directory", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "Pós-Processamento", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "Registros copiados para área de transferência", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "Usar Pasta Padrão?", + "tutorialSearchHint": "Paste or search...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "Arquivo .lrc externo", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "Pesquisar registros...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "ID do cliente", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "required", + "actionCancel": "Cancelar", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Formato do nome do arquivo para Singles", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Clearing cache will not remove downloaded music files.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Baixar faixas do Spotify em FLAC", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "Remover do dispositivo", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Cache overview", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "e.g. https://github.com/usuario/repositorio-extensao", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Storage Update Required", + "snackbarMetadataSaved": "Metadata saved successfully", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "Limpar Registros", + "extensionsCustomSearch": "Busca personalizada", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "actionRemoveCredentials": "Remover Credenciais", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "{count} faixas adicionadas à fila", + "downloadFilenameInsertTag": "Tap to insert tag:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Re-analyze", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Select a folder first", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Not configured", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "Pasta separada para cada playlist", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Convert Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "Ignorar por enquanto", + "sectionDownload": "Baixar", + "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Arraste para reordenar provedores de metadados. O aplicativo tentará provedores de cima para baixo ao procurar por faixas e buscar metadados.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "Extensões podem adicionar novos metadados e baixar provedores. Somente instale extensões a partir de fontes confiáveis.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Missing year", + "extensionsDownloadPriority": "Prioridade de Download", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Scan Library", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "Download falhou", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "Fundo preto puro", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Shows download progress for tracks", + "setupIcloudNotSupported": "O iCloud Drive não é compatível. Use a pasta Documentos do aplicativo.", + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, + "extensionsInstallPartialSuccess": "Instaladas {installed} de {attempted} extensões", + "@extensionsInstallPartialSuccess": { + "description": "Message when installing multiple extensions partially succeeds", + "placeholders": { + "installed": { + "type": "int", + "description": "Number of successfully installed extensions" + }, + "attempted": { + "type": "int", + "description": "Number of selected extensions" + } + } + }, + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "notifLibraryScanCancelled": "Library scan cancelled", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" + }, + "collectionPlaylistNameRequired": "Playlist name is required", + "libraryCleanupMissingFiles": "Cleanup Missing Files", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" + }, + "searchSortTitle": "Ordenar resultados", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" + }, + "audioAnalysisLufs": "LUFS", + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" + }, + "extensionsErrorLoading": "Erro ao carregar extensão", + "@actionPaste": { + "description": "Generic action - paste from clipboard" + }, + "aboutFeatureRequestSubtitle": "Sugira novos recursos para o aplicativo", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" + }, + "@aboutTitle": { + "description": "About page title" + }, + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" + }, + "@actionGo": { + "description": "Generic action button label" + }, + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "Atualizado", + "@extensionUpdated": { + "description": "Extension detail - last update" + }, + "downloadLossyFormat": "Lossy Format", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" + }, + "snackbarAlreadyInLibrary": "\"{trackName}\" já existe na sua biblioteca", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "libraryFilterQuality": "Quality", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" + }, + "editMetadataAutoFillDone": "Filled {count} {count, plural, =1{field} other{fields}} from online metadata", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@discographyDownload": { + "description": "Button - download artist discography" + }, + "trackReEnrichFieldsTitle": "Fields to update", + "aboutFeatureRequest": "Solicitação de recurso", + "downloadSingleFilenameFormatDescription": "Padrão de nome de arquivo para Singles e EPs. Utiliza as mesmas tags do formato de álbum.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" + }, + "queueClearAllMessage": "Você tem certeza que deseja limpar todos os downloads?", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "homeImportCsvTooltip": "Import CSV", + "@homeImportCsvTooltip": { + "description": "Tooltip for importing a CSV file into Home search" + }, + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" + }, + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" + }, + "dialogClearHistoryTitle": "Limpar Histórico", + "@logClearSearch": { + "description": "Tooltip for clearing the log search field" + }, + "dialogImport": "Importar", + "@dialogImport": { + "description": "Dialog button - import data" + }, + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" + }, + "notifLibraryScanErrors": "{count} errors", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" + }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "Desinstalar Extensão?", + "recentTypePlaylist": "Playlist", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "Isto irá excluir o arquivo baixado permanentemente e removê-lo do seu histórico.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "Sistema", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "Artista / Álbum + Singles", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "O criador original do projeto HiFi. Uma base para integração de fontes sem perdas.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "Acesso ao Armazenamento Necessário", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "Apagar", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "Prioridade do provedor de metadados salva", + "setupPermissionRequired": "Permissão {permissionType} Necessária", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Degraded", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "Nenhuma letra encontrada neste arquivo", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Credenciais do Spotify", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Show All Downloads", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "setupNext": "Próximo", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Daily", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "trackConvertFailed": "Conversion failed", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "Desinstalar", + "safMigrationSuccess": "Download folder updated to SAF mode", + "optionsClearHistorySubtitle": "Remover todas as faixas baixadas do histórico", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "optionsUpdateChannelStable": "Somente versões estáveis", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "Listas de reprodução", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "settingsAppearance": "Aparência", + "logIssueRateLimitedLabel": "RATE LIMITED", + "@logIssueRateLimitedLabel": { + "description": "Diagnostic badge label when the service rate limits requests" + }, + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" + }, + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "Repositório atual:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" + }, + "@trackLyrics": { + "description": "Tab title - lyrics" + }, + "@backupImportButton": { + "description": "Button to pick a backup file to restore" + }, + "@setupFolderChoose": { + "description": "Button to choose folder" + }, + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@extensionsDisabled": { + "description": "Extension status - inactive" + }, + "@regionCountryAU": { + "description": "Country name for SongLink region picker" + }, + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" + }, + "libraryFilterApply": "Apply", + "@libraryFilterApply": { + "description": "Apply filters button" + }, + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "Letras", + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "Split into {count} tracks successfully", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Wishlist", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "Arraste para reordenar provedores de download. O aplicativo irá tentar provedores de cima para baixo ao baixar as faixas.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "downloadLossyOpus128": "Opus 128kbps", + "downloadUseAlbumArtistForFolders": "Use Album Artist for folders", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "Apagar {count} {count, plural, =1{faixa} other{faixas}}", + "updateLater": "Depois", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "Retomar", + "optionsDetailedLoggingOff": "Habilitar para relatórios de erros", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "storeSearch": "Pesquisar extensões...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Comunidade do Telegram", + "lyricsModeBoth": "Ambos", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Escanear automaticamente sua biblioteca em busca de novos arquivos", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Enable Local Library", + "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", + "trackConvertTargetFormat": "Target Format", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "Configurações", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "A solicitação expirou. Tente novamente mais tarde.", + "settingsExtensions": "Extensões", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "Cores Dinâmicas", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "credentialsTitle": "Credenciais do Spotify", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "Aparência", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 faixa} other{{count} faixas}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Clear search", + "trackSaveLyrics": "Save Lyrics (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Download Complete", + "snackbarAlreadyDownloaded": "\"{trackName}\" já foi baixada", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Pasta separada para cada álbum", + "storeRepoUrlHint": "https://github.com/usuario/repositorio", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Search for tracks", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Incorporar e salvar arquivo .lrc", + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "Letras", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "Estratégia: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "Dividir etiquetas para FLAC/Opus", + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Cancel download?", + "updateWhatsNew": "Novidades", + "updateNewVersionReady": "Uma nova versão está pronta", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Select track", + "libraryClearSubtitle": "Remove all scanned tracks", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Repo", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "Scan Settings", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "Duração", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Search tracks...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "In Library", + "pressBackAgainToExit": "Pressione voltar novamente para sair", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "Permissão de Notificações Concedida!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Support Development", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "Não lembrar", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Searching online...", + "discographyDownloadSelected": "Baixar Selecionados", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Escolha o provedor de pesquisa padrão para retornar após sair de uma extensão", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Temporary directory", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Show Duplicate Indicator", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "Procurar Atualizações", + "replayGainBatchAnalyzing": "Analisando ReplayGain...", + "recentTypeAlbum": "Álbum", + "providerExtension": "Extensão", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "No cover art source available", + "libraryFilterMetadata": "Metadata", + "albumFolderArtistYearAlbum": "Artista / [Ano] Álbum", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5040,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} by {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Estável", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Customize app theme and appearance", + "setupAppDocumentsFolderSubtitle": "Recomendado - acessível através do aplicativo Arquivos", + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -5052,6 +5062,320 @@ } } }, + "dialogRemove": "Remover", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "Tentar outros serviços se o download falhar", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} padrão(ões)", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "Este link não é suportado. Verifique se a URL está correta e se uma extensão compatível está instalada.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Modo de etiqueta de artista", + "libraryFilterMetadataComplete": "Complete metadata", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Analisar o volume e incorporar tags ReplayGain (EBU R128)", + "libraryScanning": "Scanning...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Refresh", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "Salve letras sincronizadas ao lado das suas faixas baixadas", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "extensionEnterValue": "Enter value", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Loved", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Adicionar repositório de extensões", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "Split CUE+FLAC into individual tracks", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "No playlists yet", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Remove entries for files that no longer exist", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "Por Artista", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "Tradutores", + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "editMetadataFieldTitle": "Title", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Failed to load artist", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "A qualidade real depende da faixa que estiver disponível no serviço", + "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Z-A", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "O SpotiFLAC precisa de permissão de armazenamento para salvar os seus arquivos de música baixados.", + "tutorialReadyMessage": "You're all set! Start downloading your favorite music now.", + "tutorialLibraryTip3": "Switch between list and grid view for better browsing", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "Claro", + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "Escolher Pasta de Download", + "dialogDownloadAllTitle": "Download All", + "providerPriorityInfo": "Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "Nenhum álbum disponível", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "cacheNoData": "No cached data", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "aboutTitle": "Sobre", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "Visualização do Histórico", + "audioAnalysisSampleRate": "Sample Rate", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "Track lookup cache", + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Refresh status", + "notifAllDownloadsComplete": "All Downloads Complete", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "Compartilhar", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{count} faixas de {albumCount} lançamentos", + "settingsDonateSubtitle": "Buy the developer a coffee", + "libraryFilterDownloaded": "Downloaded", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Scan stopped before completion.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "Copiar letra", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "Estrutura da Pasta de Álbum", + "downloadMusixmatchAuto": "Auto", + "actionDismiss": "Dismiss", + "storeFilterAll": "Tudo", + "extensionsDisabled": "Desabilitado", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Your Library", + "optionsCheckUpdatesSubtitle": "Notificar quando uma nova versão estiver disponível", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Playlist", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "{count} meses atrás", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Legado", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Playlist renamed", + "collectionCreatePlaylist": "Create playlist", + "homeGoToAlbum": "Go to Album", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Pasta separada para cada artista", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "Versão {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Primary artist only for folders", + "tutorialExtensionsTip2": "Add new download providers or search sources", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "Welcome to SpotiFLAC!", "a11ySelectAlbum": "Select album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -5061,89 +5385,679 @@ } } }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "Código-fonte do app móvel", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Source", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Storage Access", + "logFilterBySeverity": "Filtrar registros por gravidade", + "libraryFolderNotExist": "Selected folder does not exist", + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "albumFolderArtistAlbum": "Artista / Álbum", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "Permission was denied. Please enable 'All files access' manually in system settings.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Empty only", + "settingsLocalLibrarySubtitle": "Scan music & detect duplicates", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "Usar Provedores de Extensão", + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Missing genre", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "setupFolderDescription": "Selecione uma pasta onde as suas músicas baixadas serão salvas.", + "extensionDetailsTags": "Tags", + "unknownArtist": "Unknown Artist", + "trackFetchOnlineLyrics": "Buscar online", + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, + "downloadAllCount": "Baixar Todos ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "Disco {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "Salvar Credenciais", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "extensionsFallbackTitle": "Extensões alternativas", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Apagar Selecionados", + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Insira a URL de um repositório do GitHub que contenha um arquivo registry.json para navegar e instalar extensões.", + "appearanceThemeDark": "Escuro", + "downloadedAlbumTapToSelect": "Toque nas faixas para selecionar", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "updateDownloading": "Baixando...", + "trackLyricsSource": "Fonte: {source}", + "logFilterLevel": "Nível", + "logNoLogsYet": "Ainda não há registros", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "This will remove all scanned tracks from your library. Your actual music files will not be deleted.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Auto", + "searchEmptyResultSubtitle": "Tente outra palavra-chave", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "Hoje", + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Bit Depth", "editMetadataFieldTrackTotal": "Track Total", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "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" - }, - "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" - }, - "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", + "replayGainBatchConfirmMessage": "Analisar o volume e gravar etiquetas ReplayGain em {count} faixa(s)?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "optionsSpotifyWarning": "O Spotify requer as suas próprias credenciais de API. Consiga gratuitamente em developer.spotify.com", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "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": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Edit Metadata", + "discographyDownloadAll": "Baixar Tudo", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "Álbuns/Nome do Artista/Nome do Álbum/", + "extensionHealthServiceUnknown": "Service status unknown", + "navHome": "Início", + "queueDownloadStarting": "Starting...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "FLAC de alta resolução", + "selectionSelected": "{count} selecionado(s)", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Baixar Discografia", + "editMetadataFieldCopyright": "Copyright", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Sort", + "cacheLibraryCoverDesc": "Cover art extracted from local music files. Will re-extract on next scan.", + "dialogRemoveExtension": "Remover Extensão", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "Selecionar Tudo", + "settingsDownloadNetworkSubtitle": "Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.", + "downloadFolderOrganization": "Organização de Pastas", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "Todas as faixas selecionadas", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "Ver logs do app para depuração", + "albumFolderYearAlbumSubtitle": "Álbuns/[2005] Nome do Álbum/", + "cancelDownloadKeep": "Keep", + "optionsDetailedLoggingOn": "Registros detalhados estão sendo gravados", + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Update Failed", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Local", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "Serviço", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "notifUpdateFailedBody": "Could not download update. Try again later.", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "artistPopular": "Populares", + "extensionRemoveButton": "Remover Extensão", + "allFilesAccessEnabledSubtitle": "Can write to any folder", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Provedor de Pesquisa", + "tutorialWelcomeDesc": "Let's learn how to download your favorite music in lossless quality. This quick tutorial will show you the basics.", + "selectionBatchConvertConfirmTitle": "Batch Convert", + "extensionMetadataProvider": "Provedor de Metadados", + "queueDownloadedFileMissing": "Downloaded file missing", + "logClearLogs": "Limpar registros", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Download music from Spotify, Deezer, or paste any supported URL", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "Artista", + "extensionCustomUrlHandling": "Custom URL Handling", + "appearanceDynamicColorSubtitle": "Usar cores do seu papel de parede", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "Padrão", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choose how album folders are structured", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "App Folder (Recommended)", + "collectionPlaylistCreated": "Playlist created", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Save album art as .jpg file", + "actionPaste": "Paste", + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "downloadNativeWorker": "Native download worker", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "Refresh stats", + "collectionPlaylistChangeCover": "Change cover image", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "Limpar Histórico de Download", + "trackGenre": "Género", + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "libraryFilterMetadataMissingArtist": "Missing artist", + "extensionsNoCustomSearch": "Nenhuma extensão com pesquisa personalizada", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "Provedor de Download", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "Modo de Letras", + "aboutReportIssueSubtitle": "Reporte qualquer problema que encontrar", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "Escuro AMOLED", + "logIssueNetworkErrorDescription": "Connection issues detected", + "folderOrganizationByArtistAlbumSubtitle": "Pastas aninhadas para artista e álbum", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "Conceder Permissão", + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "{count} dias atrás", + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "Wishlist is empty", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Service degraded", + "optionsUseExtensionProvidersOn": "Provedores de extensão estão habilitados", + "selectionConvertNoConvertible": "No convertible tracks selected", + "snackbarCredentialsCleared": "Credenciais limpas", + "setupStorageGranted": "Permissão de Armazenamento Concedida!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} excluded", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Change folder", + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "Clear Library", + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "storeCategoryMetadata": "Metadata", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "tutorialLibraryTip1": "View download progress and queue in the Library tab", + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "Local", + "tutorialDownloadInProgressSemantics": "Download in progress", + "searchSortDurationLong": "Duração (mais longa)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "About Local Library", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Audio file not found for this CUE sheet", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "appearanceSelectAccentColor": "Select accent color {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "Reanalisar ReplayGain", + "downloadSeparateSinglesFolder": "Pasta de Singles Separada", + "trackAlbumArtist": "Artista do álbum", + "qualityFlacLossless": "FLAC sem perdas", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Customize Your Experience", + "extensionActionFailed": "Action failed", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "notifChannelLibraryScanDesc": "Shows local library scan progress", + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" removed", + "setupStorageAccessMessageAndroid11": "O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.", + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "optionsPrimaryProvider": "Provedor Primário", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", + "homeAlbumInfoUnavailable": "Album info not available", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unknown", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "Auto-export failed downloads", + "logFilterSection": "Filtro", + "dialogDiscardChanges": "Descartar Alterações?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Tracks", + "searchAlbums": "Álbuns", + "trackConvertFormat": "Convert Format", + "metadataProviderPriorityTitle": "Prioridade de Metadados", + "libraryFolderHint": "Tap to select folder", + "downloadedAlbumDeleteMessage": "Excluir {count} {count, plural, =1{faixa} other{faixas}} deste álbum?\n\nIsso também excluirá os arquivos do armazenamento.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "Álbum", + "updateAvailable": "Atualização Disponível", + "optionsEmbedLyrics": "Incorporar Letras", + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Mostrar aba de repositório na navegação", + "settingsTitle": "Configurações", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Explore feed cache", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} selecionado(s)", + "downloadAskQualitySubtitle": "Mostrar seletor de qualidade para cada download", + "filenameShowAdvancedTags": "Exibir etiquetas avançadas", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "Library cover cache", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "snackbarFillAllFields": "Por favor, preencha todos os campos", + "actionCreate": "Create", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} baixado(s)", + "snackbarLoadingCueSheet": "Loading CUE sheet...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "Criador do SpotiFLAC original", + "a11yTrackByArtist": "{trackName} by {artistName}", + "audioAnalysisDynamicRange": "Dynamic Range", + "homeChangeSearchProviderTooltip": "Change search provider", + "loadingSharedLink": "Carregando link compartilhado...", + "lyricsModeEmbedSubtitle": "Letra armazenada nos metadados da FLAC", + "setupNotificationBackgroundDescription": "Seja notificado sobre o progresso e conclusão do download. Isso ajuda você a acompanhar os downloads quando o app estiver em segundo plano.", + "snackbarViewQueue": "Ver Fila", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Escolher álbuns ou singles específicos", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "Falha ao carregar o conteúdo deste link. Por favor, tente novamente.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "Salvar", + "trackReEnrichSearching": "Searching metadata online...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "downloadFilenameFormat": "Formato do Nome do Arquivo", + "cueSplitTitle": "Split CUE Sheet", + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "Não é possível carregar {item}: faltando a fonte da extensão", + "albumFolderAlbumOnlySubtitle": "Albums/Nome do Álbum/", + "errorLoadPlaylist": "Failed to load playlist", + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "Descartar", + "storageModeSaf": "Custom Folder (SAF)", + "errorRateLimited": "Tráfico Limitado (Rate Limited)", + "downloadSelectQuality": "Selecionar Qualidade", + "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", + "collectionFoldersTitle": "My folders", + "credentialsClientSecret": "Segredo do cliente", + "progressFetchingMetadata": "Buscando metadados... {current}/{total}", + "settingsDownloadNetworkAny": "WiFi + Mobile Data", + "audioAnalysisDuration": "Duration", + "audioAnalysisAnalyzing": "Analyzing audio...", + "credentialsDescription": "Digite a sua Client ID e Secret para usar a sua própria cota de aplicativo do Spotify.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Reproduzir prévia", + "setupPermissionRequiredMessage": "A permissão {permissionType} é necessária para a melhor experiência. Você pode alterar isso mais tarde em Configurações.", + "aboutVersion": "Versão", + "qualityHiResFlacSubtitle": "24-bit / até 96kHz", + "audioAnalysisSamples": "Samples", + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "Direitos Autorais", + "libraryForceFullScanSubtitle": "Rescan all files, ignoring cache", + "trackCopiedToClipboard": "Copiado para a área de transferência", + "optionsEmbedMetadata": "Embed Metadata", "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5159,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Integration", + "storeClearFilters": "Limpar filtros", + "navSettings": "Configurações", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "Aplicativo", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "Artista/Álbum/ e Artista/Singles/", + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "Nome da faixa", + "homeRecent": "Recentes", + "recentEmpty": "No recent items yet", + "cacheClearAll": "Clear all cache", + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "editMetadataFieldAlbum": "Album", + "settingsAbout": "Sobre", + "libraryFilterTitle": "Filters", + "cleanupOrphanedDownloadsResult": "Removed {count} orphaned entries from history", + "extensionHooksAvailable": "{count} gancho(s) disponíveis", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "Letras incorporadas com sucesso", + "optionsUpdateChannelPreview": "Obter versões de prévia", + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "libraryForceFullScan": "Force Full Scan", + "snackbarProviderPrioritySaved": "Prioridade de provedor salva", + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Service Status", + "dateWeeksAgo": "{count} semanas atrás", + "historyFilterSingles": "Singles", + "tutorialSettingsTip2": "Set default audio quality and format preferences", + "trackLyricsSaved": "Lyrics saved to {fileName}", + "cacheClearAllConfirmTitle": "Clear all cache?", + "noTracksFoundForAlbum": "No tracks found for this album", + "sectionLanguage": "Idioma", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "Seleccionar Pasta", + "dateYesterday": "Ontem", + "collectionAddToPlaylist": "Add to playlist", + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "libraryScanCancelled": "Scan cancelled", + "appearanceLanguage": "Idioma do aplicativo", + "extensionsTitle": "Extensões", + "dialogImportPlaylistMessage": "{count} Faixas encontradas em CSV. Adicioná-las à lista de downloads?", + "permissionNotification": "Notification", + "notifUpdateReady": "Update Ready", + "lyricsModeDescription": "Escolha como as letras são salvas com os seus downloads", + "downloadFrom": "Baixar De", + "collectionWishlistEmptySubtitle": "Tap + on tracks to save what you want to download later", + "cueSplitSplitting": "Splitting CUE sheet... ({current}/{total})", + "optionsMaxQualityCover": "Capa de Qualidade Máxima", + "trackOptionAddToWishlist": "Add to Wishlist", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "extensionsNoDownloadProvider": "Nenhuma extensão com provedor de download", + "libraryFilterSortGenreAsc": "Genre (A-Z)", + "trackReplayGainFailed": "Falha ao adicionar etiquetas ReplayGain", + "collectionPlaylistRemoveCover": "Remove cover image", + "storeEmptyNoResults": "Nenhuma extensão encontrada", + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "editMetadataFieldComment": "Comment", + "settingsMetadata": "Metadata", + "settingsCache": "Storage & Cache", + "providerPriorityFallbackExtensionsHint": "Apenas extensões ativadas com capacidade de provedor de download são listadas aqui.", + "libraryFilterAll": "All", + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "extensionsProviderPrioritySection": "Prioridade de Provedor", + "storeChangeRepoTooltip": "Mudar repositório", + "snackbarFailedToInstall": "Falha ao instalar a extensão", + "libraryScanSubtitle": "Scan for audio files", + "snackbarExtensionInstalled": "{extensionName} instalada.", + "setupOpenSettings": "Abrir Configurações", + "extensionsInstalledSection": "Extensões Instaladas", + "aboutLinks": "Links", + "trackCoverClearSelected": "Clear selected cover", + "libraryAutoScanWeekly": "Weekly", + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "optionsDefaultSearchTab": "Aba de pesquisa padrão", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "Organizar arquivos baixados em pastas", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "Incorporar no arquivo", + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Lossy", + "actionPause": "Pausar", + "csvImportTracks": "{count} faixas do CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "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...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "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": { + "providerName": { "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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": {} - } - } + "sectionDebug": "Depuração", + "editMetadataFieldDate": "Date", + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "sectionPerformance": "Desempenho", + "extensionsSearchWith": "Search with {providerName}", + "extensionsDownloadPrioritySubtitle": "Definir ordem do serviço de download", + "cacheAppDirectoryDesc": "HTTP responses, WebView data, and other temporary app data.", + "sectionData": "Dados", + "notifFinalizingTrack": "Finalizing {trackName}", + "snackbarFileNotFound": "Arquivo não encontrado", + "extensionQualityOptions": "Opções de Qualidade", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "Repositório de extensões", + "extensionsSearchProviderDescription": "Escolha qual serviço utilizar para pesquisar faixas", + "albumFolderAlbumOnly": "Somente Álbum", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "Split into Tracks" } diff --git a/lib/l10n/arb/app_ru.arb b/lib/l10n/arb/app_ru.arb index f40f8460..fd9bc38b 100644 --- a/lib/l10n/arb/app_ru.arb +++ b/lib/l10n/arb/app_ru.arb @@ -1,2455 +1,33 @@ { "@@locale": "ru", "@@last_modified": "2026-04-28", - "appName": "Spotify", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Сканировать и отслеживать вашу существующую музыку", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Главная", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Библиотека", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Настройки", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Репозиторий", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Главная", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Вставьте URL или ищите по названию", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "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" - }, - "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" - }, - "settingsOptions": "Опции", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Расширения", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "О программе", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Скачать", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Показывать выбор качества для каждого скачивания", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Формат имени файла", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadSingleFilenameFormat": "Формат имени файла", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Формат имени файла для синглов и EP. Используются те же теги, что и для альбомов.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "downloadFolderOrganization": "Организация папок", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Внешний вид", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "Системная", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Светлая", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Тёмная", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Динамический цвет", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Использовать цвета из ваших обоев", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "Отображение истории", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Список", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Сетка", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Опции", - "@optionsTitle": { - "description": "Options settings page title" - }, - "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": "Choose which tab opens first for new search results.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Альбомы", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Треки", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Автоматический переход", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Попробовать другие сервисы при сбое загрузки", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Использовать провайдера расширений", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Вписать текст песни", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Сохранять синхронизированный текст песни рядом с загруженным треком", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "Максимальное качество обложки", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Скачивать обложку в макс. разрешении", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Artist Tag Mode", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Single joined value", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "optionsExtensionStore": "Репозиторий расширения", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store 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" - }, - "optionsSpotifyCredentials": "Учётные данные Spotify", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Необходимо - нажмите для настройки", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify требует ваши собственные учетные данные API. Получите их бесплатно на сайте developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Поиск Spotify устареет 3 марта 2026 года из-за изменений Spotify API. Пожалуйста, перейдите на Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Расширения", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Выключено", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Версия {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "от {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Удалить", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Репозиторий расширения", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Поиск расширений...", - "@storeSearch": { - "description": "Store 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": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Сообщить о проблеме", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Сообщите о возникших проблемах", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Предложить новую функцию", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Предложить новые функции для приложения", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Telegram канал", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Объявления и обновления", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Сообщество в Telegram", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Чат с другими пользователями", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Соцсети", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "Приложение", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Версия", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Создатель I Don't Have Spotify (IDHS). Резервный резолвер ссылки", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Альбомы", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Синглы и EP", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Сборники", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Популярное", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} слушателей в месяц", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "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": "Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Открыть настройки", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "Требуется разрешение {permissionType}", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "Для оптимальной работы требуется разрешение {permissionType}. Вы можете изменить это позже в настройках.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Использовать папку по умолчанию?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Папка не выбрана. Хотите использовать папку Музыка по умолчанию?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "По умолчанию", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Папка для скачивания", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "Папка Документы приложения", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Рекомендуется - доступ через Файлы", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Выбрать из файлов", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Выберите iCloud или другое местоположение", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Скачать Spotify треки во FLAC", - "@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" - }, - "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" - }, - "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, one{трек} few{трека} many{треков} other{треков}} из истории?\n\nЭто также удалит файлы из хранилища.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Импорт плейлиста", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "Найдено {count} треков в CSV. Добавить их в очередь загрузки?", - "csvImportTracks": "{count} трек(-ов) из CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@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" - }, - "snackbarCredentialsSaved": "Учётные данные сохранены", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Учётные данные очищены", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "Удалено {count} {count, plural, one{трек} few{трека} many{треков} other{треков}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Невозможно открыть файл: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Пожалуйста, заполните все поля", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Просмотр очереди", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "{platform} ссылка скопирована в буфер обмена", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "Файл не найден", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Пожалуйста, выберите .spotiflac-ext-файл", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Приоритет провайдера сохранён", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Приоритет провайдера метаданных сохранён", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} установлено.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "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" - }, - "errorUrlNotRecognized": "Ссылка не распознана", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "Эта ссылка не поддерживается. Убедитесь, что URL-адрес указан правильно и установлено совместимое расширение.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Не удалось загрузить контент по этой ссылке. Пожалуйста, попробуйте еще раз.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "Невозможно загрузить {item}: отсутствует источник расширения", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Пауза", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Возобновить", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Отмена", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Выбрать все", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Снять выделение", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Удалить учётные данные", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Сохранить учётные данные", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} выбрано", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Все треки выбраны", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Выберите треки для удаления", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Получение метаданных... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "Чтение CSV...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Песни", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Исполнители", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Альбомы", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Плейлисты", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Упорядочить результаты", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "По умолчанию", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Название (А-Я)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Название (Я-А)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Исполнитель (А-Я)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Исполнитель (Я-А)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Продолжительность (наименьшая)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Продолжительность (наибольшая)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Дата релиза (старейшая)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Дата релиза (новейшая)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "Воспроизвести", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Формат имени файла", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Показать расширенные теги", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Включить форматированные теги для отслеживания заполнения и шаблонов дат", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "Без организации", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "По плейлисту", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Отдельная папка для каждого плейлиста", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "По исполнителю", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "По альбому", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Исполнитель/Альбом", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Сортировать скачанные файлы по папкам", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Все файлы в папке загрузок", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Отдельная папка для каждого исполнителя", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Отдельная папка для каждого альбома", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Вложенные папки для исполнителей и альбомов", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Доступно обновление", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Позже", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Загрузка началась...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Не удалось скачать", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Сбой загрузки обновления", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Доступна новая версия", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "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" - }, - "providerPriorityFallbackExtensionsTitle": "Резервное расширение", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Расширение", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Приоритет метаданных", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "Без ограничений по скорости", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Есть ограничения по скорости", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "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" + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "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" - } - } - }, - "credentialsTitle": "Учётные данные Spotify", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Введите свой Client ID и Secret, чтобы использовать собственные квоты в Spotify.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Client ID", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Вставьте Client ID", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Секретный код клиента", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Вставьте Client Secret", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "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": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "Управление провайдерами скачивания", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "Просмотреть логи для отладки", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Загрузка общедоступной ссылки...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Нажмите «Назад» ещё раз, чтобы выйти", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Скачать все ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, one{{count} трек} few{{count} трека} many{{count} треков} other{{count} треков}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Скопировать путь к файлу", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Удалить с устройства", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Загрузить текст песни", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Метаданные", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Информация о файле", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Текст песни", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "Файл не найден", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Открыть в Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Открыть в Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Название", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Исполнитель", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Исполнитель альбома", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Альбом", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Номер трека", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Номер диска", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Продолжительность", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Качество записи", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "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" - }, - "trackLyricsNotAvailable": "Текст песни недоступен для этого трека", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsNotInFile": "No lyrics found in this file", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "Fetch from Online", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "trackLyricsTimeout": "Время ожидания запроса истекло. Повторите попытку позже.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Не удалось загрузить текст песни", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Вписать текст песни", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Текст успешно добавлен", - "@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": "Store filter - all extensions" - }, - "storeFilterMetadata": "Метаданные", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Скачивание", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Утилиты", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Тексты песен", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Интеграция", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Очистить фильтры", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Add Extension Repository", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" + "cacheCleanupUnused": "Очистка неиспользуемых данных", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, - "storeRepoUrlLabel": "Repository URL", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "например, https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below 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": "Extension Repository", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Текущий репозиторий:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "New Repository URL", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Failed to load repository", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "No extensions available", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "Расширения не найдены", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Автор", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "ID", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Ошибка", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Возможности", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Провайдер метаданных", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Провайдер скачивания", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Провайдер текстов", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "URL-обработчик", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Параметры качества", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Хуки постобработки", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Разрешения", - "@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" - }, - "extensionsDownloadPriority": "Приоритет скачивания", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Установка порядок сервисов скачивания", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Fallback Extensions", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "Нет расширений с провайдером загрузки", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Приоритет метаданных", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Установка порядка поиска и источника метаданных", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Нет расширений с провайдером метаданных", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Провайдер поиска", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Нет расширений с пользовательским поиском", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Выберите, какой сервис использовать для поиска треков", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Пользовательский поиск", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Ошибка загрузки расширения", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Lossless", - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "qualityFlacLosslessSubtitle": "16-бит / 44.1 кГц", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "qualityHiResFlac": "Hi-Res FLAC", - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "qualityHiResFlacSubtitle": "24-бит / до 96кГц", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Макс.", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-бит / до 192кГц", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "С потерями 320 кбит/с", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Формат с потерями", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Формат с потерями 320 кбит/с", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320 кбит/с", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Наилучшая совместимость, ~10 Мб на трек", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256 кбит/с", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128 кбит/с", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Минимальный размер, ~4 Мб на трек", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "Фактическое качество зависит от доступности треков в сервисе", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Спрашивать перед скачиванием", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Папка для скачивания", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Отдельная папка для синглов", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Структура папок альбома", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Выберите структуру папок альбомов", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Использовать исполнителя альбома для папок", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Основной исполнитель только для папок", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Список исполнителей, чьи работы были удалены из названия папки (например, Джастин Бибер, Quavo → Джастин Бибер)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Полная строка исполнителя, используемая для имени папки", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Выбор качества", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Скачивать из", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "AMOLED", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Глубокий чёрный фон", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "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" - }, - "albumFolderArtistAlbum": "Исполнитель / Альбом", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Альбомы/Исполнитель/Название Альбома/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Исполнитель / [Год] Альбом", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Альбомы/Исполнитель/[2005] Название Альбома/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Только альбом", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Альбомы/Название Альбома/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Год] Альбом", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Альбомы/[2005] Название Альбома /", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Исполнитель / Альбом + Синглы", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Исполнитель/Альбом и Исполнитель/Сингл/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Удалить выбранные", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Удалить {count} {count, plural, one{трек} 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" - } - } - }, - "downloadedAlbumAllSelected": "Все треки выбраны", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Нажмите на треки для выбора", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Удалить {count} {count, plural, one{трек} 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": "Песня", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "recentTypePlaylist": "Плейлист", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "recentEmpty": "Нет недавних элементов", - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "recentShowAllDownloads": "Показать все загрузки", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" - }, - "recentPlaylistInfo": "Плейлист: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "discographyDownload": "Скачать дискографию", - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "discographyDownloadAll": "Скачать всё", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "discographyDownloadAllSubtitle": "{count} треков из {albumCount} релизов", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographyAlbumsOnly": "Только альбомы", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "discographyAlbumsOnlySubtitle": "{count} треков из {albumCount} альбомов", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySinglesOnly": "Только синглы и EP", - "@discographySinglesOnly": { - "description": "Option - download only singles" - }, - "discographySinglesOnlySubtitle": "{count} треков из {albumCount} синглов", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySelectAlbums": "Выбрать альбомы...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "discographySelectAlbumsSubtitle": "Выберите конкретные альбомы или синглы", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "Получение треков...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "Получение {current} из {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} выбрано", - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyDownloadSelected": "Скачать выбранное", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "discographyAddedToQueue": "Добавлено {count} треков в очередь", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} добавлено, {skipped} уже скачано", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "Нет доступных альбомов", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "Не удалось получить некоторые альбомы", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "Доступ к хранилищу", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "Доступ ко всем файлам", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Можно записать в любую папку", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Ограничено только папками медиа", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Включите, если вы сталкиваетесь с ошибками записи при сохранении в пользовательские папки. Android 13+ по умолчанию ограничивает доступ к определенным папкам.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "В разрешении отказано. Пожалуйста, включите функцию «Доступ ко всем файлам» в настройках системы.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "Доступ ко всем файлам отключен. Приложение будет использовать ограниченный доступ к хранилищу.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "Локальная библиотека", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Сканировать и обнаружить дубликаты", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "Хранилище и кэш", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "Просмотреть размер и очистить кэш", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "Локальная библиотека", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryScanSettings": "Настройки сканирования", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "Включить локальную библиотеку", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Сканировать и отслеживать вашу существующую музыку", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "Папка библиотеки", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "Нажмите, чтобы выбрать папку", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Показать индикатор дубликатов", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Показать при поиске существующих треков", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryAutoScan": "Автосканирование", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Automatically scan your library for new files", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Off", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Каждое открытие приложения", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Ежедневно", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Еженедельно", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Действия", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Сканировать библиотеку", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Сканировать аудио файлы", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Сначала выберите папку", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Очистка отсутствующих файлов", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Удалить записи для файлов, которых больше не существует", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Очистить библиотеку", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Удалить все сканированные треки", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Очистить библиотеку", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "Это удалит все сканированные треки из вашей библиотеки. Ваши фактические файлы не будут удалены.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "О локальной библиотеке", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.", - "@libraryAboutDescription": { - "description": "Description of local library feature" - }, - "libraryTracksUnit": "{count, plural, one{трек} few{трека} many{треков} other{треков}}", + "libraryTracksUnit": "{count, plural, =1{track} other{tracks}}", "@libraryTracksUnit": { "description": "Unit label for tracks count (without the number itself)", "placeholders": { @@ -2458,1023 +36,60 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{files}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "folderOrganizationNone": "Без организации", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScanned": "Последнее сканирование: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryLastScannedNever": "Никогда", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Сканирование...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanFinalizing": "Завершение работы с библиотекой...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryScanProgress": "{progress}% из {total} файлов", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "В библиотеке", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Удалено {count} {count, plural, one{отсутствующий файл} few{трека} many{отсутствующих файлов} other{отсутствующих файлов}} в библиотеке", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Библиотека очищена", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Требуется доступ к хранилищу", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC требуется доступ к хранилищу для сканирования вашей библиотеки музыки. Пожалуйста, предоставьте разрешение в настройках.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Выбранной папки не существует", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Скачанные", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Локальные", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "Все", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Скачанные", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Локальные", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Фильтры", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Сброс", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Применить", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Источник", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Качество", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24 бит)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16 бит)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "С потерями", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Формат", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterMetadata": "Метаданные", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Complete metadata", - "@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": "Сортировка", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Последние", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Старые", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterSortAlbumAsc": "Альбом (А-Я)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Альбом (Я-А)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Жанр (А-Я)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Жанр (Я-А)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "timeJustNow": "Только что", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, one{{count} минуту} few{{count} минуты} many{{count} минут} other{{count} минут}} назад", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, one{{count} час} few{{count} часа} many{{count} часов} other{{count} часов}} назад", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "Добро пожаловать в SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Давайте научимся скачивать свою любимую музыку в качестве без потерь. В этом кратком руководстве мы покажем вам основы.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Скачивайте музыку из Spotify, Deezer, или вставьте любой поддерживаемый URL", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Автоматическое встраивание метаданных, обложек и текстов песен", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Поиск музыки", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "Есть два простых способа найти музыку, которую вы хотите скачать.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Скачивание музыки", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Скачивание музыки просто и быстро. Вот как это работает.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Ваша библиотека", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "Вся скачанная музыка организована во вкладке Библиотека.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "Просмотр прогресса загрузки и очереди на вкладке Библиотека", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Нажмите на любой трек, чтобы воспроизвести его с помощью вашего музыкального плеера", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Переключение между списком и сеткой для лучшего просмотра", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Расширения", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Расширьте возможности приложения с расширениями от сообщества.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Добавить новых поставщиков загрузок или поиска", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Получайте тексты песен, улучшенные метаданные и другие возможности", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Настройте приложение под себя", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Персонализируйте приложение в Настройках, чтобы оно соответствовало вашим предпочтениям.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Изменить местоположение и организацию папок для скачивания", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Настройте качество и формата аудиофайла по умолчанию", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Настроить тему и внешний вид приложения", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "Всё готово! Начните загружать любимую музыку прямо сейчас.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Полное сканирование", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Пересканировать все файлы, игнорировать кэш", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Очистка отложенных скачиваний", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Удалить историю записи для файлов, которых больше не существует", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Удалено {count} утерянных записей из истории", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "Записей без описания не найдено", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Хранилище и кэш", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Просмотр кэша", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Очистка кэша не приведет к удалению загруженных музыкальных файлов.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Приблизительное использование кэша: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Кэшированные данные", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Обслуживание", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "Папка кэша приложения", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP-ответы, данные WebView и другие временные данные приложения.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Временная директория", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Временные файлы из загрузок и аудио конвертации.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "Кэш обложек", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "cacheCoverImageDesc": "Скачанный альбом и трек обложки. Будет заново скачан после просмотра.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "cacheLibraryCover": "Кэш обложек библиотеки", - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "cacheLibraryCoverDesc": "Обложка извлечена из локальных музыкальных файлов. Будет повторно извлечено при следующем сканировании.", - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "cacheExploreFeed": "Просмотреть кэш ленты", - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "cacheExploreFeedDesc": "Изучите содержимое вкладки (новые релизы, тренды). Они обновятся при следующем посещении.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "cacheTrackLookup": "Отслеживать кэш поиска", - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "cacheTrackLookupDesc": "Поиск ID трека в Spotify/Deezer. Очистка может замедлить следующие несколько поисков.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "cacheCleanupUnusedDesc": "Удалить записи из истории загрузок и библиотеки, которые остались без файлов.", - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "cacheNoData": "Нет кэшированных данных", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "cacheSizeWithFiles": "{size} в {count} файлах", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheEntries": "{count} записей", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheClearSuccess": "Очищено: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Очистить кэш?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "cacheClearConfirmMessage": "Это очистит кэш для {target}. Загруженные музыкальные файлы не будут удалены.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearAllConfirmTitle": "Очистить весь кэш?", - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "cacheClearAllConfirmMessage": "Это очистит все категории кэша на этой странице. Скачанные музыкальные файлы не будут удалены.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "cacheClearAll": "Очистить весь кэш", - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "cacheCleanupUnused": "Очистка неиспользуемых данных", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" - }, - "cacheCleanupUnusedSubtitle": "Удалить историю загрузок, оставшихся без просмотра, и отсутствующие записи в библиотеке", - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "cacheCleanupResult": "Очистка завершена: {downloadCount} потерянных загрузок, {libraryCount} отсутствующих записей в библиотеке", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "cacheRefreshStats": "Обновить статистику", - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "trackSaveCoverArt": "Сохранить обложку", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "trackSaveCoverArtSubtitle": "Сохранить обложку как файл .jpg", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Сохранить текст (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Получить и сохранить текст песни в формате .lrc", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Сохранение текста...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackReEnrich": "Обновить", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "trackReEnrichOnlineSubtitle": "Поиск в сети метаданных и встраивание в файл", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "trackReEnrichFieldsTitle": "Поля для обновления", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Обложка", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "trackReEnrichFieldLyrics": "Текст песни", - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "trackReEnrichFieldBasicTags": "Альбом, Исполнитель альбома", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" - }, - "trackReEnrichFieldTrackInfo": "Номер трека и диска", - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "trackReEnrichFieldReleaseInfo": "Дата и ISRC", - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "trackReEnrichFieldExtra": "Жанр, Название, Авторские права", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "trackReEnrichSelectAll": "Выбрать всё", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "trackEditMetadata": "Редактировать метаданные", - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "trackCoverSaved": "Обложка сохранена в {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackCoverNoSource": "Нет доступных источников обложки", - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "trackLyricsSaved": "Текст песни сохранен в {fileName}", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichProgress": "Обновление метаданных...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "trackReEnrichSearching": "Поиск метаданных в сети...", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "trackReEnrichSuccess": "Метаданные успешно обновлены", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "trackReEnrichFfmpegFailed": "Ошибка встраивания метаданных FFmpeg", - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "queueFlacAction": "Очередь FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", - "@queueFlacConfirmMessage": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueFlacFindingProgress": "Поиск совпадений FLAC... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "trackSaveFailed": "Ошибка: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "trackConvertFormat": "Переконвертировать формат", - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Конвертировать аудио", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Целевой формат", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Битрейт", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "trackConvertConfirmTitle": "Подтвердить конвертацию", "@trackConvertConfirmTitle": { "description": "Confirmation dialog title" }, - "trackConvertConfirmMessage": "Конвертировать из {sourceFormat} в {targetFormat} {bitrate}?\n\nОригинальный файл будет удален после конвертации.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "trackConvertConfirmMessageLossless": "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" - } - } - }, - "trackConvertLosslessHint": "Конвертация без потери качества", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "trackConvertConverting": "Конвертация аудио...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "trackConvertSuccess": "Успешно конвертировано в {format}", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "trackConvertFailed": "Ошибка конвертации", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "cueSplitTitle": "Разделить CUE Sheet", - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "cueSplitSubtitle": "Разделить файл CUE+FLAC на отдельные треки", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Альбом: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "cueSplitArtist": "Артист: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "cueSplitTrackCount": "{count} треков", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "Разделенный CUE-альбом", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "Разбить \"{album}\" на {count} отдельных FLAC-файлов?", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "Off", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "Разделение CUE sheet... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "Успешно разделено на {count} треков", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { "count": { "type": "int" } } }, - "cueSplitFailed": "Разделение CUE не удалось", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "cueSplitNoAudioFile": "Аудиофайл для этого CUE sheet не найден", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "cueSplitButton": "Разделить на Треки", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "actionCreate": "Создать", - "@actionCreate": { - "description": "Generic action button - create" - }, - "collectionFoldersTitle": "Мои папки", - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "collectionWishlist": "Список желаемого", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "collectionLoved": "Любимые", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "collectionPlaylists": "Плейлисты", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "collectionPlaylist": "Плейлист", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "collectionAddToPlaylist": "Добавить в плейлист", - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "collectionCreatePlaylist": "Создать плейлист", - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "collectionNoPlaylistsYet": "Плейлисты отсутствуют", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "collectionNoPlaylistsSubtitle": "Создайте плейлист, чтобы начать классифицировать треки", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, one{{count} трек} few{{count} трека} many{{count} треков} other{{count} треков}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedToPlaylist": "Добавлено в \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Уже в \"{playlistName}\"", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Плейлист создан", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "collectionPlaylistNameHint": "Название плейлиста", - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" - }, - "collectionPlaylistNameRequired": "Имя плейлиста обязательно", - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "collectionRenamePlaylist": "Переименовать плейлист", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "collectionDeletePlaylist": "Удалить плейлист", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "collectionDeletePlaylistMessage": "Удалить \"{playlistName}\" и все треки внутри него?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Плейлист удалён", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Плейлист переименован", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "collectionWishlistEmptyTitle": "Список желаний пуст", - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "collectionWishlistEmptySubtitle": "Нажмите + на треках, чтобы сохранить то, что вы хотите скачать позже", - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "collectionLovedEmptyTitle": "Папка Любимые пуста", - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "collectionLovedEmptySubtitle": "Нажмите \"любовь\" на треках, чтобы сохранить ваши избранные", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "collectionPlaylistEmptyTitle": "Плейлист пуст", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "collectionPlaylistEmptySubtitle": "Удерживайте + на любом треке, чтобы добавить его сюда", - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "collectionRemoveFromPlaylist": "Удалить из плейлиста", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "collectionRemoveFromFolder": "Убрать из папки", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "collectionRemoved": "\"{trackName}\" удалён", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" добавлен в Любимые", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromLoved": "\"{trackName}\" удалено из Любимых", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToWishlist": "\"{trackName}\" добавлен в список желаний", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromWishlist": "\"{trackName}\" удалён из списка желаний", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "trackOptionAddToLoved": "Добавить в Любимое", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "trackOptionRemoveFromLoved": "Исключить из Любимых", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "trackOptionAddToWishlist": "Добавить в список желаний", - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" - }, - "trackOptionRemoveFromWishlist": "Удалить из списка желаний", - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "collectionPlaylistChangeCover": "Изменить обложку", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" - }, - "collectionPlaylistRemoveCover": "Удалить обложку", - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, - "selectionShareCount": "Отправить {count} {count, plural, one{трек} few{трека} many{треков} other{треков}}", + "selectionShareCount": "Share {count} {count, plural, =1{track} other{tracks}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", "placeholders": { @@ -3483,42 +98,102 @@ } } }, - "selectionShareNoFiles": "Файлы, доступные для совместного доступа, не найдены", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "selectionConvertCount": "Конвертировать {count} {count, plural, one{трек} few{трека} many{треков} other{треков}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "Не выбраны конвертируемые треки", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Пакетная конвертация", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "selectionBatchConvertConfirmMessage": "Преобразовать {count} {count, plural, =1{track} other{tracks}} в {format} с {bitrate}?", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "Песня", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "Поделиться логами", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "Установить расширение", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "Нет установленных расширений", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "Разделение CUE не удалось", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Вставьте URL или ищите по названию", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "selectionBatchConvertConfirmMessageLossless": "Конвертировать {count} {count, plural, =1{track} other{tracks}} в {format}? (Без потери качества)\n\nОригинальные файлы будут удалены после конвертации.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", @@ -3531,18 +206,297 @@ } } }, - "selectionBatchConvertProgress": "Конвертация {current} из {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Дата релиза (старейшая)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "Создатель I Don't Have Spotify (IDHS). Резервный резолвер ссылки", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "Цвет", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Кэш обложек", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Разделенный CUE-альбом", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Очищено: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "Обложка", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "Пожалуйста, выберите .spotiflac-ext-файл", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Формат", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256 кбит/с", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{count} треков из {albumCount} синглов", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, + "optionsExtensionStore": "Репозиторий расширения", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "Только синглы и EP", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "Встраивание метаданных...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Обложка", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Получайте тексты песен, улучшенные метаданные и другие возможности", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Telegram канал", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "Хуки постобработки", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "Скачивание", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "Удалить выбранные", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "Конвертировано {success} треков {total} в {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3558,906 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} скачано", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "Hi-Res FLAC Макс.", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Папка названная в честь тега Альбома Артиста", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Папка названная в честь тега Трека Артиста", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "lyricsProvidersTitle": "Приоритет к поставщику текста песни", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" - }, - "lyricsProvidersDescription": "Включайте, выключайте, переупорядочивайте источники текстов. Поставщики связаны сверху вниз пока проводится поиск текста.", - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "lyricsProvidersEnabledSection": "Включено ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersDisabledSection": "Выключено ({count})", - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersAtLeastOne": "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": "У вас есть несохранённые изменения, которые будут потеряны.", - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "lyricsProviderLrclibDesc": "Open-source synced lyrics database", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (хорош для азиатских песен)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "lyricsProviderMusixmatchDesc": "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 Музыка (хорошо подходит для китайских песен, через прокси)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "lyricsProviderExtensionDesc": "Поставщик расширений", - "@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" - }, - "settingsDonateSubtitle": "Buy the developer a coffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "tooltipLoveAll": "Love All", - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" - }, - "tooltipAddToPlaylist": "Добавить в плейлист", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogDownloadAllTitle": "Скачать всё", - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "dialogDownloadAllMessage": "Download {count} tracks?", - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "homeSkipAlreadyDownloaded": "Skip already downloaded songs", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "homeGoToAlbum": "Перейти к альбому", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "homeAlbumInfoUnavailable": "Album info not available", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "snackbarLoadingCueSheet": "Загрузка CUE разметки...", - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "snackbarMetadataSaved": "Метаданные успешно сохранены", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "snackbarFailedToEmbedLyrics": "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}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", - "placeholders": { - "error": { + "type": { "type": "String" } } }, - "snackbarNoActionDefined": "No action defined for this button", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "No tracks found for this album", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "Тема", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "storageModeAppFolder": "App Folder (Recommended)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "storageModeSaf": "Custom Folder (SAF)", - "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilenameInsertTag": "Нажмите для вставки тега:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "Регион SongLink", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: включение перевода", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Язык Musixmatch", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Код языка", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Авто", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the SongLink region picker" - }, - "snackbarUnsupportedAudioFormat": "Неподдерживаемый аудио формат", - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "cacheRefresh": "Обновить", - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" - }, - "dialogDownloadPlaylistsMessage": "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": "Select fields to fill automatically from online metadata", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "editMetadataAutoFillFetch": "Получить и заполнить", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "editMetadataAutoFillSearching": "Поиск в сети...", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "editMetadataAutoFillNoResults": "No matching metadata found online", - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "editMetadataAutoFillDone": "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": "Название", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "editMetadataFieldArtist": "Исполнитель", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "editMetadataFieldAlbum": "Альбом", - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "editMetadataFieldAlbumArtist": "Исполнитель альбома", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "editMetadataFieldDate": "Дата", - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "editMetadataFieldTrackNum": "Трек #", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" - }, - "editMetadataFieldDiscNum": "Диск #", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "editMetadataFieldGenre": "Жанр", - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" - }, - "editMetadataFieldLabel": "Заголовок", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "editMetadataFieldCopyright": "Авторские права", - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" - }, - "editMetadataFieldCover": "Обложка", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "editMetadataSelectAll": "Все", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" - }, - "editMetadataSelectEmpty": "Только пустые", - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "queueDownloadingCount": "Скачивание ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueDownloadedHeader": "Скачано", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "queueFilteringIndicator": "Фильтрация...", - "@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" - }, - "queueEmptyHistory": "Нет истории скачиваний", - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "queueEmptyHistorySubtitle": "Скачанные треки появятся здесь", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "selectionAllPlaylistsSelected": "Выбраны все плейлисты", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "selectionTapPlaylistsToSelect": "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": "Частота дискретизации", - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "audioAnalysisBitDepth": "Разрядность", - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "audioAnalysisChannels": "Каналы", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "audioAnalysisDuration": "Продолжительность", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "audioAnalysisNyquist": "Nyquist", - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "audioAnalysisFileSize": "Размер", - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "audioAnalysisDynamicRange": "Динамический диапазон", - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" - }, - "audioAnalysisPeak": "Peak", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "audioAnalysisSamples": "Сэмплы", - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "audioAnalysisRescan": "Re-analyze", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Искать с помощью {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "extensionsHomeFeedAuto": "Авто", - "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto 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" - }, - "sortAlphaAsc": "А-Я", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Я-А", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Отменить скачивание?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" добавлен в список желаний", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Удерживать", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "metadataSaveFailedFfmpeg": "Не удалось сохранить метаданные через FFmpeg", - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" - }, - "metadataSaveFailedStorage": "Не удалось записать метаданные обратно в хранилище", - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "snackbarFolderPickerFailed": "Не удалось открыть выбор папок: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Не удалось загрузить альбом", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Не удалось загрузить плейлист", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "Треки не найдены", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Не удалось загрузить исполнителя", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "Приоритет провайдера", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Прогресс скачивания", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Shows download progress for tracks", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Сканирование библиотеки", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Shows local library scan progress", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifFinalizingTrack": "Finalizing {trackName}", - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifEmbeddingMetadata": "Встраивание метаданных...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" - }, - "notifAlreadyInLibraryCount": "Уже в библиотеке ({completed}/{total})", - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifAlreadyInLibrary": "Уже в библиотеке", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" - }, - "notifDownloadCompleteCount": "Загрузка завершена ({completed}/{total})", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifDownloadComplete": "Скачивание завершено", - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "notifDownloadsFinished": "Загрузка завершена ({completed} завершено, {failed} не удалось)", - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "notifAllDownloadsComplete": "Все загрузки завершены", - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifScanningLibrary": "Сканирование локальной библиотеки", - "@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": "Сканирование библиотеки завершено", - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" - }, - "notifLibraryScanCompleteBody": "{count} треков индексировано", - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanExcluded": "{count} исключено", - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanErrors": "{count} ошибок", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanFailed": "Ошибка сканирования библиотеки", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "notifLibraryScanCancelled": "Сканирование библиотеки отменено", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" - }, - "notifLibraryScanStopped": "Сканирование остановлено перед завершением.", - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "Удалить с устройства?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Альбом, Исполнитель альбома", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4472,132 +653,514 @@ } } }, - "notifUpdateReady": "Обновление готово", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Список исполнителей, чьи работы были удалены из названия папки (например, Джастин Бибер, Quavo → Джастин Бибер)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Сканирование локальной библиотеки", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "notifUpdateFailed": "Ошибка обновления", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" - }, - "notifUpdateFailedBody": "Не удалось скачать обновление. Попробуйте позже.", - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "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" + "setupGetStarted": "Приступить к работе", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16 бит)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "Разметка", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Fallback Extensions", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "source": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "extensionsMetadataPriority": "Приоритет метаданных", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "updateCurrent": "Текущая", + "@updateCurrent": { + "description": "Label for current version" + }, + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (хорош для азиатских песен)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrich": "Обновить", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "Требуется доступ к хранилищу", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Только что", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Очистка отложенных скачиваний", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Favorite Artists", + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Плейлисты", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "Логи", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "Талантливый художник, который создал наш красивый логотип приложения!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "Предварительный", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "Главная", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "Мин. версия приложения", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Конвертация {current} из {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "Client ID: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Никогда", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "Номер трека", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320 кбит/с", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "Участники", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "Чат с другими пользователями", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "Выбраны все плейлисты", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Поиск ID трека в Spotify/Deezer. Очистка может замедлить следующие несколько поисков.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Ссылка не распознана", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Нажмите \"любовь\" на треках, чтобы сохранить ваши избранные", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "Без ограничений по скорости", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "Метаданные", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Исключить из Любимых", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Не удалось загрузить альбом", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "Вставьте Client ID", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "Поиск источника", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "Доступ ко всем файлам", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, "extensionsInstalledCount": "{count} extensions installed successfully", "@extensionsInstalledCount": { "description": "Success message after installing multiple extensions", @@ -4608,6 +1171,3228 @@ } } }, + "snackbarFailedToEmbedLyrics": "Failed to embed lyrics", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Скачанный альбом и трек обложки. Будет заново скачан после просмотра.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "Очистить всё", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Полная строка исполнителя, используемая для имени папки", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Убрать из папки", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "Метаданные", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Жанр (Я-А)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "Файл не найден", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "Исходный код ПК версии", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "{platform} ссылка скопирована в буфер обмена", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Получение {current} из {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "Сервис", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "Добавлено {count} треков в очередь", + "cueSplitTrackCount": "{count} треков", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Импорт плейлиста", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Локальная библиотека", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Дата релиза (новейшая)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "Синглы и EP", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Резервное расширение", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Плейлист: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Альбом: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "Подробный лог", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "Минимальный размер, ~4 Мб на трек", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Действия", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "Папка не выбрана. Хотите использовать папку Музыка по умолчанию?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "Ошибка: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Browse the Repo tab to discover useful extensions", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Extension providers are required", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Альбом (А-Я)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "Опции", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "Сбой загрузки обновления", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Приблизительное использование кэша: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "Повторить", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Нажмите на любой трек, чтобы воспроизвести его с помощью вашего музыкального плеера", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "Снять выделение", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "Поддерживается: Трек, Альбом, Плейлист, URL исполнителя", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Плейлист пуст", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Последние", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "Все файлы в папке загрузок", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "Альбомы", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "cacheSectionMaintenance": "Обслуживание", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Преобразовать {count} {count, plural, =1{track} other{tracks}} в {format} с {bitrate}?", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-бит / до 192кГц", + "snackbarRemovedTracksFromLoved": "Removed {count} tracks from Loved", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "Исполнитель/Альбом", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "Невозможно открыть файл: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "Необходимо - нажмите для настройки", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "Текст песни недоступен для этого трека", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "Утилиты", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Добавлено в \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Очистить кэш?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Год] Альбом", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Хранилище и кэш", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "Нет расширений с провайдером метаданных", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Название (Я-А)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16-бит / 44.1 кГц", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Завершение работы с библиотекой...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Автоматический переход", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "Разработчик мобильной версии", + "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Skip already downloaded songs", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "Удалить", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Удалить плейлист", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "Скачать", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "Исполнители", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "URL-обработчик", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} записей", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "Установка порядка поиска и источника метаданных", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Выберите треки для удаления", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Изменить местоположение и организацию папок для скачивания", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Ограничено только папками медиа", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "Скачивание", + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "Выберите треки для удаления", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "Заголовок", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "Отмена", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "Включить уведомления", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "Автор", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "Формат имени файла", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "Поиск в истории...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Временные файлы из загрузок и аудио конвертации.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "Вписать текст песни", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "Вставьте Client Secret", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "История очищена", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "Провайдер текстов", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "Все", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Поиск музыки", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Открыть в Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Скачано", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Не удалось получить некоторые альбомы", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 track} other{{count} tracks}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Сервис для поиска по названию трека или альбома", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Скачивание ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "Качество записи", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Удалено {count} {count, plural, one{отсутствующий файл} few{трека} many{отсутствующих файлов} other{отсутствующих файлов}} в библиотеке", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "Added {count} tracks to Loved", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "Просмотреть размер и очистить кэш", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} треков индексировано", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Выбрать альбомы...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "Соответствие пользовательских треков", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "Возможности", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Получить и сохранить текст песни в формате .lrc", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Формат с потерями 320 кбит/с", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Поиск в сети метаданных и встраивание в файл", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Скачивание музыки просто и быстро. Вот как это работает.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Удалить \"{playlistName}\" и все треки внутри него?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Метаданные успешно обновлены", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "\"{trackName}\" добавлен в очередь", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Каждое открытие приложения", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Каналы", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "Список", + "updateDownloadInstall": "Скачать и установить", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Название (А-Я)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" удалено из Любимых", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "Качество аудио", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Успешно конвертировано в {format}", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "Вы уверены, что хотите удалить {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "Обновить", + "libraryFilterMetadataMissingAny": "Не хватает метаданных", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "Регион SongLink", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Добавить в плейлист", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "Разрешения", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "Объявления и обновления", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "Уже в \"{playlistName}\"", + "discographyAlbumsOnlySubtitle": "{count} треков из {albumCount} альбомов", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "Включить уведомления", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "Тема, цвета, дисплей", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "Воспроизвести", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "Спрашивать перед скачиванием", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "Инструментальный трек", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Skip Duplicate Downloads", + "libraryFilterSortOldest": "Старые", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "Пропустить", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "New Repository URL", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "Это очистит кэш для {target}. Загруженные музыкальные файлы не будут удалены.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "Воспроизвести", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "Канал обновлений", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "Автоматическое сохранение неудачных загрузок в TXT файл", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Исполнитель (А-Я)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Исполнитель альбома", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Открыть в Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "Выберите iCloud или другое местоположение", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} слушателей в месяц", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Кэшированные данные", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "Download completed", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "Папка Документы приложения", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "Failed to load repository", + "settingsDownloadNetwork": "Сеть для скачивания", + "metadataSaveFailedStorage": "Не удалось записать метаданные обратно в хранилище", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Single joined value", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Треки", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Исполнитель (Я-А)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Service, quality, fallback", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Последнее сканирование: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "Новая", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "Управление провайдерами скачивания", + "sortAlphaAsc": "А-Я", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Выбрать всё", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "Альбомы/Исполнитель/[2005] Название Альбома/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Получение треков...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "Ошибка", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Включено ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "Дата выхода", + "discographySelectedCount": "{count} выбрано", + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "updateStartingDownload": "Загрузка началась...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "Номер диска", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "Используется расширение: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Автоматическое встраивание метаданных, обложек и текстов песен", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "Записей без описания не найдено", + "discographySkippedDownloaded": "{added} добавлено, {skipped} уже скачано", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Приоритет к поставщику текста песни", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Ошибка: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "У вас есть несохранённые изменения, которые будут потеряны.", + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.", + "discographyAlbumsOnly": "Только альбомы", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Choose which installed download extensions can be used as fallback", + "aboutSocial": "Соцсети", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "No search providers yet", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "Установлено", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Показать при поиске существующих треков", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "Скачать", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "Не удалось загрузить текст песни", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "Только WiFi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} Обновлено.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Скачивание музыки", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", + "navLibrary": "Библиотека", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "Все", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "No extensions available", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "Предварительная версия может содержать ошибки или неполные функции", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Сканирование библиотеки завершено", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "Установите .spotiflac-ext файлы для добавления новых провайдеров", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "Особая благодарность", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "Установить", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "Альбомы", + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Включить форматированные теги для отслеживания заполнения и шаблонов дат", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "Записи ({count} фильтровано)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Добавить репозиторий", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "Сообщить о проблеме", + "snackbarFailedToWriteStorage": "Failed to write back to storage", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "allFilesAccessDisabledMessage": "Доступ ко всем файлам отключен. Приложение будет использовать ограниченный доступ к хранилищу.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Код языка", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "Есть несохраненные изменения. Отменить их?", + "setupChooseFromFiles": "Выбрать из файлов", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" удалён из списка желаний", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "Расширение успешно установлено", + "progressReadingCsv": "Чтение CSV...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "Default Search", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", + "downloadLossy320": "С потерями 320 кбит/с", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Очередь FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Provider Options", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "Нет истории скачиваний", + "optionsTitle": "Опции", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "Очистить", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "Включите, если вы сталкиваетесь с ошибками записи при сохранении в пользовательские папки. Android 13+ по умолчанию ограничивает доступ к определенным папкам.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "Подтвердить конвертацию", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "Плейлист удалён", + "metadataMayRateLimit": "Есть ограничения по скорости", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "Love All", + "downloadDirectory": "Папка для скачивания", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "Папка библиотеки", + "optionsMaxQualityCoverSubtitle": "Скачивать обложку в макс. разрешении", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "Изучите содержимое вкладки (новые релизы, тренды). Они обновятся при следующем посещении.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Создайте плейлист, чтобы начать классифицировать треки", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Альбом (Я-А)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Битрейт", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Размер", + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "Записи ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Конвертировать из {sourceFormat} в {targetFormat} {bitrate}?\n\nОригинальный файл будет удален после конвертации.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "По альбому", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "Приложение", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Disabled: no loudness normalization tags", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "storeFilterIntegration": "Интеграция", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "Скачано", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.", + "optionsArtistTagModeDescription": "Choose how multiple artists are written into embedded tags.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "Песни", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "Настройки файла", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "dialogDelete": "Удалить", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "Вся скачанная музыка организована во вкладке Библиотека.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "Учётные данные сохранены", + "cacheCleanupResult": "Очистка завершена: {downloadCount} потерянных загрузок, {libraryCount} отсутствующих записей в библиотеке", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Конвертация без потери качества", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Переименовать плейлист", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Исполнитель", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Удерживайте + на любом треке, чтобы добавить его сюда", + "artistCompilations": "Сборники", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Не удалось открыть выбор папок: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Сканирование библиотеки", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "Информация о файле", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Missing album artist", + "audioAnalysisNoClipping": "No clipping", + "tutorialSettingsDesc": "Персонализируйте приложение в Настройках, чтобы оно соответствовало вашим предпочтениям.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "Отдельный файл .lrc для плееров, таких, как Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Use the default metadata search", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "Загрузить текст песни", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Сброс", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Репозиторий расширения", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Библиотека очищена", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Локальная библиотека", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "Все треки выбраны", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Очистить библиотеку", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "Очистить всё", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "от {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Расширьте возможности приложения с расширениями от сообщества.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Жанр", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "По плейлисту", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Сохранить обложку", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "По умолчанию", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Логи появятся здесь по мере использования приложения", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Сохранение текста...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Обложка сохранена в {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Текст песни", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "cleanupOrphanedDownloadsSubtitle": "Удалить историю записи для файлов, которых больше не существует", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Прогресс скачивания", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "Тексты песен", + "libraryAutoScan": "Автосканирование", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "Требуется доступ к хранилищу", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "Сетка", + "trackConvertConverting": "Конвертация аудио...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Choose which tab opens first for new search results.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "Есть два простых способа найти музыку, которую вы хотите скачать.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "Это очистит все категории кэша на этой странице. Скачанные музыкальные файлы не будут удалены.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unknown Album", + "trackCoverCurrent": "Current cover", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "Готово", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "Repository URL", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress}% из {total} файлов", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Папка Любимые пуста", + "tutorialExtensionsTitle": "Расширения", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Продолжительность (наименьшая)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "Скопировать путь к файлу", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Artist/Album/ and Artist/song.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Трек #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "Не удалось обновить расширение", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Уже в библиотеке", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Название плейлиста", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Choose Language", + "extensionId": "ID", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "Поиск Spotify устареет 3 марта 2026 года из-за изменений Spotify API. Пожалуйста, перейдите на Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC требуется доступ к хранилищу для сканирования вашей библиотеки музыки. Пожалуйста, предоставьте разрешение в настройках.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "Папка для скачивания", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Добавить в Любимое", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "Папка кэша приложения", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "Постобработка", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "Логи скопированы в буфер обмена", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "Использовать папку по умолчанию?", + "tutorialSearchHint": "Paste or search...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Язык Musixmatch", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "Внешний файл .lrc", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "Поиск логов...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "Client ID", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "required", + "actionCancel": "Отмена", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Формат имени файла", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Очистка кэша не приведет к удалению загруженных музыкальных файлов.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Скачать Spotify треки во FLAC", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "Удалить с устройства", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Просмотр кэша", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "например, https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Storage Update Required", + "snackbarMetadataSaved": "Метаданные успешно сохранены", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "Очистить логи", + "extensionsCustomSearch": "Пользовательский поиск", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} в {count} файлах", + "actionRemoveCredentials": "Удалить учётные данные", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "Файлы, доступные для совместного доступа, не найдены", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "Добавлено {count} треков в очередь", + "downloadFilenameInsertTag": "Нажмите для вставки тега:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Ошибка сканирования библиотеки", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Re-analyze", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{file} other{files}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Сначала выберите папку", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Альбомы", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Not configured", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "Отдельная папка для каждого плейлиста", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Поставщик расширений", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Конвертировать аудио", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "Пропустить", + "sectionDownload": "Скачивание", + "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Отсутствует год", + "extensionsDownloadPriority": "Приоритет скачивания", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Сканировать библиотеку", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Заголовок", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "Не удалось скачать", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "Глубокий чёрный фон", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Shows download progress for tracks", + "setupIcloudNotSupported": "iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.", + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", "@extensionsInstallPartialSuccess": { "description": "Message when installing multiple extensions partially succeeds", @@ -4622,155 +4407,99 @@ } } }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", "placeholders": { "count": { "type": "int" } } }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "notifLibraryScanCancelled": "Сканирование библиотеки отменено", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" }, - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" + "collectionPlaylistNameRequired": "Имя плейлиста обязательно", + "libraryCleanupMissingFiles": "Очистка отсутствующих файлов", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" + "searchSortTitle": "Упорядочить результаты", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" }, "audioAnalysisLufs": "LUFS", - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" + "extensionsErrorLoading": "Ошибка загрузки расширения", + "@actionPaste": { + "description": "Generic action - paste from clipboard" }, - "audioAnalysisClipping": "Clipping", - "@audioAnalysisClipping": { - "description": "Clipping metric label" + "aboutFeatureRequestSubtitle": "Предложить новые функции для приложения", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" }, - "audioAnalysisNoClipping": "No clipping", - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" + "@aboutTitle": { + "description": "About page title" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" + "@actionGo": { + "description": "Generic action button label" }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "Обновлено", + "@extensionUpdated": { + "description": "Extension detail - last update" }, - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" + "downloadLossyFormat": "Формат с потерями", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" }, - "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", + "snackbarAlreadyInLibrary": "\"{trackName}\" уже есть в вашей библиотеке", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" + "trackName": { + "type": "String" } } }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "libraryFilterQuality": "Качество", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" }, - "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", + "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" } } }, - "searchTracks": "Tracks", - "@searchTracks": { - "description": "Search filter label - tracks" + "@discographyDownload": { + "description": "Button - download artist discography" }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "trackReEnrichFieldsTitle": "Поля для обновления", + "aboutFeatureRequest": "Предложить новую функцию", + "downloadSingleFilenameFormatDescription": "Формат имени файла для синглов и EP. Используются те же теги, что и для альбомов.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" }, - "homeSearchHintProvider": "Search with {providerName}...", - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", + "queueClearAllMessage": "Вы уверены, что хотите очистить все загрузки?", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", "placeholders": { - "providerName": { + "time": { "type": "String" } } @@ -4779,253 +4508,519 @@ "@homeImportCsvTooltip": { "description": "Tooltip for importing a CSV file into Home search" }, - "homeChangeSearchProviderTooltip": "Change search provider", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "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" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "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" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "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", + "dialogClearHistoryTitle": "Очистить историю", "@logClearSearch": { "description": "Tooltip for clearing the log search field" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "dialogImport": "Импорт", + "@dialogImport": { + "description": "Dialog button - import data" }, - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" }, - "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" + "notifLibraryScanErrors": "{count} ошибок", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "Удалить расширение?", + "recentTypePlaylist": "Плейлист", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "Это приведет к окончательному удалению загруженного файла и его удалению из истории.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "Системная", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "Исполнитель / Альбом + Синглы", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "Требуется доступ к хранилищу", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "Удалить", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "Приоритет провайдера метаданных сохранён", + "setupPermissionRequired": "Требуется разрешение {permissionType}", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Degraded", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "No lyrics found in this file", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Учётные данные Spotify", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Показать все загрузки", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Номер трека и диска", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "setupNext": "Далее", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Ежедневно", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "trackConvertFailed": "Ошибка конвертации", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "Удалить", + "safMigrationSuccess": "Download folder updated to SAF mode", + "optionsClearHistorySubtitle": "Удалить все скачанные треки из истории", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "optionsUpdateChannelStable": "Только стабильные релизы", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "Плейлисты", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "settingsAppearance": "Внешний вид", "logIssueRateLimitedLabel": "RATE LIMITED", "@logIssueRateLimitedLabel": { "description": "Diagnostic badge label when the service rate limits requests" }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "appName": "Spotify", + "storeRepoDialogCurrent": "Текущий репозиторий:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" }, - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" + "@trackLyrics": { + "description": "Tab title - lyrics" }, - "logIssueNetworkErrorDescription": "Connection issues detected", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "@backupImportButton": { + "description": "Button to pick a backup file to restore" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "@setupFolderChoose": { + "description": "Button to choose folder" }, - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" + "@regionCountryAU": { + "description": "Country name for SongLink region picker" }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" + "libraryFilterApply": "Применить", + "@libraryFilterApply": { + "description": "Apply filters button" }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "Текст песни", + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: включение перевода", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "Успешно разделено на {count} треков", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", "placeholders": { - "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", + "cueSplitArtist": "Артист: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Список желаемого", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Получить и заполнить", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "downloadLossyOpus128": "Opus 128 кбит/с", + "downloadUseAlbumArtistForFolders": "Использовать исполнителя альбома для папок", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "updateLater": "Позже", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "Возобновить", + "optionsDetailedLoggingOff": "Включить для отчётов об ошибках", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Папка названная в честь тега Трека Артиста", + "storeSearch": "Поиск расширений...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Сообщество в Telegram", + "lyricsModeBoth": "Оба варианта", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Automatically scan your library for new files", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Включить локальную библиотеку", + "queueFlacFindingProgress": "Поиск совпадений FLAC... ({current}/{total})", + "trackConvertTargetFormat": "Целевой формат", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "Настройки", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "Время ожидания запроса истекло. Повторите попытку позже.", + "settingsExtensions": "Расширения", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Скачанные", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "Динамический цвет", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "credentialsTitle": "Учётные данные Spotify", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "Внешний вид", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Clear search", + "trackSaveLyrics": "Сохранить текст (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Скачивание завершено", + "snackbarAlreadyDownloaded": "\"{trackName}\" уже скачан", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Отдельная папка для каждого альбома", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Search for tracks", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Вписать и сохранить .lrc файл", + "trackReEnrichFieldExtra": "Жанр, Название, Авторские права", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "Тексты песен", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "Стратегия: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Отменить скачивание?", + "updateWhatsNew": "Что нового", + "updateNewVersionReady": "Доступна новая версия", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Select track", + "libraryClearSubtitle": "Удалить все сканированные треки", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Репозиторий", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "Настройки сканирования", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "Продолжительность", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Search tracks...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Исполнитель", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "В библиотеке", + "pressBackAgainToExit": "Нажмите «Назад» ещё раз, чтобы выйти", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "Разрешение на уведомление предоставлено!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Support Development", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "Не напоминать", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Поиск в сети...", + "discographyDownloadSelected": "Скачать выбранное", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Фильтрация...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Choose the default search provider to switch back from an extension", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Разбить \"{album}\" на {count} отдельных FLAC-файлов?", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Временная директория", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Показать индикатор дубликатов", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "Проверить обновления", + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "recentTypeAlbum": "Альбом", + "providerExtension": "Расширение", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "Нет доступных источников обложки", + "libraryFilterMetadata": "Метаданные", + "albumFolderArtistYearAlbum": "Исполнитель / [Год] Альбом", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5040,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} by {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Стабильный", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Настроить тему и внешний вид приложения", + "setupAppDocumentsFolderSubtitle": "Рекомендуется - доступ через Файлы", + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -5052,6 +5062,320 @@ } } }, + "dialogRemove": "Убрать", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "Попробовать другие сервисы при сбое загрузки", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} шаблон(ов)", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "Эта ссылка не поддерживается. Убедитесь, что URL-адрес указан правильно и установлено совместимое расширение.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Artist Tag Mode", + "libraryFilterMetadataComplete": "Complete metadata", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Scan loudness and embed ReplayGain tags (EBU R128)", + "libraryScanning": "Сканирование...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Обновить", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "Сохранять синхронизированный текст песни рядом с загруженным треком", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "extensionEnterValue": "Enter value", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Любимые", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Add Extension Repository", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "Разделить файл CUE+FLAC на отдельные треки", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "Плейлисты отсутствуют", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Удалить записи для файлов, которых больше не существует", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "По исполнителю", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "Переводчики", + "notifAlreadyInLibraryCount": "Уже в библиотеке ({completed}/{total})", + "editMetadataFieldTitle": "Название", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Не удалось загрузить исполнителя", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "Фактическое качество зависит от доступности треков в сервисе", + "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Я-А", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.", + "tutorialReadyMessage": "Всё готово! Начните загружать любимую музыку прямо сейчас.", + "tutorialLibraryTip3": "Переключение между списком и сеткой для лучшего просмотра", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "Светлая", + "queueEmptyHistorySubtitle": "Скачанные треки появятся здесь", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "Выбрать папку для скачивания", + "dialogDownloadAllTitle": "Скачать всё", + "providerPriorityInfo": "Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "Нет доступных альбомов", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "cacheNoData": "Нет кэшированных данных", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "aboutTitle": "О программе", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "Отображение истории", + "audioAnalysisSampleRate": "Частота дискретизации", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "Отслеживать кэш поиска", + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Refresh status", + "notifAllDownloadsComplete": "Все загрузки завершены", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "Поделиться", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{count} треков из {albumCount} релизов", + "settingsDonateSubtitle": "Buy the developer a coffee", + "libraryFilterDownloaded": "Скачанные", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Сканирование остановлено перед завершением.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "Копировать текст", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "Структура папок альбома", + "downloadMusixmatchAuto": "Авто", + "actionDismiss": "Dismiss", + "storeFilterAll": "Все", + "extensionsDisabled": "Выключено", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "Download {count} tracks?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Ваша библиотека", + "optionsCheckUpdatesSubtitle": "Уведомлять о наличии новой версии", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Плейлист", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "{count} месяцев назад", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Legacy", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Плейлист переименован", + "collectionCreatePlaylist": "Создать плейлист", + "homeGoToAlbum": "Перейти к альбому", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Отдельная папка для каждого исполнителя", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "Версия {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Основной исполнитель только для папок", + "tutorialExtensionsTip2": "Добавить новых поставщиков загрузок или поиска", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "Добро пожаловать в SpotiFLAC!", "a11ySelectAlbum": "Select album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -5061,89 +5385,679 @@ } } }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "Исходный код мобильной версии", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Источник", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Доступ к хранилищу", + "logFilterBySeverity": "Фильтровать логи по серьезности", + "libraryFolderNotExist": "Выбранной папки не существует", + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "albumFolderArtistAlbum": "Исполнитель / Альбом", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "В разрешении отказано. Пожалуйста, включите функцию «Доступ ко всем файлам» в настройках системы.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Только пустые", + "settingsLocalLibrarySubtitle": "Сканировать и обнаружить дубликаты", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "Использовать провайдера расширений", + "cacheCleanupUnusedSubtitle": "Удалить историю загрузок, оставшихся без просмотра, и отсутствующие записи в библиотеке", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Отсутствует жанр", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "setupFolderDescription": "Выберите папку, в которой будет сохраняться скачанная музыка.", + "extensionDetailsTags": "Tags", + "unknownArtist": "Unknown Artist", + "trackFetchOnlineLyrics": "Fetch from Online", + "snackbarNoActionDefined": "No action defined for this button", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, + "downloadAllCount": "Скачать все ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "Диск {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "Сохранить учётные данные", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "Удалить из списка желаний", + "extensionsFallbackTitle": "Fallback Extensions", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Не удалось сохранить метаданные через FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Удалить выбранные", + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.", + "appearanceThemeDark": "Тёмная", + "downloadedAlbumTapToSelect": "Нажмите на треки для выбора", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "updateDownloading": "Скачивание...", + "trackLyricsSource": "Source: {source}", + "logFilterLevel": "Уровень", + "logNoLogsYet": "Логов нет", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "Это удалит все сканированные треки из вашей библиотеки. Ваши фактические файлы не будут удалены.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Авто", + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "Сегодня", + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Разрядность", "editMetadataFieldTrackTotal": "Track Total", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "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" - }, - "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" - }, - "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", + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Папка названная в честь тега Альбома Артиста", + "optionsSpotifyWarning": "Spotify требует ваши собственные учетные данные API. Получите их бесплатно на сайте developer.spotify.com", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "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": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Редактировать метаданные", + "discographyDownloadAll": "Скачать всё", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "Альбомы/Исполнитель/Название Альбома/", + "extensionHealthServiceUnknown": "Service status unknown", + "navHome": "Главная", + "queueDownloadStarting": "Starting...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "selectionSelected": "{count} выбрано", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Скачать дискографию", + "editMetadataFieldCopyright": "Авторские права", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Сортировка", + "cacheLibraryCoverDesc": "Обложка извлечена из локальных музыкальных файлов. Будет повторно извлечено при следующем сканировании.", + "dialogRemoveExtension": "Удалить расширение", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "Выбрать все", + "settingsDownloadNetworkSubtitle": "Выберите, какую сеть использовать для скачивания. Когда установлено значение только WiFi — скачивания через мобильную сеть будут приостановлены.", + "downloadFolderOrganization": "Организация папок", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "Все треки выбраны", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "Просмотреть логи для отладки", + "albumFolderYearAlbumSubtitle": "Альбомы/[2005] Название Альбома /", + "cancelDownloadKeep": "Удерживать", + "optionsDetailedLoggingOn": "Ведутся подробные логи", + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Ошибка обновления", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Выключено ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Локальные", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "Сервис", + "lyricsProviderQqMusicDesc": "QQ Музыка (хорошо подходит для китайских песен, через прокси)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Удалить записи из истории загрузок и библиотеки, которые остались без файлов.", + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "notifUpdateFailedBody": "Не удалось скачать обновление. Попробуйте позже.", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "artistPopular": "Популярное", + "extensionRemoveButton": "Удалить расширение", + "allFilesAccessEnabledSubtitle": "Можно записать в любую папку", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Провайдер поиска", + "tutorialWelcomeDesc": "Давайте научимся скачивать свою любимую музыку в качестве без потерь. В этом кратком руководстве мы покажем вам основы.", + "selectionBatchConvertConfirmTitle": "Пакетная конвертация", + "extensionMetadataProvider": "Провайдер метаданных", + "queueDownloadedFileMissing": "Downloaded file missing", + "logClearLogs": "Очистить логи", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Скачивайте музыку из Spotify, Deezer, или вставьте любой поддерживаемый URL", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "Исполнитель", + "extensionCustomUrlHandling": "Custom URL Handling", + "appearanceDynamicColorSubtitle": "Использовать цвета из ваших обоев", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "По умолчанию", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choose how album folders are structured", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "App Folder (Recommended)", + "collectionPlaylistCreated": "Плейлист создан", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Сохранить обложку как файл .jpg", + "actionPaste": "Paste", + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "downloadNativeWorker": "Native download worker", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "Обновить статистику", + "collectionPlaylistChangeCover": "Изменить обложку", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "Очистить историю загрузок", + "trackGenre": "Жанр", + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "libraryFilterMetadataMissingArtist": "Missing artist", + "extensionsNoCustomSearch": "Нет расширений с пользовательским поиском", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "Провайдер скачивания", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "Режим текстов песен", + "aboutReportIssueSubtitle": "Сообщите о возникших проблемах", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "AMOLED", + "logIssueNetworkErrorDescription": "Connection issues detected", + "folderOrganizationByArtistAlbumSubtitle": "Вложенные папки для исполнителей и альбомов", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "Предоставить разрешение", + "lyricsProvidersDescription": "Включайте, выключайте, переупорядочивайте источники текстов. Поставщики связаны сверху вниз пока проводится поиск текста.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "{count} дней назад", + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "downloadLossyMp3Subtitle": "Наилучшая совместимость, ~10 Мб на трек", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "Список желаний пуст", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Service degraded", + "optionsUseExtensionProvidersOn": "Extension providers are enabled", + "selectionConvertNoConvertible": "Не выбраны конвертируемые треки", + "snackbarCredentialsCleared": "Учётные данные очищены", + "setupStorageGranted": "Доступ к хранилищу предоставлен!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} исключено", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Change folder", + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "Очистить библиотеку", + "collectionRemoveFromPlaylist": "Удалить из плейлиста", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "storeCategoryMetadata": "Metadata", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "tutorialLibraryTip1": "Просмотр прогресса загрузки и очереди на вкладке Библиотека", + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "Локальные", + "tutorialDownloadInProgressSemantics": "Download in progress", + "searchSortDurationLong": "Продолжительность (наибольшая)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "О локальной библиотеке", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Аудиофайл для этого CUE sheet не найден", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "appearanceSelectAccentColor": "Select accent color {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "Rescan ReplayGain", + "downloadSeparateSinglesFolder": "Отдельная папка для синглов", + "trackAlbumArtist": "Исполнитель альбома", + "qualityFlacLossless": "FLAC Lossless", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Настройте приложение под себя", + "extensionActionFailed": "Action failed", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "notifChannelLibraryScanDesc": "Shows local library scan progress", + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" удалён", + "setupStorageAccessMessageAndroid11": "Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.", + "notifDownloadsFinished": "Загрузка завершена ({completed} завершено, {failed} не удалось)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "optionsPrimaryProvider": "Основной провайдер", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "collectionAddedToLoved": "\"{trackName}\" добавлен в Любимые", + "albumFolderArtistAlbumFlat": "Artist / Album (Singles flat)", + "homeAlbumInfoUnavailable": "Album info not available", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unknown", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "Автоэкспорт неудачных загрузок", + "logFilterSection": "Фильтр", + "dialogDiscardChanges": "Отменить изменения?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Tracks", + "searchAlbums": "Альбомы", + "trackConvertFormat": "Переконвертировать формат", + "metadataProviderPriorityTitle": "Приоритет метаданных", + "libraryFolderHint": "Нажмите, чтобы выбрать папку", + "downloadedAlbumDeleteMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "Альбом", + "updateAvailable": "Доступно обновление", + "optionsEmbedLyrics": "Вписать текст песни", + "trackReEnrichProgress": "Обновление метаданных...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", + "settingsTitle": "Настройки", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Просмотреть кэш ленты", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} выбрано", + "downloadAskQualitySubtitle": "Показывать выбор качества для каждого скачивания", + "filenameShowAdvancedTags": "Показать расширенные теги", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "Кэш обложек библиотеки", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "snackbarFillAllFields": "Пожалуйста, заполните все поля", + "actionCreate": "Создать", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} скачано", + "snackbarLoadingCueSheet": "Загрузка CUE разметки...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "Создатель оригинального SpotiFLAC", + "a11yTrackByArtist": "{trackName} by {artistName}", + "audioAnalysisDynamicRange": "Динамический диапазон", + "homeChangeSearchProviderTooltip": "Change search provider", + "loadingSharedLink": "Загрузка общедоступной ссылки...", + "lyricsModeEmbedSubtitle": "Встроить текст в метаданные FLAC", + "setupNotificationBackgroundDescription": "Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.", + "snackbarViewQueue": "Просмотр очереди", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Выберите конкретные альбомы или синглы", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "Не удалось загрузить контент по этой ссылке. Пожалуйста, попробуйте еще раз.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "Сохранить", + "trackReEnrichSearching": "Поиск метаданных в сети...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "downloadFilenameFormat": "Формат имени файла", + "cueSplitTitle": "Разделить CUE Sheet", + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "Невозможно загрузить {item}: отсутствует источник расширения", + "albumFolderAlbumOnlySubtitle": "Альбомы/Название Альбома/", + "errorLoadPlaylist": "Не удалось загрузить плейлист", + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "Отменить", + "storageModeSaf": "Custom Folder (SAF)", + "errorRateLimited": "Слишком много запросов", + "downloadSelectQuality": "Выбор качества", + "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", + "collectionFoldersTitle": "Мои папки", + "credentialsClientSecret": "Секретный код клиента", + "progressFetchingMetadata": "Получение метаданных... {current}/{total}", + "settingsDownloadNetworkAny": "WiFi и Мобильная сеть", + "audioAnalysisDuration": "Продолжительность", + "audioAnalysisAnalyzing": "Analyzing audio...", + "credentialsDescription": "Введите свой Client ID и Secret, чтобы использовать собственные квоты в Spotify.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Диск #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Play preview", + "setupPermissionRequiredMessage": "Для оптимальной работы требуется разрешение {permissionType}. Вы можете изменить это позже в настройках.", + "aboutVersion": "Версия", + "qualityHiResFlacSubtitle": "24-бит / до 96кГц", + "audioAnalysisSamples": "Сэмплы", + "libraryFilterQualityHiRes": "Hi-Res (24 бит)", + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "Авторские права", + "libraryForceFullScanSubtitle": "Пересканировать все файлы, игнорировать кэш", + "trackCopiedToClipboard": "Скопировано в буфер обмена", + "optionsEmbedMetadata": "Embed Metadata", "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5159,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Integration", + "storeClearFilters": "Очистить фильтры", + "navSettings": "Настройки", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "Приложение", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "Исполнитель/Альбом и Исполнитель/Сингл/", + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "Название", + "homeRecent": "Недавние", + "recentEmpty": "Нет недавних элементов", + "cacheClearAll": "Очистить весь кэш", + "trackReEnrichFieldReleaseInfo": "Дата и ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "editMetadataFieldAlbum": "Альбом", + "settingsAbout": "О программе", + "libraryFilterTitle": "Фильтры", + "cleanupOrphanedDownloadsResult": "Удалено {count} утерянных записей из истории", + "extensionHooksAvailable": "Доступно {count} хуков(ов)", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "Текст успешно добавлен", + "optionsUpdateChannelPreview": "Предварительные версии", + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "libraryForceFullScan": "Полное сканирование", + "snackbarProviderPrioritySaved": "Приоритет провайдера сохранён", + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Service Status", + "dateWeeksAgo": "{count} недель назад", + "historyFilterSingles": "Синглы", + "tutorialSettingsTip2": "Настройте качество и формата аудиофайла по умолчанию", + "trackLyricsSaved": "Текст песни сохранен в {fileName}", + "cacheClearAllConfirmTitle": "Очистить весь кэш?", + "noTracksFoundForAlbum": "No tracks found for this album", + "sectionLanguage": "Язык", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "Выбрать папку", + "dateYesterday": "Вчера", + "collectionAddToPlaylist": "Добавить в плейлист", + "snackbarUnsupportedAudioFormat": "Неподдерживаемый аудио формат", + "libraryScanCancelled": "Scan cancelled", + "appearanceLanguage": "Язык приложения", + "extensionsTitle": "Расширения", + "dialogImportPlaylistMessage": "Найдено {count} треков в CSV. Добавить их в очередь загрузки?", + "permissionNotification": "Notification", + "notifUpdateReady": "Обновление готово", + "lyricsModeDescription": "Выберите как сохранить тексты песен при скачивании", + "downloadFrom": "Скачивать из", + "collectionWishlistEmptySubtitle": "Нажмите + на треках, чтобы сохранить то, что вы хотите скачать позже", + "cueSplitSplitting": "Разделение CUE sheet... ({current}/{total})", + "optionsMaxQualityCover": "Максимальное качество обложки", + "trackOptionAddToWishlist": "Добавить в список желаний", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Загрузка завершена ({completed}/{total})", + "extensionsNoDownloadProvider": "Нет расширений с провайдером загрузки", + "libraryFilterSortGenreAsc": "Жанр (А-Я)", + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "collectionPlaylistRemoveCover": "Удалить обложку", + "storeEmptyNoResults": "Расширения не найдены", + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "editMetadataFieldComment": "Comment", + "settingsMetadata": "Metadata", + "settingsCache": "Хранилище и кэш", + "providerPriorityFallbackExtensionsHint": "Only enabled extensions with download-provider capability are listed here.", + "libraryFilterAll": "Все", + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "extensionsProviderPrioritySection": "Приоритет провайдера", + "storeChangeRepoTooltip": "Изменить репозиторий", + "snackbarFailedToInstall": "Не удалось установить расширение", + "libraryScanSubtitle": "Сканировать аудио файлы", + "snackbarExtensionInstalled": "{extensionName} установлено.", + "setupOpenSettings": "Открыть настройки", + "extensionsInstalledSection": "Установленные расширения", + "aboutLinks": "Ссылки", + "trackCoverClearSelected": "Clear selected cover", + "libraryAutoScanWeekly": "Еженедельно", + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "optionsDefaultSearchTab": "Вкладка поиска по умолчанию", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "Сортировать скачанные файлы по папкам", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "Вписать в файл", + "trackReEnrichFfmpegFailed": "Ошибка встраивания метаданных FFmpeg", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "С потерями", + "actionPause": "Пауза", + "csvImportTracks": "{count} трек(-ов) из CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "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...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "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": { + "providerName": { "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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": {} - } - } + "sectionDebug": "Отладка", + "editMetadataFieldDate": "Дата", + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "sectionPerformance": "Производительность", + "extensionsSearchWith": "Искать с помощью {providerName}", + "extensionsDownloadPrioritySubtitle": "Установка порядок сервисов скачивания", + "cacheAppDirectoryDesc": "HTTP-ответы, данные WebView и другие временные данные приложения.", + "sectionData": "Данные", + "notifFinalizingTrack": "Finalizing {trackName}", + "snackbarFileNotFound": "Файл не найден", + "extensionQualityOptions": "Параметры качества", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "Extension Repository", + "extensionsSearchProviderDescription": "Выберите, какой сервис использовать для поиска треков", + "albumFolderAlbumOnly": "Только альбом", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "Разделить на Треки" } diff --git a/lib/l10n/arb/app_tr.arb b/lib/l10n/arb/app_tr.arb index 69e8e071..61985f63 100644 --- a/lib/l10n/arb/app_tr.arb +++ b/lib/l10n/arb/app_tr.arb @@ -1,2365 +1,31 @@ { "@@locale": "tr", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Mevcut müziğinizi tarayın ve takip edin", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Ana sayfa", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Kitaplığın", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Ayarlar", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Depo", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Ana sayfa", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Desteklenen bir URL yapıştırın veya isme göre arayın", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "homeSupports": "Desteklenen linkler: Şarkı, Albüm, Çalma Listesi, Sanatçı linkleri", - "@homeSupports": { - "description": "Info text about supported URL types" - }, - "homeRecent": "En son", - "@homeRecent": { - "description": "Section header for recent searches" - }, - "historyFilterAll": "Tümü", - "@historyFilterAll": { - "description": "Filter chip - show all items" - }, - "historyFilterAlbums": "Albümler", - "@historyFilterAlbums": { - "description": "Filter chip - show albums only" - }, - "historyFilterSingles": "Single'lar", - "@historyFilterSingles": { - "description": "Filter chip - show singles only" - }, - "historySearchHint": "Arama geçmişi...", - "@historySearchHint": { - "description": "Search bar placeholder in history" - }, - "settingsTitle": "Ayarlar", - "@settingsTitle": { - "description": "Settings screen title" - }, - "settingsDownload": "İndirme", - "@settingsDownload": { - "description": "Settings section - download options" - }, - "settingsAppearance": "Görünüm", - "@settingsAppearance": { - "description": "Settings section - visual customization" - }, - "settingsOptions": "Seçenekler", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Eklentiler", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "Hakkında", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "İndirme", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Her indirmeden önce kalite seçim ekranını göster", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Dosya adı formatı", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadFolderOrganization": "Dosya Organizasyonu", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Görünüm", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "Sistem", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Açık", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Koyu", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Dinamik Renk", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Duvar kağıdının renklerini kullan", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "Geçmiş Düzeni", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Liste", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Izgara", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Seçenekler", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "Ana Kaynek", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Parça veya albüm adına göre arama yapmak için kullanılan hizmet", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Kullanılan eklenti: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Diğerlerini dene", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "İndirme başarısız olursa diğer hizmetleri dene", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Eklenti sağlayıcılarını kullan", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Şarkı Sözlerini Göm", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "İndirdiğiniz parçaların yanına senkronize edilmiş şarkı sözlerini kaydedin", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "En Yüksek Kapak Kalitesi", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "En yüksek kalitedeki albüm kapaklarını indir", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsExtensionStore": "Eklenti Deposu", - "@optionsExtensionStore": { - "description": "Show/hide store tab" - }, - "optionsExtensionStoreSubtitle": "Gezinme menüsünde Depo sekmesini göster", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store toggle" - }, - "optionsCheckUpdates": "Güncelleştirmeleri Denetle", - "@optionsCheckUpdates": { - "description": "Auto update check toggle" - }, - "optionsCheckUpdatesSubtitle": "Yeni sürüm çıktığında bildir", - "@optionsCheckUpdatesSubtitle": { - "description": "Subtitle for update check" - }, - "optionsUpdateChannel": "Güncelleme Kanalı", - "@optionsUpdateChannel": { - "description": "Stable vs preview releases" - }, - "optionsUpdateChannelStable": "Sadece stabil sürümler", - "@optionsUpdateChannelStable": { - "description": "Only stable updates" - }, - "optionsUpdateChannelPreview": "Önizleme sürümlerini al", - "@optionsUpdateChannelPreview": { - "description": "Include beta/preview updates" - }, - "optionsUpdateChannelWarning": "Önizleme sürümleri hatalar veya tamamlanmamış özellikler içerebilir", - "@optionsUpdateChannelWarning": { - "description": "Warning about preview channel" - }, - "optionsClearHistory": "İndirme Geçmişini Temizle", - "@optionsClearHistory": { - "description": "Delete all download history" - }, - "optionsClearHistorySubtitle": "İndirilen bütün şarkıları geçmişten temizle", - "@optionsClearHistorySubtitle": { - "description": "Subtitle for clear history" - }, - "optionsDetailedLogging": "Detaylı Günlükleme", - "@optionsDetailedLogging": { - "description": "Enable verbose logs for debugging" - }, - "optionsDetailedLoggingOn": "Detaylı günlük kayıt ediliyor", - "@optionsDetailedLoggingOn": { - "description": "Status when logging enabled" - }, - "optionsDetailedLoggingOff": "Hata bildirmek için aç", - "@optionsDetailedLoggingOff": { - "description": "Status when logging disabled" - }, - "optionsSpotifyCredentials": "Spotify Kimlik Bilgileri", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Müşteri Kimliği: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Zorunlu - değiştirmek için tıkla", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify'ın senin API kimlik bilgilerine ihtiyacı var. Onları developer.spotify.com'dan alabilirsin", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Spotify API değişiklikleri nedeniyle Spotify araması 3 Mart 2026 tarihinde kullanımdan kaldırılacaktır. Lütfen Deezer'a geçiş yapın.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Eklentiler", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Devre Dışı", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Versiyon {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "{author} tarafından", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Kaldır", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Uzantı Deposu", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Eklenti ara...", - "@storeSearch": { - "description": "Store search placeholder" - }, - "storeInstall": "Kur", - "@storeInstall": { - "description": "Install extension button" - }, - "storeInstalled": "Kuruldu", - "@storeInstalled": { - "description": "Already installed badge" - }, - "storeUpdate": "Güncelle", - "@storeUpdate": { - "description": "Update available button" - }, - "aboutTitle": "Hakkında", - "@aboutTitle": { - "description": "About page title" - }, - "aboutContributors": "Katkıda Bulunanlar", - "@aboutContributors": { - "description": "Section for contributors" - }, - "aboutMobileDeveloper": "Mobil versiyon geliştiricisi", - "@aboutMobileDeveloper": { - "description": "Role description for mobile dev" - }, - "aboutOriginalCreator": "Orijinal SpotiFLAC'ın kurucusu", - "@aboutOriginalCreator": { - "description": "Role description for original creator" - }, - "aboutLogoArtist": "Uygulama logomuzu yaratmış yetenekli sanatçımız!", - "@aboutLogoArtist": { - "description": "Role description for logo artist" - }, - "aboutTranslators": "Çevirmenler", - "@aboutTranslators": { - "description": "Section for translators" - }, - "aboutSpecialThanks": "Özel teşekkür", - "@aboutSpecialThanks": { - "description": "Section for special thanks" - }, - "aboutLinks": "Linkler", - "@aboutLinks": { - "description": "Section for external links" - }, - "aboutMobileSource": "Mobil kaynak kodu", - "@aboutMobileSource": { - "description": "Link to mobile GitHub repo" - }, - "aboutPCSource": "PC kaynak kodu", - "@aboutPCSource": { - "description": "Link to PC GitHub repo" - }, - "aboutKeepAndroidOpen": "Android'i Açık Tutun", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Sorun bildir", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Karşılaştığın herhangi bir problemi bildir", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Özellik isteği", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Uygulama için yeni özellikler isteyin", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Telegram Kanalı", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Duyurular ve güncellemeler", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Telegram Grubu", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Diğer kullanıcılarla sohbet et", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Sosyal ağlar", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "Uygulama", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Versiyon", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "I Don't Have Spotify (IDHS) yaratıcısı. Günü kurtaran yedek bağlantı çözücü!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Müzik meta verilerini arayın, uzantıları yönetin ve kütüphanenizi düzenleyin.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Albümler", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Single'lar ve EP'ler", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Derlemeler", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Popüler", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "Aylık {count} dinleyici", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "count": { - "type": "String", - "description": "Formatted listener count" - } - } - }, - "trackMetadataService": "Hizmet", - "@trackMetadataService": { - "description": "Metadata field - download service used" - }, - "trackMetadataPlay": "Oynat", - "@trackMetadataPlay": { - "description": "Action button - play track" - }, - "trackMetadataShare": "Paylaş", - "@trackMetadataShare": { - "description": "Action button - share track" - }, - "trackMetadataDelete": "Sil", - "@trackMetadataDelete": { - "description": "Action button - delete track" - }, - "setupGrantPermission": "İzin Ver", - "@setupGrantPermission": { - "description": "Button to request permission" - }, - "setupSkip": "Şimdilik atla", - "@setupSkip": { - "description": "Skip current step button" - }, - "setupStorageAccessRequired": "Depolama Erişimi Gerekli", - "@setupStorageAccessRequired": { - "description": "Title when storage access needed" - }, - "setupStorageAccessMessageAndroid11": "Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Ayarları Aç", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "İzin reddedildi. Devam etmek için lütfen bütün izinleri verin.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "{permissionType} İzni Zorunlu", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "En iyi deneyim için {permissionType} izni zorunludur. Bunu ayarlardan daha sonra değiştirebilirsiniz.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Varsayılan Klasörü Kullan?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Klasör seçilmedi. Varsayılan \"Music\" klasörünü kullanmak ister misiniz?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Varsayılanı Kullan", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "İndirme Konumu", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "iOS'ta indirilenler uygulamanın \"Documents\" dosyasına kaydedilir. Onlara Dosyalar uygulamasından erişebilirsiniz.", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "Uygulama Belgeler Klasörü", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Tavsiye edilen - Dosyalar uygulamasından erişilebilir", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Dosyalar'dan Seç", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "iCloud veya başka konum seç", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "iOS'un sınırlaması: Boş klasörler seçilemiyor. İçinde en az bir dosya bulunan bir klasör seçin.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive desteklenmiyor. Lütfen uygulama Belgeler klasörünü kullanın.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Spotify şarkılarını FLAC olarak indirin", - "@setupDownloadInFlac": { - "description": "App tagline in setup" - }, - "setupStorageGranted": "Depolama İzni Verildi!", - "@setupStorageGranted": { - "description": "Success message for storage permission" - }, - "setupStorageRequired": "Depolama İzni Gerekli", - "@setupStorageRequired": { - "description": "Title when storage permission needed" - }, - "setupStorageDescription": "SpotiFLAC'ın şarkılarınızı kaydetmek için depolama iznine ihtiyacı var.", - "@setupStorageDescription": { - "description": "Explanation for storage permission" - }, - "setupNotificationGranted": "Bildirim İzni Verildi!", - "@setupNotificationGranted": { - "description": "Success message for notification permission" - }, - "setupNotificationEnable": "Bildirimleri Etkinleştir", - "@setupNotificationEnable": { - "description": "Button to enable notifications" - }, - "setupFolderChoose": "İndirilecek Klasörü Seç", - "@setupFolderChoose": { - "description": "Button to choose folder" - }, - "setupFolderDescription": "İndirdiğin şarkıların kaydedileceği klasörü seç.", - "@setupFolderDescription": { - "description": "Explanation for folder selection" - }, - "setupSelectFolder": "Klasör Seç", - "@setupSelectFolder": { - "description": "Button to select folder" - }, - "setupEnableNotifications": "Bildirimleri Etkinleştir", - "@setupEnableNotifications": { - "description": "Button to enable notifications" - }, - "setupNotificationBackgroundDescription": "İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.", - "@setupNotificationBackgroundDescription": { - "description": "Detailed notification explanation" - }, - "setupSkipForNow": "Şimdilik atla", - "@setupSkipForNow": { - "description": "Skip button text" - }, - "setupNext": "Sıradaki", - "@setupNext": { - "description": "Next button text" - }, - "setupGetStarted": "Başla", - "@setupGetStarted": { - "description": "Final setup button" - }, - "setupAllowAccessToManageFiles": "Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.", - "@setupAllowAccessToManageFiles": { - "description": "Instruction for file access permission" - }, - "dialogCancel": "İptal", - "@dialogCancel": { - "description": "Dialog button - cancel action" - }, - "dialogSave": "Kaydet", - "@dialogSave": { - "description": "Dialog button - save changes" - }, - "dialogDelete": "Sil", - "@dialogDelete": { - "description": "Dialog button - delete item" - }, - "dialogRetry": "Yeniden dene", - "@dialogRetry": { - "description": "Dialog button - retry action" - }, - "dialogClear": "Temizle", - "@dialogClear": { - "description": "Dialog button - clear items" - }, - "dialogDone": "Tamamlandı", - "@dialogDone": { - "description": "Dialog button - action completed" - }, - "dialogImport": "İçe aktar", - "@dialogImport": { - "description": "Dialog button - import data" - }, - "dialogDownload": "İndir", - "@dialogDownload": { - "description": "Confirm button in Download All dialog" - }, - "dialogDiscard": "Vazgeç", - "@dialogDiscard": { - "description": "Dialog button - discard changes" - }, - "dialogRemove": "Kaldır", - "@dialogRemove": { - "description": "Dialog button - remove item" - }, - "dialogUninstall": "Kaldır", - "@dialogUninstall": { - "description": "Dialog button - uninstall extension" - }, - "dialogDiscardChanges": "Değişiklikleri İptal Et?", - "@dialogDiscardChanges": { - "description": "Dialog title - unsaved changes warning" - }, - "dialogUnsavedChanges": "Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?", - "@dialogUnsavedChanges": { - "description": "Dialog message - unsaved changes" - }, - "dialogClearAll": "Tümünü Temizle", - "@dialogClearAll": { - "description": "Dialog title - clear all items" - }, - "dialogRemoveExtension": "Eklentiyi Kaldır", - "@dialogRemoveExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogRemoveExtensionMessage": "Bu eklentiyi kaldırmak istediğine emin misin? Bu işlem geri alınamaz.", - "@dialogRemoveExtensionMessage": { - "description": "Dialog message - uninstall confirmation" - }, - "dialogUninstallExtension": "Eklentiyi Kaldır?", - "@dialogUninstallExtension": { - "description": "Dialog title - uninstall extension" - }, - "dialogUninstallExtensionMessage": "{extensionName} eklentisini kaldırmak istediğine emin misin?", - "@dialogUninstallExtensionMessage": { - "description": "Dialog message - uninstall specific extension", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "dialogClearHistoryTitle": "Geçmişi Temizle", - "@dialogClearHistoryTitle": { - "description": "Dialog title - clear download history" - }, - "dialogClearHistoryMessage": "Tüm indirme geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", - "@dialogClearHistoryMessage": { - "description": "Dialog message - clear history confirmation" - }, - "dialogDeleteSelectedTitle": "Seçileni Sil", - "@dialogDeleteSelectedTitle": { - "description": "Dialog title - delete selected items" - }, - "dialogDeleteSelectedMessage": "{count} {count, plural, =1{şarkıyı} other{şarkıyı}} geçmişten silmeye emin misiniz?\n\nBu işlem seçilenleri cihazınızdan da silecektir.", - "@dialogDeleteSelectedMessage": { - "description": "Dialog message - delete selected tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogImportPlaylistTitle": "Çalma listesini içe aktar", - "@dialogImportPlaylistTitle": { - "description": "Dialog title - import CSV playlist" - }, - "dialogImportPlaylistMessage": "CSV'de {count} şarkı bulundu. İndirme kuyruğuna ekle?", - "csvImportTracks": "CSV'den {count} şarkı", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@dialogImportPlaylistMessage": { - "description": "Dialog message - import playlist confirmation", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedToQueue": "\"{trackName}\" kuyruğa eklendi", - "@snackbarAddedToQueue": { - "description": "Snackbar - track added to download queue", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAddedTracksToQueue": "{count} şarkı kuyruğa eklendi", - "@snackbarAddedTracksToQueue": { - "description": "Snackbar - multiple tracks added to queue", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAlreadyDownloaded": "\"{trackName}\" zaten indirilmiş", - "@snackbarAlreadyDownloaded": { - "description": "Snackbar - track already exists", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarAlreadyInLibrary": "\"{trackName}\" kitaplığınızda zaten mevcut", - "@snackbarAlreadyInLibrary": { - "description": "Snackbar - track already exists in local library", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "snackbarHistoryCleared": "Geçmiş temizlendi", - "@snackbarHistoryCleared": { - "description": "Snackbar - history deleted" - }, - "snackbarCredentialsSaved": "Kimlik bilgileri kaydedildi", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Kimlik bilgileri temizlendi", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "{count} {count, plural, =1{şarkı} other{şarkı}} silindi", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Dosya açılamadı: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Lütfen tüm alanları doldurun", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Kuyruğu Görüntüle", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "{platform} Bağlantı panoya kopyalandı", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "Dosya bulunamadı", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Lütfen .spotiflac-ext dosyasını seçin", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Sağlayıcı önceliği kaydedildi", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Meta veri sağlayıcı önceliği kaydedildi", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "{extensionName} yüklendi.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarExtensionUpdated": "{extensionName} güncellendi.", - "@snackbarExtensionUpdated": { - "description": "Snackbar - extension updated successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "snackbarFailedToInstall": "Eklenti yüklenirken hata oluştu", - "@snackbarFailedToInstall": { - "description": "Snackbar - extension install error" - }, - "snackbarFailedToUpdate": "Eklenti güncellenirken hata oluştu", - "@snackbarFailedToUpdate": { - "description": "Snackbar - extension update error" - }, - "errorRateLimited": "Aşırı istek gönderildi", - "@errorRateLimited": { - "description": "Error title - too many requests" - }, - "errorRateLimitedMessage": "Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.", - "@errorRateLimitedMessage": { - "description": "Error message - rate limit explanation" - }, - "errorNoTracksFound": "Parça bulunamadı", - "@errorNoTracksFound": { - "description": "Error - search returned no results" - }, - "errorUrlNotRecognized": "Bağlantı tanınamadı", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "Bu bağlantı desteklenmiyor. URL'nin doğru olduğundan ve uyumlu bir uzantının yüklü olduğundan emin olun.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Bu bağlantıdan içerik yüklenemedi. Lütfen tekrar deneyin.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "{item} yüklenemedi: Eksik eklenti kaynağı", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Duraklat", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Devam et", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Vazgeç", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Tümünü Seç", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Seçimi kaldır", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Özellikleri kaldır", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Özellikleri kaydet", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "{count} seçildi", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Tüm parçalar seçildi", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Silinecek parçaları seçin", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Meta verileri alınıyor... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "CSV okunuyor...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Şarkılar", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Sanatçılar", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Albümler", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Çalma Listeleri", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Sonuçları Sırala", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "Varsayılan", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Başlık (A-Z)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Başlık (Z-A)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Sanatçı (A-Z)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Sanatçı (Z-A)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Süre (en kısa)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Süre (en uzun)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Yayın Tarihi (En eski)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Yayın Tarihi (En yeni)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "Oynat", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Dosya adı formatı", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Gelişmiş etiketleri göster", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Parça numarası tamamlama ve tarih desenleri için biçimlendirilmiş etiketleri etkinleştir", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "Organizasyon yok", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "Çalma Listesine Göre", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Her çalma listesi için ayrı klasör", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "Sanatçıya Göre", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "Albüme Göre", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Sanatçı/Albüm", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "İndirilenleri klasörlerle organize et", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Her şey indirilen dosyasına kaydedilecek", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Her sanatçı için ayrı klasör", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Her albüm için ayrı klasör", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Sanatçı klasörlerinin içinde Albüm klasörleri", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Güncelleme Mevcut", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Daha Sonra", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "İndirme başlıyor...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "İndirme başarısız", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Güncelleme indirilemedi", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Yeni bir sürüm hazır", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "updateCurrent": "Şimdiki", - "@updateCurrent": { - "description": "Label for current version" - }, - "updateNew": "Yeni", - "@updateNew": { - "description": "Label for new version" - }, - "updateDownloading": "İndiriliyor...", - "@updateDownloading": { - "description": "Update status - downloading" - }, - "updateWhatsNew": "Yenilikler", - "@updateWhatsNew": { - "description": "Changelog section title" - }, - "updateDownloadInstall": "İndir & Yükle", - "@updateDownloadInstall": { - "description": "Update button - download and install" - }, - "updateDontRemind": "Bir daha sorma", - "@updateDontRemind": { - "description": "Update button - skip this version" - }, - "providerPriorityTitle": "İndirme hizmetleri öncelik sırası", - "@providerPriorityTitle": { - "description": "Provider priority page title" - }, - "providerPriorityDescription": "İndirme hizmetlerini sıralamak için kaydır. Uygulama şarkı indirirken hizmetleri yukarıdan aşağıya doğru deneyecektir.", - "@providerPriorityDescription": { - "description": "Provider priority page description" - }, - "providerPriorityInfo": "Eğer bir şarkı ilk hizmette mevcut değilse uygulama otomatik olarak bir sonrakini deneyecektir.", - "@providerPriorityInfo": { - "description": "Info tip about fallback behavior" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Eklenti", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Meta Veri Önceliği", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Meta veri sağlayıcılarını yeniden sıralamak için sürükleyin. Uygulama, parça ararken ve meta verileri alırken sağlayıcıları yukarıdan aşağıya doğru deneyecektir.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer'da istek sınırı yoktur ve birincil olarak önerilir. Spotify, çok sayıda istekten sonra hız sınırlaması uygulayabilir.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "İstek sınırı yok", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Hız sınırlaması uygulanabilir", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "logTitle": "Kayıtlar", - "@logTitle": { - "description": "Logs screen title" - }, - "logCopied": "Kayıtlar panoya kopyalandı", - "@logCopied": { - "description": "Snackbar - logs copied" - }, - "logSearchHint": "Kayıtları Ara...", - "@logSearchHint": { - "description": "Log search placeholder" - }, - "logFilterLevel": "Seviye", - "@logFilterLevel": { - "description": "Filter by log level" - }, - "logFilterSection": "Filtre", - "@logFilterSection": { - "description": "Filter section title" - }, - "logShareLogs": "Kayıtları paylaş", - "@logShareLogs": { - "description": "Share button tooltip" - }, - "logClearLogs": "Kayıtları temizle", - "@logClearLogs": { - "description": "Clear button tooltip" - }, - "logClearLogsTitle": "Kayıtları temizle", - "@logClearLogsTitle": { - "description": "Clear logs dialog title" + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "Tüm kayıtları temizlemek istediğinize emin misiniz?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "Günlükleri önem derecesine göre filtrele", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "Henüz kayıt yok", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Uygulamayı kullandıkça günlükler burada görünecektir", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "Kayıtlar ({count} filtrelendi)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "Kayıtlar ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Spotify Kimlik Bilgileri", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Kendi Spotify uygulama kotanızı kullanmak için Client ID ve Secret girin.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Müşteri Kimliği", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Client ID yapıştır", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Müşteri Sırrı", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Client Secret yapıştır", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "channelStable": "Kararlı", - "@channelStable": { - "description": "Update channel - stable releases" - }, - "channelPreview": "Önizleme", - "@channelPreview": { - "description": "Update channel - beta/preview releases" - }, - "sectionSearchSource": "Arama Kaynağı", - "@sectionSearchSource": { - "description": "Settings section header" - }, - "sectionDownload": "İndir", - "@sectionDownload": { - "description": "Settings section header" - }, - "sectionPerformance": "Performans", - "@sectionPerformance": { - "description": "Settings section header" - }, - "sectionApp": "Uygulama", - "@sectionApp": { - "description": "Settings section header" - }, - "sectionData": "Veri", - "@sectionData": { - "description": "Settings section header" - }, - "sectionDebug": "Hata ayıklama", - "@sectionDebug": { - "description": "Settings section header" - }, - "sectionService": "Servis", - "@sectionService": { - "description": "Settings section header" - }, - "sectionAudioQuality": "Ses Kalitesi", - "@sectionAudioQuality": { - "description": "Settings section header" - }, - "sectionFileSettings": "Dosya Ayarları", - "@sectionFileSettings": { - "description": "Settings section header" - }, - "sectionLyrics": "Şarkı sözleri", - "@sectionLyrics": { - "description": "Settings section header" - }, - "lyricsMode": "Şarkı Sözü Modu", - "@lyricsMode": { - "description": "Setting - how to save lyrics" - }, - "lyricsModeDescription": "Şarkı sözlerinin indirmelerinizle birlikte nasıl kaydedileceğini seçin", - "@lyricsModeDescription": { - "description": "Lyrics mode picker description" - }, - "lyricsModeEmbed": "Dosyaya göm", - "@lyricsModeEmbed": { - "description": "Lyrics mode option - embed in audio file" - }, - "lyricsModeEmbedSubtitle": "Şarkı sözleri FLAC meta verilerinin içinde saklanır", - "@lyricsModeEmbedSubtitle": { - "description": "Subtitle for embed option" - }, - "lyricsModeExternal": "Harici .lrc dosyası", - "@lyricsModeExternal": { - "description": "Lyrics mode option - separate LRC file" - }, - "lyricsModeExternalSubtitle": "Samsung Music gibi oynatıcılar için ayrı .lrc dosyası", - "@lyricsModeExternalSubtitle": { - "description": "Subtitle for external option" - }, - "lyricsModeBoth": "Her ikisi de", - "@lyricsModeBoth": { - "description": "Lyrics mode option - embed and external" - }, - "lyricsModeBothSubtitle": "Hem göm hem de .lrc dosyası olarak kaydet", - "@lyricsModeBothSubtitle": { - "description": "Subtitle for both option" - }, - "sectionColor": "Renk", - "@sectionColor": { - "description": "Settings section header" - }, - "sectionTheme": "Tema", - "@sectionTheme": { - "description": "Settings section header" - }, - "sectionLayout": "Düzen", - "@sectionLayout": { - "description": "Settings section header" - }, - "sectionLanguage": "Dil", - "@sectionLanguage": { - "description": "Settings section header for language" - }, - "appearanceLanguage": "Uygulama Dili", - "@appearanceLanguage": { - "description": "Language setting title" - }, - "settingsAppearanceSubtitle": "Tema, renkler, görünüm", - "@settingsAppearanceSubtitle": { - "description": "Appearance settings description" - }, - "settingsDownloadSubtitle": "Hizmet, kalite, yedekleme", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Yedek plan, meta veriler, şarkı sözleri, kapak resmi", - "@settingsOptionsSubtitle": { - "description": "Options settings description" - }, - "settingsExtensionsSubtitle": "İndirme sağlayıcılarını yönet", - "@settingsExtensionsSubtitle": { - "description": "Extensions settings description" - }, - "settingsLogsSubtitle": "Hata ayıklama için uygulama günlüklerini görüntüle", - "@settingsLogsSubtitle": { - "description": "Logs settings description" - }, - "loadingSharedLink": "Paylaşılan bağlantı yükleniyor...", - "@loadingSharedLink": { - "description": "Status when opening shared URL" - }, - "pressBackAgainToExit": "Çıkmak için tekrar geri basın", - "@pressBackAgainToExit": { - "description": "Exit confirmation message" - }, - "downloadAllCount": "Tümünü İndir ({count})", - "@downloadAllCount": { - "description": "Download all button with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tracksCount": "{count, plural, =1{1 parça} other{{count} parça}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Dosya yolunu kopyala", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Cihazdan kaldır", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Şarkı Sözlerini Yükle", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Meta Veri", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Dosya Bilgisi", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Şarkı Sözleri", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "Dosya bulunamadı", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Deezer'da aç", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Spotify'da aç", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Parça adı", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Sanatçı", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Albüm sanatçısı", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Albüm", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Parça numarası", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Disk numarası", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Süre", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Ses kalitesi", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "trackReleaseDate": "Yayın tarihi", - "@trackReleaseDate": { - "description": "Metadata label - release date" - }, - "trackGenre": "Tür", - "@trackGenre": { - "description": "Metadata label - music genre" - }, - "trackLabel": "Etiket / Müzik Şirketi", - "@trackLabel": { - "description": "Metadata label - record label" - }, - "trackCopyright": "Telif Hakkı", - "@trackCopyright": { - "description": "Metadata label - copyright information" - }, - "trackDownloaded": "İndirildi", - "@trackDownloaded": { - "description": "Metadata label - download date" - }, - "trackCopyLyrics": "Şarkı sözlerini kopyala", - "@trackCopyLyrics": { - "description": "Action - copy lyrics to clipboard" - }, - "trackLyricsNotAvailable": "Bu parça için şarkı sözü mevcut değil", - "@trackLyricsNotAvailable": { - "description": "Message when lyrics not found" - }, - "trackLyricsTimeout": "İstek zaman aşımına uğradı. Daha sonra tekrar deneyin.", - "@trackLyricsTimeout": { - "description": "Message when lyrics request times out" - }, - "trackLyricsLoadFailed": "Şarkı sözleri yüklenemedi", - "@trackLyricsLoadFailed": { - "description": "Message when lyrics loading fails" - }, - "trackEmbedLyrics": "Şarkı Sözlerini Göm", - "@trackEmbedLyrics": { - "description": "Action - embed lyrics into audio file" - }, - "trackLyricsEmbedded": "Şarkı sözleri başarıyla gömüldü", - "@trackLyricsEmbedded": { - "description": "Snackbar - lyrics saved to file" - }, - "trackInstrumental": "Enstrümantal parça", - "@trackInstrumental": { - "description": "Message when track is instrumental (no lyrics)" - }, - "trackCopiedToClipboard": "Panoya kopyalandı", - "@trackCopiedToClipboard": { - "description": "Snackbar - content copied" - }, - "trackDeleteConfirmTitle": "Cihazdan kaldırılsın mı?", - "@trackDeleteConfirmTitle": { - "description": "Delete confirmation title" - }, - "trackDeleteConfirmMessage": "Bu işlem, indirilen dosyayı kalıcı olarak silecek ve geçmişinizden kaldıracaktır.", - "@trackDeleteConfirmMessage": { - "description": "Delete confirmation message" - }, - "dateToday": "Bugün", - "@dateToday": { - "description": "Relative date - today" - }, - "dateYesterday": "Dün", - "@dateYesterday": { - "description": "Relative date - yesterday" - }, - "dateDaysAgo": "{count} gün önce", - "@dateDaysAgo": { - "description": "Relative date - days ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateWeeksAgo": "{count} hafta önce", - "@dateWeeksAgo": { - "description": "Relative date - weeks ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dateMonthsAgo": "{count} ay önce", - "@dateMonthsAgo": { - "description": "Relative date - months ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "storeFilterAll": "Tümü", - "@storeFilterAll": { - "description": "Store filter - all extensions" - }, - "storeFilterMetadata": "Meta Veri", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "İndir", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Araç", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Şarkı Sözleri", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Entegrasyon", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Filtreleri temizle", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Uzantı Deposu Ekle", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" + "cacheCleanupUnused": "Cleanup unused data", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "storeAddRepoDescription": "Uzantılara göz atmak ve yüklemek için registry.json dosyası içeren bir GitHub depo URL'si girin.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "Depo URL'si", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "örn. https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Depo Ekle", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Depoyu değiştir", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Uzantı Deposu", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Mevcut depo:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "Yeni Depo URL'si", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Depo yüklenemedi", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "Uygun uzantı yok", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "Uzantı bulunamadı", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Oluşturan", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "Kimlik", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Hata", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Özellikler", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Meta Veri Sağlayıcı", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "İndirme Sağlayıcı", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Şarkı Sözü Sağlayıcı", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "URL İşleyici", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Kalite Seçenekleri", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Son İşlem Kancaları", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "İzinler", - "@extensionPermissions": { - "description": "Section header - required permissions" - }, - "extensionSettings": "Ayarlar", - "@extensionSettings": { - "description": "Section header - extension settings" - }, - "extensionRemoveButton": "Uzantıyı Kaldır", - "@extensionRemoveButton": { - "description": "Button to uninstall extension" - }, - "extensionUpdated": "Güncellendi", - "@extensionUpdated": { - "description": "Extension detail - last update" - }, - "extensionMinAppVersion": "Minimum Uygulama Sürümü", - "@extensionMinAppVersion": { - "description": "Extension detail - minimum app version" - }, - "extensionCustomTrackMatching": "Özel Parça Eşleştirme", - "@extensionCustomTrackMatching": { - "description": "Capability - custom track matching algorithm" - }, - "extensionPostProcessing": "Son İşlem", - "@extensionPostProcessing": { - "description": "Capability - post-download processing" - }, - "extensionHooksAvailable": "{count} kanca kullanılabilir", - "@extensionHooksAvailable": { - "description": "Post-processing hooks count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionPatternsCount": "{count} desen", - "@extensionPatternsCount": { - "description": "URL patterns count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "extensionStrategy": "Strateji: {strategy}", - "@extensionStrategy": { - "description": "Track matching strategy name", - "placeholders": { - "strategy": { - "type": "String" - } - } - }, - "extensionsProviderPrioritySection": "Sağlayıcı Önceliği", - "@extensionsProviderPrioritySection": { - "description": "Section header - provider priority" - }, - "extensionsInstalledSection": "Kurulu uzantılar", - "@extensionsInstalledSection": { - "description": "Section header - installed extensions" - }, - "extensionsNoExtensions": "Hiçbir eklenti kurulmamış", - "@extensionsNoExtensions": { - "description": "Empty state - no extensions" - }, - "extensionsNoExtensionsSubtitle": "Yeni sağlayıcılar eklemek için .spotiflac-ext dosyalarını yükleyin", - "@extensionsNoExtensionsSubtitle": { - "description": "Empty state subtitle" - }, - "extensionsInstallButton": "Uzantı Yükle", - "@extensionsInstallButton": { - "description": "Button to install extension from file" - }, - "extensionsInfoTip": "Uzantılar yeni meta veri ve indirme sağlayıcıları ekleyebilir. Yalnızca güvenilir kaynaklardan gelen uzantıları yükleyin.", - "@extensionsInfoTip": { - "description": "Security warning about extensions" - }, - "extensionsInstalledSuccess": "Uzantı başarıyla yüklendi", - "@extensionsInstalledSuccess": { - "description": "Success message after install" - }, - "extensionsDownloadPriority": "İndirme Önceliği", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "İndirme servisi sırasını ayarla", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsNoDownloadProvider": "İndirme sağlayıcısı olan uzantı yok", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Meta Veri Önceliği", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Arama ve meta veri kaynağı sırasını ayarla", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Meta veri sağlayıcısı içeren uzantı bulunamadı", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Arama Sağlayıcısı", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Özel arama içeren uzantı bulunamadı", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Parça aramak için hangi servisin kullanılacağını seçin", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Özel arama", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Uzantı yüklenirken hata oluştu", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC Kayıpsız", - "@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-bit / 96kHz'e kadar", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "Hi-Res FLAC Max", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-bit / 192kHz'e kadar", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "Kayıplı 320kbps", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Kayıplı Format", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Kayıplı 320kbps Formatı", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320kbps", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "En iyi uyumluluk, parça başına ~10 Mb", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256kbps", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "En iyi Opus kalitesi, parça başına ~8 Mb", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128kbps", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "En küçük boyut, parça başına ~4 Mb", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "Gerçek kalite, parçanın servisteki uygunluğuna bağlıdır", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "İndirmeden Önce Sor", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "İndirme Dizini", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Ayrı Single Klasörü", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Albüm Klasör Yapısı", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Albüm klasör yapısını seçin", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Klasörler için Albüm Sanatçısı'nı kullan", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Klasörler için yalnızca birincil sanatçıyı kullan", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Düet sanatçıları klasör adından kaldırılır (örn. Justin Bieber, Quavo → Justin Bieber)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Klasör adı için tam sanatçı dizesi kullanılır", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Kalite seçin", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "İndirme Kaynağı", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "AMOLED Koyu", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Saf siyah arka plan", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Tümünü Temizle", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Tüm indirmeleri temizlemek istediğinizden emin misiniz?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Başarısız indirmeleri otomatik dışa aktar", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Başarısız indirmeleri otomatik olarak TXT dosyasına kaydet", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "İndirme Ağı", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "WiFi + Mobil Veri", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "Yalnızca WiFi", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "İndirmeler için hangi ağın kullanılacağını seçin. Yalnızca WiFi olarak ayarlandığında, mobil veriye geçildiğinde indirmeler duraklatılır.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Sanatçı / Albüm", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Albümler/Sanatçı Adı/Albüm Adı/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Sanatçı / [Yıl] Albüm", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Albümler/Sanatçı Adı/[2005] Albüm Adı/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Yalnızca Albüm", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Albümler/Albüm Adı/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Yıl] Albüm", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Albümler/[2005] Albüm Adı/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Sanatçı / Albüm + Singlelar", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Sanatçı/Albüm/ ve Sanatçı/Singlelar/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Sanatçı / Albüm (Singlelar alt klasörsüz)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Sanatçı/Albüm/ ve Sanatçı/şarkı.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Seçilenleri Sil", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Bu albümden {count} {count, plural, =1{parça} other{parça}} parça silinsin mi?\n\nBu işlem dosyaları depolama alanından da kalıcı olarak silecektir.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "{count} seçildi", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "Tüm parçalar seçildi", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Seçmek için parçalara dokunun", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "{count} {count, plural, =1{parçayı} other{parçayı}} sil", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Silinecek parçaları seçin", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Disk {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "recentTypeArtist": "Sanatçı", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Albüm", - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "recentTypeSong": "Şarkı", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "recentTypePlaylist": "Çalma Listesi", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "recentEmpty": "Henüz son kullanılan öğe yok", - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "recentShowAllDownloads": "Tüm İndirmeleri Göster", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" - }, - "recentPlaylistInfo": "Çalma Listesi: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "discographyDownload": "Diskografiyi İndir", - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "discographyDownloadAll": "Tümünü İndir", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "discographyDownloadAllSubtitle": "{albumCount} yayından {count} parça", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographyAlbumsOnly": "Yalnızca Albümler", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "discographyAlbumsOnlySubtitle": "{albumCount} albümden {count} parça", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySinglesOnly": "Yalnızca Single'lar ve EP'ler", - "@discographySinglesOnly": { - "description": "Option - download only singles" - }, - "discographySinglesOnlySubtitle": "{albumCount} tekliden {count} parça", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySelectAlbums": "Albümleri Seç...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "discographySelectAlbumsSubtitle": "Belirli albümleri veya single'ları seçin", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "Parçalar getiriliyor...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "{total} üzerinden {current} getiriliyor...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} seçildi", - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyDownloadSelected": "Seçilenleri İndir", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "discographyAddedToQueue": "{count} parça kuyruğa eklendi", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} eklendi, {skipped} zaten indirilmiş", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "Kullanılabilir albüm yok", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "Bazı albümler getirilemedi", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "Depolama Erişimi", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "Tüm Dosyalara Erişim", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Herhangi bir klasöre yazabilir", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Yalnızca medya klasörleriyle sınırlı", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Özel klasörlere kaydederken yazma hatalarıyla karşılaşırsanız bunu etkinleştirin. Android 13 ve üzeri, varsayılan olarak belirli dizinlere erişimi kısıtlar.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "İzin reddedildi. Lütfen sistem ayarlarından 'Tüm dosyalara erişim' iznini manuel olarak etkinleştirin.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "Tüm Dosyalara Erişim devre dışı bırakıldı. Uygulama kısıtlı depolama erişimi kullanacak.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "Yerel Kitaplık", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Müziği tara ve kopyaları tespit et", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "Depolama ve Önbellek", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "Boyutu görüntüle ve önbelleğe alınmış verileri temizle", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "Yerel Kitaplık", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryScanSettings": "Tarama Ayarları", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "Yerel Kitaplığı Etkinleştir", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Mevcut müziğinizi tarayın ve takip edin", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "Kitaplık Klasörü", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "Klasör seçmek için dokunun", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Kopya Belirtecini Göster", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Mevcut parçalar aranırken göster", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryAutoScan": "Otomatik Tarama", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Kitaplığınızı yeni dosyalar için otomatik olarak tarayın", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Kapalı", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Her uygulama açılışında", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Günlük", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Haftalık", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Eylemler", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Kitaplığı Tara", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Ses dosyaları için tara", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Önce bir klasör seçin", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Eksik Dosyaları Temizle", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Eski dosya kalıntılarını temizleyin", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Kitaplığı temizle", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Taranan tüm parçaları sil", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Kütüphaneyi temizle", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "Bu işlem, kitaplığınızdaki tüm taranmış parçaları siler. Asıl müzik dosyalarınız silinmez.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "Yerel Kütüphane Hakkında", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "İndirme işlemi sırasında mevcut müzik koleksiyonunuzu tarayarak yinelenen dosyaları tespit eder. FLAC, M4A, MP3, Opus ve OGG formatlarını destekler. Varsa, meta veriler dosya etiketlerinden okunur.", - "@libraryAboutDescription": { - "description": "Description of local library feature" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, "libraryTracksUnit": "{count, plural, =1{parça} other{parçalar}}", "@libraryTracksUnit": { @@ -2370,937 +36,59 @@ } } }, - "libraryLastScanned": "Son tarama tarihi: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "folderOrganizationNone": "Organizasyon yok", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScannedNever": "Asla", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryScanning": "Scanning...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanProgress": "{total} dosyanın {progress}%'si", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "Kütüphanede", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Kütüphaneden {count} adet eksik dosya kaldırıldı", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Kütüphane temizlendi", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Depolama Alanına Erişim Gereklidir", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC, müzik kitaplığınızı tarayabilmek için depolama alanına erişime ihtiyaç duyar. Lütfen ayarlar bölümünden izin verin.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Seçilen klasör mevcut değil", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Downloaded", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Yerel", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "All", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "İndirildi", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Yerel", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Filtreler", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Reset", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Apply", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Source", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Quality", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Hi-Res (24bit)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16bit)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Kayıplı", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Format", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterSort": "Sırala", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "En sonuncu", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "En eski", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "timeJustNow": "Şu anda", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "SpotiFLAC'e hoş geldiniz!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "En sevdiğiniz müzikleri kayıpsız kalitede nasıl indirebileceğinizi öğrenelim. Bu kısa eğitim size temel bilgileri gösterecek.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Spotify, Deezer'dan müzik indirin veya desteklenen herhangi bir URL'yi yapıştırın", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Otomatik meta veri, kapak resmi ve şarkı sözü gömme", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Müzik Bulma", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "İndirmek istediğiniz müziği bulmanın iki kolay yolu vardır.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Müzik İndirme", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Müzik indirmek basit ve hızlıdır. İşte nasıl çalıştığı.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Kitaplığınız", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "İndirdiğiniz tüm müzikler Kitaplık sekmesinde düzenlenir.", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "Kitaplık sekmesinden indirme ilerlemesini ve kuyruğu görüntüleyin", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Müzik çalarınızla oynatmak için herhangi bir parçaya dokunun", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Daha iyi göz atmak için liste ve ızgara görünümü arasında geçiş yapın", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Uzantılar", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Topluluk uzantılarıyla uygulamanın yeteneklerini artırın.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Faydalı uzantıları keşfetmek için Depo sekmesine göz atın", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Yeni indirme sağlayıcıları veya arama kaynakları ekleyin", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Şarkı sözleri, gelişmiş meta veriler ve daha fazla özellik edinin", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Deneyiminizi Özelleştirin", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Uygulamayı Ayarlar'dan tercihlerinize göre kişiselleştirin.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "İndirme konumunu ve klasör düzenini değiştirin", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Varsayılan ses kalitesi ve format tercihlerini ayarlayın", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Uygulama temasını ve görünümünü özelleştirin", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "Her şey hazır! En sevdiğiniz müzikleri hemen indirmeye başlayın.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Tam Taramayı Zorla", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Önbelleği yok sayarak tüm dosyaları yeniden tarayın", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Yetim kalmış indirmeleri temizle", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Artık mevcut olmayan dosyalar için geçmiş kayıtlarını kaldırın", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Geçmişten {count} adet yetim kayıt kaldırıldı", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "Hiçbir yetim kayıt bulunamadı", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Depolama & Önbellek", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Önbellek genel bakışı", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Önbelleği temizlemek, indirilen müzik dosyalarını silmeyecektir.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Estimated cache usage: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Önbelleğe alınmış veriler", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Bakım", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "Uygulama önbellek dizini", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP yanıtları, WebView verileri ve diğer geçici uygulama verileri.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Geçici dizin", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "İndirmelerden ve ses dönüştürme işlemlerinden kaynaklanan geçici dosyalar.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "Kapak resmi önbelleği", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "cacheCoverImageDesc": "Albüm ve şarkı kapak resimleri indirildi. Görüntülendikten sonra tekrar indirilecektir.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "cacheLibraryCover": "Kütüphane kapağı önbelleği", - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "cacheLibraryCoverDesc": "Kapak resmi yerel müzik dosyalarından çıkarıldı. Bir sonraki taramada yeniden çıkarılacaktır.", - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "cacheExploreFeed": "Besleme önbelleğini keşfedin", - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "cacheExploreFeedDesc": "Sekme içeriğini keşfedin (yeni çıkanlar, trendler). Bir sonraki ziyaretinizde yenilenecektir.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "cacheTrackLookup": "İzleme arama önbelleği", - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "cacheNoData": "No cached data", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "cacheSizeWithFiles": "{size} in {count} files", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheEntries": "{count} entries", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheClearSuccess": "Cleared: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Clear cache?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearAllConfirmTitle": "Clear all cache?", - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "cacheClearAll": "Clear all cache", - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "cacheCleanupUnused": "Cleanup unused data", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" - }, - "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "cacheRefreshStats": "Refresh stats", - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "trackSaveCoverArt": "Save Cover Art", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "trackSaveCoverArtSubtitle": "Save album art as .jpg file", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Save Lyrics (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Saving lyrics...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "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" - }, - "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" - }, - "trackReEnrichSuccess": "Metadata re-enriched successfully", - "@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" - } - } - }, - "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "No reliable online matches found for the selection", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "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" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Convert Audio", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Target Format", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Bitrate", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "trackConvertConfirmTitle": "Dönüştürmeyi Onayla", "@trackConvertConfirmTitle": { "description": "Confirmation dialog title" }, - "trackConvertConfirmMessage": "{sourceFormat} formatından {targetFormat} formatına {bitrate} hızında dönüştürülsün mü?\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "trackConvertConfirmMessageLossless": "{sourceFormat} formatından {targetFormat} formatına dönüştürmek ister misiniz? (Kayıpsız — kalite kaybı yok)\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - } - } - }, - "trackConvertLosslessHint": "Kayıpsız dönüştürme — kalite kaybı yok", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "trackConvertConverting": "Converting audio...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "trackConvertSuccess": "{format} formatına başarıyla dönüştürüldü", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "trackConvertFailed": "Dönüştürme başarısız oldu", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "cueSplitTitle": "Bölünmüş CUE Sayfası", - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "cueSplitSubtitle": "CUE+FLAC dosyalarını ayrı parçalara bölün", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Album: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "cueSplitArtist": "Artist: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "cueSplitTrackCount": "{count} parça", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "Bölünmüş CUE Albümü", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "\"{album}\" albümünü {count} adet ayrı FLAC dosyasına bölmek ister misiniz?\n\nDosyalar aynı dizine kaydedilecektir.", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "Kapalı", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "CUE sayfası bölünüyor... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "Otomatik geri dönüş sırasında hangi yüklü indirme uzantılarının kullanılabileceğini seçin.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "{count} parçaya başarıyla bölündü", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { "count": { "type": "int" } } }, - "cueSplitFailed": "CUE bölme işlemi başarısız oldu", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "cueSplitNoAudioFile": "Bu CUE sayfası için ses dosyası bulunamadı", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "cueSplitButton": "Parçalara Ayrılmış", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "actionCreate": "Create", - "@actionCreate": { - "description": "Generic action button - create" - }, - "collectionFoldersTitle": "My folders", - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "collectionWishlist": "İstek listesi", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "collectionLoved": "Sevilen", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "collectionPlaylists": "Çalma listeleri", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "collectionPlaylist": "Çalma listesi", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "collectionAddToPlaylist": "Add to playlist", - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "collectionCreatePlaylist": "Çalma listesi oluştur", - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "collectionNoPlaylistsYet": "Henüz çalma listesi yok", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "collectionNoPlaylistsSubtitle": "Parçaları kategorize etmeye başlamak için bir çalma listesi oluşturun", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 parça} other{{count} parça}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedToPlaylist": "\"{playlistName}\"e eklendi", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Zaten \"{playlistName}\" içinde", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Playlist created", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "collectionPlaylistNameHint": "Playlist name", - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" - }, - "collectionPlaylistNameRequired": "Çalma listesi adı zorunludur", - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "collectionRenamePlaylist": "Çalma listesini yeniden adlandır", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "collectionDeletePlaylist": "Çalma listesini sil", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "collectionDeletePlaylistMessage": "\"{playlistName}\" ve içindeki tüm parçaları silmek mi istiyorsunuz?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Playlist deleted", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Çalma listesinin adı değiştirildi", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "collectionWishlistEmptyTitle": "İstek listesi boş", - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "collectionWishlistEmptySubtitle": "Daha sonra indirmek istediğiniz parçaları kaydetmek için parçaların üzerine + işaretiyle dokunun", - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "collectionLovedEmptyTitle": "Sevilenler klasörü boş", - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "collectionLovedEmptySubtitle": "Favorilerinizi kaydetmek için parçalara beğeni bırakın", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "collectionPlaylistEmptyTitle": "Çalma listesi boş", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "collectionPlaylistEmptySubtitle": "Buraya eklemek istediğiniz herhangi bir parçaya uzun süre basılı tutun +", - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "collectionRemoveFromPlaylist": "Remove from playlist", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "collectionRemoveFromFolder": "Remove from folder", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "collectionRemoved": "\"{trackName}\" removed", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" added to Loved", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "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" - } - } - }, - "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" - }, - "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", @@ -3310,42 +98,102 @@ } } }, - "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", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "No convertible tracks selected", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Batch Convert", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "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", + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "Şarkı", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "Kayıtları paylaş", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "Uzantı Yükle", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "Hiçbir eklenti kurulmamış", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "CUE bölme işlemi başarısız oldu", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Desteklenen bir URL yapıştırın veya isme göre arayın", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "selectionBatchConvertConfirmMessageLossless": "Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", @@ -3358,18 +206,297 @@ } } }, - "selectionBatchConvertProgress": "Converting {current} of {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Yayın Tarihi (En eski)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "I Don't Have Spotify (IDHS) yaratıcısı. Günü kurtaran yedek bağlantı çözücü!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "Renk", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Kapak resmi önbelleği", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Bölünmüş CUE Albümü", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Cleared: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "Cover Art", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "Lütfen .spotiflac-ext dosyasını seçin", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Format", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Select playlists to download", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256kbps", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{albumCount} tekliden {count} parça", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, + "optionsExtensionStore": "Eklenti Deposu", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "Yalnızca Single'lar ve EP'ler", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "Embedding metadata...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "Convert {count} {count, plural, =1{track} other{tracks}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Cover Art", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Şarkı sözleri, gelişmiş meta veriler ve daha fazla özellik edinin", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Telegram Kanalı", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "Son İşlem Kancaları", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "İndir", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "Seçileni Sil", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Kapak Seç", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "Converted {success} of {total} tracks to {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3385,1083 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} downloaded", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "Hi-Res FLAC Max", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "Uygulama", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" - }, - "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", - "@lyricsProvidersDescription": { - "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" - }, - "lyricsProviderSpotifyApiDesc": "Topluluk API'si üzerinden senkronize Spotify sözleri", - "@lyricsProviderSpotifyApiDesc": { - "description": "Description for Spotify Lyrics API provider" - }, - "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, via proxy)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music 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" - }, - "settingsDonateSubtitle": "Buy the developer a coffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "tooltipLoveAll": "Love All", - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" - }, - "tooltipAddToPlaylist": "Çalma listesine ekle", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "snackbarRemovedTracksFromLoved": "Sevilen albümünden {count} parça kaldırıldı", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedTracksToLoved": "Sevilen'e {count} parça eklendi", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogDownloadAllTitle": "Download All", - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "dialogDownloadAllMessage": "{count} parça indirilsin mi?", - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "homeSkipAlreadyDownloaded": "Daha önce indirilmiş şarkıları atla", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "homeGoToAlbum": "Go to Album", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "homeAlbumInfoUnavailable": "Albüm bilgisi mevcut değil", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "snackbarLoadingCueSheet": "CUE sayfası yükleniyor...", - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "snackbarMetadataSaved": "Meta veriler başarıyla kaydedildi", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "snackbarFailedToEmbedLyrics": "Şarkı sözleri eklenemedi", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "snackbarFailedToWriteStorage": "Depolama alanına geri yazma işlemi başarısız oldu", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "snackbarError": "Error: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", - "placeholders": { - "error": { + "type": { "type": "String" } } }, - "snackbarNoActionDefined": "Bu düğme için tanımlanmış bir işlem yok", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "Bu albüm için hiçbir parça bulunamadı", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "Tema", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "İndirdiğiniz parçaları nereye kaydedeceğinizi seçin", - "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "storageModeAppFolder": "Uygulama Klasörü (Önerilir)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "storageModeAppFolderSubtitle": "Varsayılan olarak Müzik/SpotiFLAC klasörüne kaydeder", - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "storageModeSaf": "Özel Klasör (SAF)", - "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "storageModeSafSubtitle": "SD kart dahil herhangi bir klasörü seçin", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadFilenameDescription": "Yer tutucu olarak {artist}, {title}, {album}, {track}, {year}, {date}, {disc} ifadelerini kullanın.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilenameInsertTag": "Etiket eklemek için dokunun:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadSeparateSinglesEnabled": "Single şarkılar ve EP'ler ayrı bir klasöre kaydedildi", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "downloadArtistNameFilters": "Artist Name Filters", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "SongLink Region", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: Include Translation", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Musixmatch Language", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Language code", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Auto", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the 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": "Select fields to fill automatically from online metadata", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "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" - } - } - }, - "queueDownloadedHeader": "Downloaded", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "downloadSingleFilenameFormat": "Single Dosya Adı Formatı", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Single ve EP'ler için dosya adı örneği. Albüm formatıyla aynı etiketleri kullanır.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "optionsDefaultSearchTab": "Varsayılan Arama Sekmesi", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Yeni arama sonuçları için hangi sekmenin önce açılacağını seçin.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsReplayGain": "ReplayGain", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Ses yüksekliğini tara ve ReplayGain etiketlerini göm (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Devre dışı: Ses normalleştirme etiketi yok", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "optionsArtistTagMode": "Sanatçı Etiketi Modu", - "@optionsArtistTagMode": { - "description": "Setting title for how artist metadata is written into files" - }, - "optionsArtistTagModeDescription": "Birden fazla sanatçının gömülü etiketlere nasıl yazılacağını seçin.", - "@optionsArtistTagModeDescription": { - "description": "Bottom-sheet description for artist tag mode setting" - }, - "optionsArtistTagModeJoined": "Birleşik tek değer", - "@optionsArtistTagModeJoined": { - "description": "Artist tag mode option that joins multiple artists into one value" - }, - "optionsArtistTagModeJoinedSubtitle": "Maksimum oynatıcı uyumluluğu için 'Sanatçı A, Sanatçı B' şeklinde tek bir SANATÇI değeri yazın.", - "@optionsArtistTagModeJoinedSubtitle": { - "description": "Subtitle for joined artist tag mode" - }, - "optionsArtistTagModeSplitVorbis": "FLAC/Opus için ayrılmış etiketler", - "@optionsArtistTagModeSplitVorbis": { - "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" - }, - "optionsArtistTagModeSplitVorbisSubtitle": "FLAC ve Opus için her sanatçıya ayrı bir etiket yazın; MP3 ve M4A birleşik kalır.", - "@optionsArtistTagModeSplitVorbisSubtitle": { - "description": "Subtitle for split Vorbis artist tag mode" - }, - "providerPriorityFallbackExtensionsTitle": "Uzantı Yedeği", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Otomatik geri dönüş sırasında hangi yüklü indirme uzantılarının kullanılabileceğini seçin.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Burada yalnızca indirme sağlayıcısı yeteneğine sahip olan ve etkinleştirilmiş uzantılar listelenir.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "trackLyricsNotInFile": "Bu dosyada şarkı sözü bulunamadı", - "@trackLyricsNotInFile": { - "description": "Message when no embedded lyrics in audio file" - }, - "trackFetchOnlineLyrics": "İnternetten Getir", - "@trackFetchOnlineLyrics": { - "description": "Action - fetch lyrics from online providers" - }, - "extensionsFallbackTitle": "Yedekleme Uzantıları", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Hangi yüklü indirme uzantılarının yedekleme olarak kullanılabileceğini seçin", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "libraryFilesUnit": "{count, plural, =1{dosya} other{dosyalar}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryScanFinalizing": "Kütüphane sonlandırılıyor...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryFilterMetadata": "Meta veriler", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Tam meta veriler", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "Herhangi bir meta veri eksik", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Kayıp yıl", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Eksik tür", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Kayıp albüm sanatçısı", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "libraryFilterSortAlbumAsc": "Albüm (A-Z)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Albüm (Z-A)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Tür (A-Z)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Tür (Z-A)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "trackReEnrichFieldsTitle": "Fields to update", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Cover Art", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "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" - }, - "extensionsSearchWith": "Search with {providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Home Feed Provider", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "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": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto 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" - }, - "sortAlphaAsc": "A-Z", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Z-A", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Cancel download?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" added to Wishlist", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Keep", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "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", + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Failed to load album", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Failed to load playlist", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "Parça bulunamadı", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Failed to load artist", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "İndirme hizmetleri öncelik sırası", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Download Progress", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Shows download progress for tracks", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Library Scan", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Shows local library scan progress", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Downloading {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "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" - } - } - }, - "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" - } - } - }, - "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", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "Cihazdan kaldırılsın mı?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Album, Album Artist", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "SD kart dahil herhangi bir klasörü seçin", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4476,132 +653,514 @@ } } }, - "notifUpdateReady": "Update Ready", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Düet sanatçıları klasör adından kaldırılır (örn. Justin Bieber, Quavo → Justin Bieber)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Scanning local library", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "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" - }, - "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" + "setupGetStarted": "Başla", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16bit)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "Düzen", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Fallback Extensions", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" }, - "homeEmptyTitle": "Henüz arama sağlayıcısı yok", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Devam etmek için bir eklenti yükleyin.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Dil Seçin", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Uygulama için tercih ettiğiniz dili seçin. Bunu daha sonra Ayarlar'dan değiştirebilirsiniz.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "Sistem Varsayılanı", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Kaynak: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "source": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "extensionsMetadataPriority": "Meta Veri Önceliği", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "updateCurrent": "Şimdiki", + "@updateCurrent": { + "description": "Label for current version" + }, + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (good for Asian songs)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "{count} {count, plural, =1{şarkıyı} other{şarkıyı}} geçmişten silmeye emin misiniz?\n\nBu işlem seçilenleri cihazınızdan da silecektir.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrich": "Re-enrich", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "Depolama Alanına Erişim Gereklidir", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Tüm indirme geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Şu anda", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Yetim kalmış indirmeleri temizle", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Favori Sanatçılar", + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Çalma listeleri", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "Kayıtlar", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "Uygulama logomuzu yaratmış yetenekli sanatçımız!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "Önizleme", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "Ana sayfa", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "Minimum Uygulama Sürümü", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Converting {current} of {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "Müşteri Kimliği: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Asla", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "Parça numarası", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320kbps", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "Katkıda Bulunanlar", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Depolama", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Ses", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "Diğer kullanıcılarla sohbet et", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "All playlists selected", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Spotify/Deezer track ID lookups. Clearing may slow next few searches.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Bağlantı tanınamadı", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Favorilerinizi kaydetmek için parçalara beğeni bırakın", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "İstek sınırı yok", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "Meta Veri", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Remove from Loved", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Failed to load album", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Android'i Açık Tutun", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "Client ID yapıştır", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "Arama Kaynağı", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "Tüm Dosyalara Erişim", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, "extensionsInstalledCount": "{count} uzantı başarıyla yüklendi", "@extensionsInstalledCount": { "description": "Success message after installing multiple extensions", @@ -4612,6 +1171,3228 @@ } } }, + "snackbarFailedToEmbedLyrics": "Şarkı sözleri eklenemedi", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "ReplayGain", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Albüm ve şarkı kapak resimleri indirildi. Görüntülendikten sonra tekrar indirilecektir.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "Tümünü Temizle", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Klasör adı için tam sanatçı dizesi kullanılır", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Remove from folder", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "Meta Veri", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Tür (Z-A)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "Dosya bulunamadı", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer'da istek sınırı yoktur ve birincil olarak önerilir. Spotify, çok sayıda istekten sonra hız sınırlaması uygulayabilir.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "PC kaynak kodu", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Auto-fill from online", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "{count} {count, plural, =1{şarkı} other{şarkı}} silindi", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Open-source synced lyrics database", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "{platform} Bağlantı panoya kopyalandı", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "{total} üzerinden {current} getiriliyor...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "Hizmet", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "{count} parça kuyruğa eklendi", + "cueSplitTrackCount": "{count} parça", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Çalma listesini içe aktar", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Yerel Kitaplık", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Yayın Tarihi (En yeni)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "Single'lar ve EP'ler", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Uzantı Yedeği", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Çalma Listesi: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Album: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "Detaylı Günlükleme", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "En küçük boyut, parça başına ~4 Mb", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Eylemler", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "Klasör seçilmedi. Varsayılan \"Music\" klasörünü kullanmak ister misiniz?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "Failed: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Faydalı uzantıları keşfetmek için Depo sekmesine göz atın", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Extension providers are required", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Albüm (A-Z)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Word-by-word synced lyrics (via proxy)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "Seçenekler", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "Güncelleme indirilemedi", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Estimated cache usage: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "Yeniden dene", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Müzik çalarınızla oynatmak için herhangi bir parçaya dokunun", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "Seçimi kaldır", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "Desteklenen linkler: Şarkı, Albüm, Çalma Listesi, Sanatçı linkleri", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Çalma listesi boş", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "En sonuncu", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "Her şey indirilen dosyasına kaydedilecek", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "Albümler", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Yinelenenler", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "cacheSectionMaintenance": "Bakım", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-bit / 192kHz'e kadar", + "snackbarRemovedTracksFromLoved": "Sevilen albümünden {count} parça kaldırıldı", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "Sanatçı/Albüm", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "Dosya açılamadı: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "Zorunlu - değiştirmek için tıkla", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "Bu parça için şarkı sözü mevcut değil", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "Araç", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "\"{playlistName}\"e eklendi", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Clear cache?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Yıl] Albüm", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Depolama & Önbellek", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "Meta veri sağlayıcısı içeren uzantı bulunamadı", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Başlık (Z-A)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Audio Quality Analysis", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16-bit / 44.1kHz", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Kütüphane sonlandırılıyor...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Diğerlerini dene", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "Mobil versiyon geliştiricisi", + "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Daha önce indirilmiş şarkıları atla", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "Kaldır", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Çalma listesini sil", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "İndirme", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "Sanatçılar", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "URL İşleyici", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Gelişmiş", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} minutes ago}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "Sistem Varsayılanı", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} entries", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "Arama ve meta veri kaynağı sırasını ayarla", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Silinecek parçaları seçin", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "İndirme konumunu ve klasör düzenini değiştirin", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Yalnızca medya klasörleriyle sınırlı", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "İndirme", + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "Silinecek parçaları seçin", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "Etiket / Müzik Şirketi", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "İptal", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "Bildirimleri Etkinleştir", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "Oluşturan", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "Dosya adı formatı", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "Arama geçmişi...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "İndirmelerden ve ses dönüştürme işlemlerinden kaynaklanan geçici dosyalar.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "Şarkı Sözlerini Göm", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "Client Secret yapıştır", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "Geçmiş temizlendi", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "Şarkı Sözü Sağlayıcı", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "Tümü", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Müzik Bulma", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Spotify'da aç", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Downloaded", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Bazı albümler getirilemedi", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 parça} other{{count} parça}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Parça veya albüm adına göre arama yapmak için kullanılan hizmet", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Downloading ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "Ses kalitesi", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Kütüphaneden {count} adet eksik dosya kaldırıldı", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "Henüz favori sanatçım yok", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "Sevilen'e {count} parça eklendi", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "This will cancel the active download for \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "Boyutu görüntüle ve önbelleğe alınmış verileri temizle", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} tracks indexed", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Albümleri Seç...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Müzik meta verilerini arayın, uzantıları yönetin ve kütüphanenizi düzenleyin.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "Özel Parça Eşleştirme", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "Özellikler", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Fetch and save lyrics as .lrc file", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Kayıplı 320kbps Formatı", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Search metadata online and embed into file", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Müzik indirmek basit ve hızlıdır. İşte nasıl çalıştığı.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "\"{playlistName}\" ve içindeki tüm parçaları silmek mi istiyorsunuz?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Metadata re-enriched successfully", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "\"{trackName}\" kuyruğa eklendi", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Her uygulama açılışında", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Channels", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "Liste", + "updateDownloadInstall": "İndir & Yükle", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Başlık (A-Z)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" removed from Loved", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "Ses Kalitesi", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "{format} formatına başarıyla dönüştürüldü", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "{extensionName} eklentisini kaldırmak istediğine emin misin?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "Güncelle", + "libraryFilterMetadataMissingAny": "Herhangi bir meta veri eksik", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Select fields to fill automatically from online metadata", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "SongLink Region", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Search online matches for the selected tracks and queue FLAC downloads.\n\nExisting files will not be modified or deleted.\n\nOnly high-confidence matches are queued automatically.\n\n{count} selected", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Çalma listesine ekle", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "İzinler", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "Duyurular ve güncellemeler", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "Zaten \"{playlistName}\" içinde", + "discographyAlbumsOnlySubtitle": "{albumCount} albümden {count} parça", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "Bildirimleri Etkinleştir", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "Tema, renkler, görünüm", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "Oynat", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "İndirme işlemi sırasında mevcut müzik koleksiyonunuzu tarayarak yinelenen dosyaları tespit eder. FLAC, M4A, MP3, Opus ve OGG formatlarını destekler. Varsa, meta veriler dosya etiketlerinden okunur.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "İndirmeden Önce Sor", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "Enstrümantal parça", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Skip Duplicate Downloads", + "libraryFilterSortOldest": "En eski", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "Şimdilik atla", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "Yeni Depo URL'si", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "This will clear cached data for {target}. Downloaded music files will not be deleted.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "Oynat", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "Güncelleme Kanalı", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "Başarısız indirmeleri otomatik olarak TXT dosyasına kaydet", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Sanatçı (A-Z)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Album Artist", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "No reliable online matches found for the selection", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Deezer'da aç", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "iCloud veya başka konum seç", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "Aylık {count} dinleyici", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Önbelleğe alınmış veriler", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "İndirme tamamlandı", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "Single şarkılar ve EP'ler ayrı bir klasöre kaydedildi", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "Uygulama Belgeler Klasörü", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "Depo yüklenemedi", + "settingsDownloadNetwork": "İndirme Ağı", + "metadataSaveFailedStorage": "Failed to write metadata back to storage", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Birleşik tek değer", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Sanatçı (Z-A)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Hizmet, kalite, yedekleme", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Son tarama tarihi: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "iOS'un sınırlaması: Boş klasörler seçilemiyor. İçinde en az bir dosya bulunan bir klasör seçin.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "Yeni", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "İndirme sağlayıcılarını yönet", + "sortAlphaAsc": "A-Z", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Tümünü Seç", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "Albümler/Sanatçı Adı/[2005] Albüm Adı/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Parçalar getiriliyor...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "No album downloads", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "Hata", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Enabled ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Downloading {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "Yayın tarihi", + "discographySelectedCount": "{count} seçildi", + "collectionArtistCount": "{count, plural, =1{1 sanatçı} other{{count} sanatçı}}", + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "updateStartingDownload": "İndirme başlıyor...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "Disk numarası", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "Kullanılan eklenti: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Otomatik meta veri, kapak resmi ve şarkı sözü gömme", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "Hiçbir yetim kayıt bulunamadı", + "discographySkippedDownloaded": "{added} eklendi, {skipped} zaten indirilmiş", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Hata: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "You have unsaved changes that will be lost.", + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "{sourceFormat} formatından {targetFormat} formatına dönüştürmek ister misiniz? (Kayıpsız — kalite kaybı yok)\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", + "discographyAlbumsOnly": "Yalnızca Albümler", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Hangi yüklü indirme uzantılarının yedekleme olarak kullanılabileceğini seçin", + "aboutSocial": "Sosyal ağlar", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Nyquist", + "trackCoverSelected": "Seçili kapak", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "Henüz arama sağlayıcısı yok", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "Kuruldu", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Mevcut parçalar aranırken göster", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "İndir", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "Şarkı sözleri yüklenemedi", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "İzin reddedildi. Devam etmek için lütfen bütün izinleri verin.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "Yalnızca WiFi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} güncellendi.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Devam etmek için bir eklenti yükleyin.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Müzik İndirme", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Yedek plan, meta veriler, şarkı sözleri, kapak resmi", + "navLibrary": "Kitaplığın", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "All", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "Uygun uzantı yok", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "Önizleme sürümleri hatalar veya tamamlanmamış özellikler içerebilir", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Library scan complete", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "Yeni sağlayıcılar eklemek için .spotiflac-ext dosyalarını yükleyin", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "Özel teşekkür", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "Kur", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "Albümler", + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Parça numarası tamamlama ve tarih desenleri için biçimlendirilmiş etiketleri etkinleştir", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "Kayıtlar ({count} filtrelendi)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Depo Ekle", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "Sorun bildir", + "snackbarFailedToWriteStorage": "Depolama alanına geri yazma işlemi başarısız oldu", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "allFilesAccessDisabledMessage": "Tüm Dosyalara Erişim devre dışı bırakıldı. Uygulama kısıtlı depolama erişimi kullanacak.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Language code", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?", + "setupChooseFromFiles": "Dosyalar'dan Seç", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" removed from Wishlist", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "Uzantı başarıyla yüklendi", + "progressReadingCsv": "CSV okunuyor...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Sürümler", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "Default Search", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Maksimum oynatıcı uyumluluğu için 'Sanatçı A, Sanatçı B' şeklinde tek bir SANATÇI değeri yazın.", + "downloadLossy320": "Kayıplı 320kbps", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Queue FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Provider Options", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "No download history", + "optionsTitle": "Seçenekler", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "Temizle", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "Özel klasörlere kaydederken yazma hatalarıyla karşılaşırsanız bunu etkinleştirin. Android 13 ve üzeri, varsayılan olarak belirli dizinlere erişimi kısıtlar.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "Dönüştürmeyi Onayla", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "Playlist deleted", + "metadataMayRateLimit": "Hız sınırlaması uygulanabilir", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "Love All", + "downloadDirectory": "İndirme Dizini", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "Kitaplık Klasörü", + "optionsMaxQualityCoverSubtitle": "En yüksek kalitedeki albüm kapaklarını indir", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "Sekme içeriğini keşfedin (yeni çıkanlar, trendler). Bir sonraki ziyaretinizde yenilenecektir.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Parçaları kategorize etmeye başlamak için bir çalma listesi oluşturun", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Albüm (Z-A)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Bitrate", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Size", + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "Kayıtlar ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "{sourceFormat} formatından {targetFormat} formatına {bitrate} hızında dönüştürülsün mü?\n\nDönüştürme işleminden sonra orijinal dosya silinecektir.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "Albüme Göre", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "Uygulama", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Devre dışı: Ses normalleştirme etiketi yok", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "storeFilterIntegration": "Entegrasyon", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "İndirildi", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "iOS'ta indirilenler uygulamanın \"Documents\" dosyasına kaydedilir. Onlara Dosyalar uygulamasından erişebilirsiniz.", + "optionsArtistTagModeDescription": "Birden fazla sanatçının gömülü etiketlere nasıl yazılacağını seçin.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "Şarkılar", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "Dosya Ayarları", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "dialogDelete": "Sil", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "İndirdiğiniz tüm müzikler Kitaplık sekmesinde düzenlenir.", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "Kimlik bilgileri kaydedildi", + "cacheCleanupResult": "Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Kayıpsız dönüştürme — kalite kaybı yok", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Çalma listesini yeniden adlandır", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Automatically select the best available", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Uygulama için tercih ettiğiniz dili seçin. Bunu daha sonra Ayarlar'dan değiştirebilirsiniz.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Sanatçı", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Buraya eklemek istediğiniz herhangi bir parçaya uzun süre basılı tutun +", + "artistCompilations": "Derlemeler", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Failed to open folder picker: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Library Scan", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "Dosya Bilgisi", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Kayıp albüm sanatçısı", + "audioAnalysisNoClipping": "No clipping", + "tutorialSettingsDesc": "Uygulamayı Ayarlar'dan tercihlerinize göre kişiselleştirin.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "Samsung Music gibi oynatıcılar için ayrı .lrc dosyası", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Use the default metadata search", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "Şarkı Sözlerini Yükle", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Reset", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Uzantı Deposu", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Kütüphane temizlendi", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Yerel Kitaplık", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "Tüm parçalar seçildi", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 album} other{{count} albums}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Kütüphaneyi temizle", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "Tümünü Temizle", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "{author} tarafından", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Topluluk uzantılarıyla uygulamanın yeteneklerini artırın.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Genre", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "Çalma Listesine Göre", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 track} other{{count} tracks}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Save Cover Art", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "At least one provider must remain enabled", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "Varsayılanı Kullan", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Uygulamayı kullandıkça günlükler burada görünecektir", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Saving lyrics...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Cover art saved to {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Lyrics", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "cleanupOrphanedDownloadsSubtitle": "Artık mevcut olmayan dosyalar için geçmiş kayıtlarını kaldırın", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Download Progress", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "Şarkı Sözleri", + "libraryAutoScan": "Otomatik Tarama", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "Depolama İzni Gerekli", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "Izgara", + "trackConvertConverting": "Converting audio...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "FLAC ve Opus için her sanatçıya ayrı bir etiket yazın; MP3 ve M4A birleşik kalır.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Yeni arama sonuçları için hangi sekmenin önce açılacağını seçin.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "İndirmek istediğiniz müziği bulmanın iki kolay yolu vardır.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} MB • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "This will clear all cache categories on this page. Downloaded music files will not be deleted.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Home Feed Provider", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unknown Album", + "trackCoverCurrent": "Current cover", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "Tamamlandı", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "Depo URL'si", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{total} dosyanın {progress}%'si", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Sevilenler klasörü boş", + "tutorialExtensionsTitle": "Uzantılar", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Süre (en kısa)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "Dosya yolunu kopyala", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Sanatçı/Albüm/ ve Sanatçı/şarkı.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Track #", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "Eklenti güncellenirken hata oluştu", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Already in Library", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Playlist name", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Dil Seçin", + "extensionId": "Kimlik", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "Spotify API değişiklikleri nedeniyle Spotify araması 3 Mart 2026 tarihinde kullanımdan kaldırılacaktır. Lütfen Deezer'a geçiş yapın.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC, müzik kitaplığınızı tarayabilmek için depolama alanına erişime ihtiyaç duyar. Lütfen ayarlar bölümünden izin verin.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Bu eklentiyi kaldırmak istediğine emin misin? Bu işlem geri alınamaz.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "İndirme Konumu", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Add to Loved", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "Uygulama önbellek dizini", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Largest lyrics database (multi-language)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "Son İşlem", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "Kayıtlar panoya kopyalandı", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "Varsayılan Klasörü Kullan?", + "tutorialSearchHint": "Paste or search...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Musixmatch Language", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "Harici .lrc dosyası", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "Kayıtları Ara...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "Müşteri Kimliği", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "gerekli", + "actionCancel": "Vazgeç", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Single Dosya Adı Formatı", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Önbelleği temizlemek, indirilen müzik dosyalarını silmeyecektir.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "No single downloads", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Spotify şarkılarını FLAC olarak indirin", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "Cihazdan kaldır", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Önbellek genel bakışı", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "örn. https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Storage Update Required", + "snackbarMetadataSaved": "Meta veriler başarıyla kaydedildi", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "Kayıtları temizle", + "extensionsCustomSearch": "Özel arama", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} in {count} files", + "actionRemoveCredentials": "Özellikleri kaldır", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "No shareable files found", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "{count} şarkı kuyruğa eklendi", + "downloadFilenameInsertTag": "Etiket eklemek için dokunun:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Library scan failed", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Re-analyze", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{dosya} other{dosyalar}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Önce bir klasör seçin", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Albümler", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Not configured", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "Her çalma listesi için ayrı klasör", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Extension provider", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Convert Audio", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "Şimdilik atla", + "sectionDownload": "İndir", + "downloadLossyOpus256Subtitle": "En iyi Opus kalitesi, parça başına ~8 Mb", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Meta veri sağlayıcılarını yeniden sıralamak için sürükleyin. Uygulama, parça ararken ve meta verileri alırken sağlayıcıları yukarıdan aşağıya doğru deneyecektir.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "Uzantılar yeni meta veri ve indirme sağlayıcıları ekleyebilir. Yalnızca güvenilir kaynaklardan gelen uzantıları yükleyin.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Kayıp yıl", + "extensionsDownloadPriority": "İndirme Önceliği", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Kitaplığı Tara", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Label", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "İndirme başarısız", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "Saf siyah arka plan", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Shows download progress for tracks", + "setupIcloudNotSupported": "iCloud Drive desteklenmiyor. Lütfen uygulama Belgeler klasörünü kullanın.", + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, "extensionsInstallPartialSuccess": "Yüklenen uzantı sayısı: {installed} / {attempted}", "@extensionsInstallPartialSuccess": { "description": "Message when installing multiple extensions partially succeeds", @@ -4626,155 +4407,99 @@ } } }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "En iyi mobil uyumluluk, M4A konteyner", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favori Sanatçılar", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 sanatçı} other{{count} sanatçı}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", "placeholders": { "count": { "type": "int" } } }, - "collectionFavoriteArtistsEmptyTitle": "Henüz favori sanatçım yok", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "notifLibraryScanCancelled": "Library scan cancelled", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" }, - "collectionFavoriteArtistsEmptySubtitle": "Bir sanatçının sayfasındaki kalbe dokunarak onu burada tutmaya devam edin", - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" + "collectionPlaylistNameRequired": "Çalma listesi adı zorunludur", + "libraryCleanupMissingFiles": "Eksik Dosyaları Temizle", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" + "searchSortTitle": "Sonuçları Sırala", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" }, "audioAnalysisLufs": "LUFS", - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" + "extensionsErrorLoading": "Uzantı yüklenirken hata oluştu", + "@actionPaste": { + "description": "Generic action - paste from clipboard" }, - "audioAnalysisClipping": "Clipping", - "@audioAnalysisClipping": { - "description": "Clipping metric label" + "aboutFeatureRequestSubtitle": "Uygulama için yeni özellikler isteyin", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" }, - "audioAnalysisNoClipping": "No clipping", - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" + "@aboutTitle": { + "description": "About page title" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" + "@actionGo": { + "description": "Generic action button label" }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "Güncellendi", + "@extensionUpdated": { + "description": "Extension detail - last update" }, - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" + "downloadLossyFormat": "Kayıplı Format", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" }, - "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", + "snackbarAlreadyInLibrary": "\"{trackName}\" kitaplığınızda zaten mevcut", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" + "trackName": { + "type": "String" } } }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "libraryFilterQuality": "Kalite", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" }, - "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", + "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" } } }, - "searchTracks": "Tracks", - "@searchTracks": { - "description": "Search filter label - tracks" + "@discographyDownload": { + "description": "Button - download artist discography" }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "trackReEnrichFieldsTitle": "Fields to update", + "aboutFeatureRequest": "Özellik isteği", + "downloadSingleFilenameFormatDescription": "Single ve EP'ler için dosya adı örneği. Albüm formatıyla aynı etiketleri kullanır.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" }, - "homeSearchHintProvider": "Search with {providerName}...", - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", + "queueClearAllMessage": "Tüm indirmeleri temizlemek istediğinizden emin misiniz?", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", "placeholders": { - "providerName": { + "time": { "type": "String" } } @@ -4783,253 +4508,519 @@ "@homeImportCsvTooltip": { "description": "Tooltip for importing a CSV file into Home search" }, - "homeChangeSearchProviderTooltip": "Change search provider", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "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" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "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" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "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", + "dialogClearHistoryTitle": "Geçmişi Temizle", "@logClearSearch": { "description": "Tooltip for clearing the log search field" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "dialogImport": "İçe aktar", + "@dialogImport": { + "description": "Dialog button - import data" }, - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" }, - "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" + "notifLibraryScanErrors": "{count} hata", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "Eklentiyi Kaldır?", + "recentTypePlaylist": "Çalma Listesi", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "Bu işlem, indirilen dosyayı kalıcı olarak silecek ve geçmişinizden kaldıracaktır.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "Sistem", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "Sanatçı / Albüm + Singlelar", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Select at least one field to auto-fill", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Besteci", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "Depolama Erişimi Gerekli", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "Sil", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "Meta veri sağlayıcı önceliği kaydedildi", + "setupPermissionRequired": "{permissionType} İzni Zorunlu", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Degraded", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "Bu dosyada şarkı sözü bulunamadı", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Spotify Kimlik Bilgileri", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Artist Name Filters", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Tüm İndirmeleri Göster", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Track & Disc Number", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "setupNext": "Sıradaki", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Günlük", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "trackConvertFailed": "Dönüştürme başarısız oldu", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "Kaldır", + "safMigrationSuccess": "Download folder updated to SAF mode", + "optionsClearHistorySubtitle": "İndirilen bütün şarkıları geçmişten temizle", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "No extensions with home feed", + "optionsUpdateChannelStable": "Sadece stabil sürümler", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "Çalma Listeleri", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "settingsAppearance": "Görünüm", "logIssueRateLimitedLabel": "RATE LIMITED", "@logIssueRateLimitedLabel": { "description": "Diagnostic badge label when the service rate limits requests" }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "Mevcut depo:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" }, - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" + "@trackLyrics": { + "description": "Tab title - lyrics" }, - "logIssueNetworkErrorDescription": "Connection issues detected", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "@backupImportButton": { + "description": "Button to pick a backup file to restore" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "@setupFolderChoose": { + "description": "Button to choose folder" }, - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" + "storageModeAppFolderSubtitle": "Varsayılan olarak Müzik/SpotiFLAC klasörüne kaydeder", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" + "@regionCountryAU": { + "description": "Country name for SongLink region picker" }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" + "libraryFilterApply": "Uygula", + "@libraryFilterApply": { + "description": "Apply filters button" }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "Şarkı Sözleri", + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: Include Translation", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "{count} parçaya başarıyla bölündü", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", "placeholders": { - "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", + "cueSplitArtist": "Artist: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "İstek listesi", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Fetch & Fill", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "İndirme hizmetlerini sıralamak için kaydır. Uygulama şarkı indirirken hizmetleri yukarıdan aşağıya doğru deneyecektir.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Single track downloads will appear here", + "downloadLossyOpus128": "Opus 128kbps", + "downloadUseAlbumArtistForFolders": "Klasörler için Albüm Sanatçısı'nı kullan", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "{count} {count, plural, =1{parçayı} other{parçayı}} sil", + "updateLater": "Daha Sonra", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "Devam et", + "optionsDetailedLoggingOff": "Hata bildirmek için aç", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "storeSearch": "Eklenti ara...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Telegram Grubu", + "lyricsModeBoth": "Her ikisi de", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Kitaplığınızı yeni dosyalar için otomatik olarak tarayın", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Yerel Kitaplığı Etkinleştir", + "queueFlacFindingProgress": "Finding FLAC matches... ({current}/{total})", + "trackConvertTargetFormat": "Target Format", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "Ayarlar", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "İstek zaman aşımına uğradı. Daha sonra tekrar deneyin.", + "settingsExtensions": "Eklentiler", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Downloaded", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "Dinamik Renk", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "credentialsTitle": "Spotify Kimlik Bilgileri", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "Görünüm", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 parça} other{{count} parça}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Clear search", + "trackSaveLyrics": "Save Lyrics (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Download Complete", + "snackbarAlreadyDownloaded": "\"{trackName}\" zaten indirilmiş", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Her albüm için ayrı klasör", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Search for tracks", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Hem göm hem de .lrc dosyası olarak kaydet", + "trackReEnrichFieldExtra": "Genre, Label, Copyright", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "Şarkı sözleri", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "Strateji: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "FLAC/Opus için ayrılmış etiketler", + "extensionsHomeFeedUse": "Use {extensionName} home feed", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Cancel download?", + "updateWhatsNew": "Yenilikler", + "updateNewVersionReady": "Yeni bir sürüm hazır", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Select track", + "libraryClearSubtitle": "Taranan tüm parçaları sil", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Depo", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "Tarama Ayarları", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "Süre", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Search tracks...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Çevrimdışı", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Artist", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "Kütüphanede", + "pressBackAgainToExit": "Çıkmak için tekrar geri basın", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "Bildirim İzni Verildi!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Support Development", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "Bir daha sorma", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Searching online...", + "discographyDownloadSelected": "Seçilenleri İndir", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Filtering...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Choose the default search provider to switch back from an extension", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "\"{album}\" albümünü {count} adet ayrı FLAC dosyasına bölmek ister misiniz?\n\nDosyalar aynı dizine kaydedilecektir.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Geçici dizin", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Kopya Belirtecini Göster", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "Güncelleştirmeleri Denetle", + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "recentTypeAlbum": "Albüm", + "providerExtension": "Eklenti", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "No cover art source available", + "libraryFilterMetadata": "Meta veriler", + "albumFolderArtistYearAlbum": "Sanatçı / [Yıl] Albüm", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5044,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} by {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Kararlı", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Uygulama temasını ve görünümünü özelleştirin", + "setupAppDocumentsFolderSubtitle": "Tavsiye edilen - Dosyalar uygulamasından erişilebilir", + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -5056,6 +5062,320 @@ } } }, + "dialogRemove": "Kaldır", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Download {count} {count, plural, =1{playlist} other{playlists}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "İndirme başarısız olursa diğer hizmetleri dene", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} desen", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "Bu bağlantı desteklenmiyor. URL'nin doğru olduğundan ve uyumlu bir uzantının yüklü olduğundan emin olun.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Sanatçı Etiketi Modu", + "libraryFilterMetadataComplete": "Tam meta veriler", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Ses yüksekliğini tara ve ReplayGain etiketlerini göm (EBU R128)", + "libraryScanning": "Scanning...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Yenile", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "İndirdiğiniz parçaların yanına senkronize edilmiş şarkı sözlerini kaydedin", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Download multiple tracks from an album to see them here", + "extensionEnterValue": "Enter value", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Sevilen", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Uzantı Deposu Ekle", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "CUE+FLAC dosyalarını ayrı parçalara bölün", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "Henüz çalma listesi yok", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Eski dosya kalıntılarını temizleyin", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "Sanatçıya Göre", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "Çevirmenler", + "notifAlreadyInLibraryCount": "Already in Library ({completed}/{total})", + "editMetadataFieldTitle": "Başlık", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Failed to load artist", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "Gerçek kalite, parçanın servisteki uygunluğuna bağlıdır", + "downloadFilenameDescription": "Yer tutucu olarak {artist}, {title}, {album}, {track}, {year}, {date}, {disc} ifadelerini kullanın.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Z-A", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC'ın şarkılarınızı kaydetmek için depolama iznine ihtiyacı var.", + "tutorialReadyMessage": "Her şey hazır! En sevdiğiniz müzikleri hemen indirmeye başlayın.", + "tutorialLibraryTip3": "Daha iyi göz atmak için liste ve ızgara görünümü arasında geçiş yapın", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "Açık", + "queueEmptyHistorySubtitle": "Downloaded tracks will appear here", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "Added {addedCount} tracks to queue, skipped {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "İndirilecek Klasörü Seç", + "dialogDownloadAllTitle": "Tümünü İndir", + "providerPriorityInfo": "Eğer bir şarkı ilk hizmette mevcut değilse uygulama otomatik olarak bir sonrakini deneyecektir.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "Kullanılabilir albüm yok", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "cacheNoData": "No cached data", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "İndirmeyi başlat", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "aboutTitle": "Hakkında", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "Geçmiş Düzeni", + "audioAnalysisSampleRate": "Sample Rate", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "İzleme arama önbelleği", + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Refresh status", + "notifAllDownloadsComplete": "All Downloads Complete", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "Paylaş", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{albumCount} yayından {count} parça", + "settingsDonateSubtitle": "Buy the developer a coffee", + "libraryFilterDownloaded": "İndirildi", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Scan stopped before completion.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "Şarkı sözlerini kopyala", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "Albüm Klasör Yapısı", + "downloadMusixmatchAuto": "Auto", + "actionDismiss": "Dismiss", + "storeFilterAll": "Tümü", + "extensionsDisabled": "Devre Dışı", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "{count} parça indirilsin mi?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Kitaplığınız", + "optionsCheckUpdatesSubtitle": "Yeni sürüm çıktığında bildir", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Çalma listesi", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "{count} ay önce", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Legacy", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Çalma listesinin adı değiştirildi", + "collectionCreatePlaylist": "Çalma listesi oluştur", + "homeGoToAlbum": "Albüme Git", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Her sanatçı için ayrı klasör", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "Versiyon {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Klasörler için yalnızca birincil sanatçıyı kullan", + "tutorialExtensionsTip2": "Yeni indirme sağlayıcıları veya arama kaynakları ekleyin", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "SpotiFLAC'e hoş geldiniz!", "a11ySelectAlbum": "Select album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -5065,89 +5385,679 @@ } } }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "Mobil kaynak kodu", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Kaynak", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Depolama Erişimi", + "logFilterBySeverity": "Günlükleri önem derecesine göre filtrele", + "libraryFolderNotExist": "Seçilen klasör mevcut değil", + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "albumFolderArtistAlbum": "Sanatçı / Albüm", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "İzin reddedildi. Lütfen sistem ayarlarından 'Tüm dosyalara erişim' iznini manuel olarak etkinleştirin.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Empty only", + "settingsLocalLibrarySubtitle": "Müziği tara ve kopyaları tespit et", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "Eklenti sağlayıcılarını kullan", + "cacheCleanupUnusedSubtitle": "Remove orphaned download history and missing library entries", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Eksik tür", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "setupFolderDescription": "İndirdiğin şarkıların kaydedileceği klasörü seç.", + "extensionDetailsTags": "Etiketler", + "unknownArtist": "Unknown Artist", + "trackFetchOnlineLyrics": "İnternetten Getir", + "snackbarNoActionDefined": "Bu düğme için tanımlanmış bir işlem yok", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, + "downloadAllCount": "Tümünü İndir ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "Disk {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "Özellikleri kaydet", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "Çevrimiçi", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "Remove from Wishlist", + "extensionsFallbackTitle": "Yedekleme Uzantıları", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Failed to save metadata via FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Seçilenleri Sil", + "selectionSelectPlaylistsToDelete": "Select playlists to delete", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Uzantılara göz atmak ve yüklemek için registry.json dosyası içeren bir GitHub depo URL'si girin.", + "appearanceThemeDark": "Koyu", + "downloadedAlbumTapToSelect": "Seçmek için parçalara dokunun", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "No matching metadata found online", + "updateDownloading": "İndiriliyor...", + "trackLyricsSource": "Kaynak: {source}", + "logFilterLevel": "Seviye", + "logNoLogsYet": "Henüz kayıt yok", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "Bu işlem, kitaplığınızdaki tüm taranmış parçaları siler. Asıl müzik dosyalarınız silinmez.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Auto", + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "Bugün", + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Bit Depth", "editMetadataFieldTrackTotal": "Track Total", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "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" - }, - "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" - }, - "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", + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "optionsSpotifyWarning": "Spotify'ın senin API kimlik bilgilerine ihtiyacı var. Onları developer.spotify.com'dan alabilirsin", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "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": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Edit Metadata", + "discographyDownloadAll": "Tümünü İndir", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "Albümler/Sanatçı Adı/Albüm Adı/", + "extensionHealthServiceUnknown": "Service status unknown", + "navHome": "Ana sayfa", + "queueDownloadStarting": "Starting...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} files scanned • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "Hi-Res FLAC", + "selectionSelected": "{count} seçildi", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Diskografiyi İndir", + "editMetadataFieldCopyright": "Copyright", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Sırala", + "cacheLibraryCoverDesc": "Kapak resmi yerel müzik dosyalarından çıkarıldı. Bir sonraki taramada yeniden çıkarılacaktır.", + "dialogRemoveExtension": "Eklentiyi Kaldır", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "Tümünü Seç", + "settingsDownloadNetworkSubtitle": "İndirmeler için hangi ağın kullanılacağını seçin. Yalnızca WiFi olarak ayarlandığında, mobil veriye geçildiğinde indirmeler duraklatılır.", + "downloadFolderOrganization": "Dosya Organizasyonu", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "Tüm parçalar seçildi", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "Hata ayıklama için uygulama günlüklerini görüntüle", + "albumFolderYearAlbumSubtitle": "Albümler/[2005] Albüm Adı/", + "cancelDownloadKeep": "Keep", + "optionsDetailedLoggingOn": "Detaylı günlük kayıt ediliyor", + "safMigrationMessage2": "Please select your download folder again to switch to the new storage system.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Update Failed", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "İndirdiğiniz parçaları nereye kaydedeceğinizi seçin", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Disabled ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Yerel", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "Servis", + "lyricsProviderQqMusicDesc": "QQ Music (good for Chinese songs, via proxy)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Remove orphaned download history and library entries for missing files.", + "selectionTapPlaylistsToSelect": "Tap playlists to select", + "notifUpdateFailedBody": "Could not download update. Try again later.", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "artistPopular": "Popüler", + "extensionRemoveButton": "Uzantıyı Kaldır", + "allFilesAccessEnabledSubtitle": "Herhangi bir klasöre yazabilir", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Arama Sağlayıcısı", + "tutorialWelcomeDesc": "En sevdiğiniz müzikleri kayıpsız kalitede nasıl indirebileceğinizi öğrenelim. Bu kısa eğitim size temel bilgileri gösterecek.", + "selectionBatchConvertConfirmTitle": "Batch Convert", + "extensionMetadataProvider": "Meta Veri Sağlayıcı", + "queueDownloadedFileMissing": "Downloaded file missing", + "logClearLogs": "Kayıtları temizle", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Spotify, Deezer'dan müzik indirin veya desteklenen herhangi bir URL'yi yapıştırın", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "Sanatçı", + "extensionCustomUrlHandling": "Custom URL Handling", + "appearanceDynamicColorSubtitle": "Duvar kağıdının renklerini kullan", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "Varsayılan", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choose how album folders are structured", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "Uygulama Klasörü (Önerilir)", + "collectionPlaylistCreated": "Playlist created", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Save album art as .jpg file", + "actionPaste": "Yapıştır", + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "downloadNativeWorker": "Native download worker", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "Refresh stats", + "collectionPlaylistChangeCover": "Change cover image", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "İndirme Geçmişini Temizle", + "trackGenre": "Tür", + "snackbarSelectedPlaylistsEmpty": "Selected playlists have no tracks", + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", + "libraryFilterMetadataMissingArtist": "Missing artist", + "extensionsNoCustomSearch": "Özel arama içeren uzantı bulunamadı", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "İndirme Sağlayıcı", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "Şarkı Sözü Modu", + "aboutReportIssueSubtitle": "Karşılaştığın herhangi bir problemi bildir", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "AMOLED Koyu", + "logIssueNetworkErrorDescription": "Connection issues detected", + "folderOrganizationByArtistAlbumSubtitle": "Sanatçı klasörlerinin içinde Albüm klasörleri", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "İzin Ver", + "lyricsProvidersDescription": "Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "{count} gün önce", + "extensionsHomeFeedDescription": "Choose which extension provides the home feed on the main screen", + "downloadLossyMp3Subtitle": "En iyi uyumluluk, parça başına ~10 Mb", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "İstek listesi boş", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Service degraded", + "optionsUseExtensionProvidersOn": "Extension providers are enabled", + "selectionConvertNoConvertible": "No convertible tracks selected", + "snackbarCredentialsCleared": "Kimlik bilgileri temizlendi", + "setupStorageGranted": "Depolama İzni Verildi!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} excluded", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Change folder", + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "Kitaplığı temizle", + "collectionRemoveFromPlaylist": "Remove from playlist", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "storeCategoryMetadata": "Metadata", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "tutorialLibraryTip1": "Kitaplık sekmesinden indirme ilerlemesini ve kuyruğu görüntüleyin", + "playlistsCount": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "Yerel", + "tutorialDownloadInProgressSemantics": "Download in progress", + "searchSortDurationLong": "Süre (en uzun)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "Yerel Kütüphane Hakkında", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Bu CUE sayfası için ses dosyası bulunamadı", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "appearanceSelectAccentColor": "Select accent color {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "Rescan ReplayGain", + "downloadSeparateSinglesFolder": "Ayrı Single Klasörü", + "trackAlbumArtist": "Albüm sanatçısı", + "qualityFlacLossless": "FLAC Kayıpsız", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Deneyiminizi Özelleştirin", + "extensionActionFailed": "Action failed", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "notifChannelLibraryScanDesc": "Shows local library scan progress", + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" removed", + "setupStorageAccessMessageAndroid11": "Android 11 ve sonrasında şarkıların seçili klasörünüze kaydedilebilmesi için \"Bütün dosyalara eriş\" iznine ihtiyaç var.", + "notifDownloadsFinished": "Downloads Finished ({completed} done, {failed} failed)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} files • {percentage}%", + "optionsPrimaryProvider": "Ana Kaynek", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "collectionAddedToLoved": "\"{trackName}\" added to Loved", + "albumFolderArtistAlbumFlat": "Sanatçı / Albüm (Singlelar alt klasörsüz)", + "homeAlbumInfoUnavailable": "Albüm bilgisi mevcut değil", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unknown", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "Başarısız indirmeleri otomatik dışa aktar", + "logFilterSection": "Filtre", + "dialogDiscardChanges": "Değişiklikleri İptal Et?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Tracks", + "searchAlbums": "Albümler", + "trackConvertFormat": "Convert Format", + "metadataProviderPriorityTitle": "Meta Veri Önceliği", + "libraryFolderHint": "Klasör seçmek için dokunun", + "downloadedAlbumDeleteMessage": "Bu albümden {count} {count, plural, =1{parça} other{parça}} parça silinsin mi?\n\nBu işlem dosyaları depolama alanından da kalıcı olarak silecektir.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "Albüm", + "updateAvailable": "Güncelleme Mevcut", + "optionsEmbedLyrics": "Şarkı Sözlerini Göm", + "trackReEnrichProgress": "Re-enriching metadata...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Peak", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Gezinme menüsünde Depo sekmesini göster", + "settingsTitle": "Ayarlar", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Besleme önbelleğini keşfedin", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "{count} seçildi", + "downloadAskQualitySubtitle": "Her indirmeden önce kalite seçim ekranını göster", + "filenameShowAdvancedTags": "Gelişmiş etiketleri göster", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "Kütüphane kapağı önbelleği", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "En iyi mobil uyumluluk, M4A konteyner", + "snackbarFillAllFields": "Lütfen tüm alanları doldurun", + "actionCreate": "Oluştur", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} downloaded", + "snackbarLoadingCueSheet": "CUE sayfası yükleniyor...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "Orijinal SpotiFLAC'ın kurucusu", + "a11yTrackByArtist": "{trackName} by {artistName}", + "audioAnalysisDynamicRange": "Dynamic Range", + "homeChangeSearchProviderTooltip": "Change search provider", + "loadingSharedLink": "Paylaşılan bağlantı yükleniyor...", + "lyricsModeEmbedSubtitle": "Şarkı sözleri FLAC meta verilerinin içinde saklanır", + "setupNotificationBackgroundDescription": "İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.", + "snackbarViewQueue": "Kuyruğu Görüntüle", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Belirli albümleri veya single'ları seçin", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "Bu bağlantıdan içerik yüklenemedi. Lütfen tekrar deneyin.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "Kaydet", + "trackReEnrichSearching": "Searching metadata online...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Verify lossless quality with spectrum analysis", + "downloadFilenameFormat": "Dosya adı formatı", + "cueSplitTitle": "Bölünmüş CUE Sayfası", + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "{item} yüklenemedi: Eksik eklenti kaynağı", + "albumFolderAlbumOnlySubtitle": "Albümler/Albüm Adı/", + "errorLoadPlaylist": "Failed to load playlist", + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "Vazgeç", + "storageModeSaf": "Özel Klasör (SAF)", + "errorRateLimited": "Aşırı istek gönderildi", + "downloadSelectQuality": "Kalite seçin", + "dialogDownloadPlaylistsMessage": "Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?", + "collectionFoldersTitle": "Klasörlerim", + "credentialsClientSecret": "Müşteri Sırrı", + "progressFetchingMetadata": "Meta verileri alınıyor... {current}/{total}", + "settingsDownloadNetworkAny": "WiFi + Mobil Veri", + "audioAnalysisDuration": "Duration", + "audioAnalysisAnalyzing": "Analyzing audio...", + "credentialsDescription": "Kendi Spotify uygulama kotanızı kullanmak için Client ID ve Secret girin.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Disc #", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Play preview", + "setupPermissionRequiredMessage": "En iyi deneyim için {permissionType} izni zorunludur. Bunu ayarlardan daha sonra değiştirebilirsiniz.", + "aboutVersion": "Versiyon", + "qualityHiResFlacSubtitle": "24-bit / 96kHz'e kadar", + "audioAnalysisSamples": "Samples", + "libraryFilterQualityHiRes": "Hi-Res (24bit)", + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "Telif Hakkı", + "libraryForceFullScanSubtitle": "Önbelleği yok sayarak tüm dosyaları yeniden tarayın", + "trackCopiedToClipboard": "Panoya kopyalandı", + "optionsEmbedMetadata": "Embed Metadata", "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5163,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Integration", + "storeClearFilters": "Filtreleri temizle", + "navSettings": "Ayarlar", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "Uygulama", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "Sanatçı/Albüm/ ve Sanatçı/Singlelar/", + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Lyrics provider priority saved", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "Parça adı", + "homeRecent": "En son", + "recentEmpty": "Henüz son kullanılan öğe yok", + "cacheClearAll": "Clear all cache", + "trackReEnrichFieldReleaseInfo": "Date & ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "editMetadataFieldAlbum": "Album", + "settingsAbout": "Hakkında", + "libraryFilterTitle": "Filtreler", + "cleanupOrphanedDownloadsResult": "Geçmişten {count} adet yetim kayıt kaldırıldı", + "extensionHooksAvailable": "{count} kanca kullanılabilir", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "Şarkı sözleri başarıyla gömüldü", + "optionsUpdateChannelPreview": "Önizleme sürümlerini al", + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "libraryForceFullScan": "Tam Taramayı Zorla", + "snackbarProviderPrioritySaved": "Sağlayıcı önceliği kaydedildi", + "collectionFavoriteArtistsEmptySubtitle": "Bir sanatçının sayfasındaki kalbe dokunarak onu burada tutmaya devam edin", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Service Status", + "dateWeeksAgo": "{count} hafta önce", + "historyFilterSingles": "Single'lar", + "tutorialSettingsTip2": "Varsayılan ses kalitesi ve format tercihlerini ayarlayın", + "trackLyricsSaved": "Lyrics saved to {fileName}", + "cacheClearAllConfirmTitle": "Clear all cache?", + "noTracksFoundForAlbum": "Bu albüm için hiçbir parça bulunamadı", + "sectionLanguage": "Dil", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "Klasör Seç", + "dateYesterday": "Dün", + "collectionAddToPlaylist": "Add to playlist", + "snackbarUnsupportedAudioFormat": "Unsupported audio format", + "libraryScanCancelled": "Scan cancelled", + "appearanceLanguage": "Uygulama Dili", + "extensionsTitle": "Eklentiler", + "dialogImportPlaylistMessage": "CSV'de {count} şarkı bulundu. İndirme kuyruğuna ekle?", + "permissionNotification": "Bildirim", + "notifUpdateReady": "Güncelleme Hazır", + "lyricsModeDescription": "Şarkı sözlerinin indirmelerinizle birlikte nasıl kaydedileceğini seçin", + "downloadFrom": "İndirme Kaynağı", + "collectionWishlistEmptySubtitle": "Daha sonra indirmek istediğiniz parçaları kaydetmek için parçaların üzerine + işaretiyle dokunun", + "cueSplitSplitting": "CUE sayfası bölünüyor... ({current}/{total})", + "optionsMaxQualityCover": "En Yüksek Kapak Kalitesi", + "trackOptionAddToWishlist": "Add to Wishlist", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Download Complete ({completed}/{total})", + "extensionsNoDownloadProvider": "İndirme sağlayıcısı olan uzantı yok", + "libraryFilterSortGenreAsc": "Tür (A-Z)", + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "collectionPlaylistRemoveCover": "Remove cover image", + "storeEmptyNoResults": "Uzantı bulunamadı", + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "editMetadataFieldComment": "Yorum", + "settingsMetadata": "Metadata", + "settingsCache": "Depolama ve Önbellek", + "providerPriorityFallbackExtensionsHint": "Burada yalnızca indirme sağlayıcısı yeteneğine sahip olan ve etkinleştirilmiş uzantılar listelenir.", + "libraryFilterAll": "All", + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "extensionsProviderPrioritySection": "Sağlayıcı Önceliği", + "storeChangeRepoTooltip": "Depoyu değiştir", + "snackbarFailedToInstall": "Eklenti yüklenirken hata oluştu", + "libraryScanSubtitle": "Ses dosyaları için tara", + "snackbarExtensionInstalled": "{extensionName} yüklendi.", + "setupOpenSettings": "Ayarları Aç", + "extensionsInstalledSection": "Kurulu uzantılar", + "aboutLinks": "Linkler", + "trackCoverClearSelected": "Clear selected cover", + "libraryAutoScanWeekly": "Haftalık", + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "optionsDefaultSearchTab": "Varsayılan Arama Sekmesi", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "İndirilenleri klasörlerle organize et", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "Dosyaya göm", + "trackReEnrichFfmpegFailed": "FFmpeg metadata embed failed", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Kayıplı", + "actionPause": "Duraklat", + "csvImportTracks": "CSV'den {count} şarkı", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "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...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "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": { + "providerName": { "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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": {} - } - } + "sectionDebug": "Hata ayıklama", + "editMetadataFieldDate": "Date", + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} hours ago}}", + "sectionPerformance": "Performans", + "extensionsSearchWith": "Search with {providerName}", + "extensionsDownloadPrioritySubtitle": "İndirme servisi sırasını ayarla", + "cacheAppDirectoryDesc": "HTTP yanıtları, WebView verileri ve diğer geçici uygulama verileri.", + "sectionData": "Veri", + "notifFinalizingTrack": "Finalizing {trackName}", + "snackbarFileNotFound": "Dosya bulunamadı", + "extensionQualityOptions": "Kalite Seçenekleri", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "Uzantı Deposu", + "extensionsSearchProviderDescription": "Parça aramak için hangi servisin kullanılacağını seçin", + "albumFolderAlbumOnly": "Yalnızca Albüm", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "Parçalara Ayrılmış" } diff --git a/lib/l10n/arb/app_uk.arb b/lib/l10n/arb/app_uk.arb index 65116bb4..8898d676 100644 --- a/lib/l10n/arb/app_uk.arb +++ b/lib/l10n/arb/app_uk.arb @@ -1,2453 +1,31 @@ { "@@locale": "uk", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", - "@appName": { - "description": "App name - DO NOT TRANSLATE" + "libraryEnableLocalLibrarySubtitle": "Скануати та відстежити свою існуючу музику", + "@libraryEnableLocalLibrarySubtitle": { + "description": "Subtitle for enable toggle" }, - "navHome": "Головна", - "@navHome": { - "description": "Bottom navigation - Home tab" + "@audioAnalysisCodec": { + "description": "Audio codec metric label" }, - "navLibrary": "Бібліотека", - "@navLibrary": { - "description": "Bottom navigation - Library tab" - }, - "navSettings": "Налаштування", - "@navSettings": { - "description": "Bottom navigation - Settings tab" - }, - "navStore": "Репозиторій", - "@navStore": { - "description": "Bottom navigation - Extension store tab" - }, - "homeTitle": "Головна", - "@homeTitle": { - "description": "Home screen title" - }, - "homeSubtitle": "Вставте URL-адресу яка підтримується, або виконайте пошук за назвою", - "@homeSubtitle": { - "description": "Subtitle shown below search box" - }, - "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" - }, - "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" - }, - "settingsOptions": "Опції", - "@settingsOptions": { - "description": "Settings section - app options" - }, - "settingsExtensions": "Розширення", - "@settingsExtensions": { - "description": "Settings section - extension management" - }, - "settingsAbout": "Про додаток", - "@settingsAbout": { - "description": "Settings section - app info" - }, - "downloadTitle": "Завантажити", - "@downloadTitle": { - "description": "Download settings page title" - }, - "downloadAskQualitySubtitle": "Показувати вікно вибору якості для кожного завантаження", - "@downloadAskQualitySubtitle": { - "description": "Subtitle for ask quality toggle" - }, - "downloadFilenameFormat": "Формат імені файлу", - "@downloadFilenameFormat": { - "description": "Setting for output filename pattern" - }, - "downloadSingleFilenameFormat": "Формат імені одного файлу", - "@downloadSingleFilenameFormat": { - "description": "Setting for output filename pattern for singles/EPs" - }, - "downloadSingleFilenameFormatDescription": "Шаблон назви файлу для синглів та міні-альбомів. Використовує ті самі теги, що й формат альбому.", - "@downloadSingleFilenameFormatDescription": { - "description": "Subtitle description for single filename format setting" - }, - "downloadFolderOrganization": "Організація папок", - "@downloadFolderOrganization": { - "description": "Title of the folder organization picker bottom sheet" - }, - "appearanceTitle": "Зовнішній вигляд", - "@appearanceTitle": { - "description": "Appearance settings page title" - }, - "appearanceThemeSystem": "Системний", - "@appearanceThemeSystem": { - "description": "Follow system theme" - }, - "appearanceThemeLight": "Світлий", - "@appearanceThemeLight": { - "description": "Light theme" - }, - "appearanceThemeDark": "Темний", - "@appearanceThemeDark": { - "description": "Dark theme" - }, - "appearanceDynamicColor": "Динамічний колір", - "@appearanceDynamicColor": { - "description": "Material You dynamic colors" - }, - "appearanceDynamicColorSubtitle": "Використати кольори зі своїх шпалер", - "@appearanceDynamicColorSubtitle": { - "description": "Subtitle for dynamic color" - }, - "appearanceHistoryView": "Історія переглядів", - "@appearanceHistoryView": { - "description": "Layout style for history" - }, - "appearanceHistoryViewList": "Список", - "@appearanceHistoryViewList": { - "description": "List layout option" - }, - "appearanceHistoryViewGrid": "Сітка", - "@appearanceHistoryViewGrid": { - "description": "Grid layout option" - }, - "optionsTitle": "Опції", - "@optionsTitle": { - "description": "Options settings page title" - }, - "optionsPrimaryProvider": "Основний постачальник", - "@optionsPrimaryProvider": { - "description": "Main search provider setting" - }, - "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", - "@optionsPrimaryProviderSubtitle": { - "description": "Subtitle for primary provider" - }, - "optionsUsingExtension": "Використання розширення: {extensionName}", - "@optionsUsingExtension": { - "description": "Shows active extension name", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "optionsDefaultSearchTab": "Вкладка пошуку за замовчуванням", - "@optionsDefaultSearchTab": { - "description": "Title for the preferred default search tab setting" - }, - "optionsDefaultSearchTabSubtitle": "Виберіть, яка вкладка відкриється першою для нових результатів пошуку.", - "@optionsDefaultSearchTabSubtitle": { - "description": "Subtitle for the preferred default search tab setting" - }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", - "@optionsSwitchBack": { - "description": "Hint to switch back from extension search" - }, - "optionsAutoFallback": "Автоматичний резервний варіант", - "@optionsAutoFallback": { - "description": "Auto-retry with other services" - }, - "optionsAutoFallbackSubtitle": "Спробувати інші сервіси, якщо завантаження не вдається", - "@optionsAutoFallbackSubtitle": { - "description": "Subtitle for auto fallback" - }, - "optionsUseExtensionProviders": "Використати постачальників розширень", - "@optionsUseExtensionProviders": { - "description": "Legacy setting label for extension download providers" - }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", - "@optionsUseExtensionProvidersOn": { - "description": "Status when extension providers enabled" - }, - "optionsUseExtensionProvidersOff": "Extension providers are required", - "@optionsUseExtensionProvidersOff": { - "description": "Legacy status when extension providers would be disabled" - }, - "optionsEmbedLyrics": "Вбудований текст пісні", - "@optionsEmbedLyrics": { - "description": "Embed lyrics in audio files" - }, - "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", - "@optionsEmbedLyricsSubtitle": { - "description": "Subtitle for embed lyrics" - }, - "optionsMaxQualityCover": "Максимальна якість обкладинки", - "@optionsMaxQualityCover": { - "description": "Download highest quality album art" - }, - "optionsMaxQualityCoverSubtitle": "Завантажити обкладинку з найвищою роздільною здатністю", - "@optionsMaxQualityCoverSubtitle": { - "description": "Subtitle for max quality cover" - }, - "optionsReplayGain": "Нормалізація звуку", - "@optionsReplayGain": { - "description": "Title for ReplayGain setting toggle" - }, - "optionsReplayGainSubtitleOn": "Сканування гучності та вбудовування тегів нормалізації звуку (EBU R128)", - "@optionsReplayGainSubtitleOn": { - "description": "Subtitle when ReplayGain is enabled" - }, - "optionsReplayGainSubtitleOff": "Вимкнено: немає тегів нормалізації гучності", - "@optionsReplayGainSubtitleOff": { - "description": "Subtitle when ReplayGain is disabled" - }, - "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 store tab" - }, - "optionsExtensionStoreSubtitle": "Показати вкладку «Репозиторій» у навігації", - "@optionsExtensionStoreSubtitle": { - "description": "Subtitle for extension store 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" - }, - "optionsSpotifyCredentials": "Облікові дані Spotify", - "@optionsSpotifyCredentials": { - "description": "Spotify API credentials setting" - }, - "optionsSpotifyCredentialsConfigured": "Ідентифікатор клієнта: {clientId}...", - "@optionsSpotifyCredentialsConfigured": { - "description": "Shows configured client ID preview", - "placeholders": { - "clientId": { - "type": "String" - } - } - }, - "optionsSpotifyCredentialsRequired": "Обов'язковий – торкніться, щоб налаштувати", - "@optionsSpotifyCredentialsRequired": { - "description": "Prompt to set up credentials" - }, - "optionsSpotifyWarning": "Spotify вимагає ваших власних облікових даних API. Отримайте їх безкоштовно на сайті developer.spotify.com", - "@optionsSpotifyWarning": { - "description": "Info about Spotify API requirement" - }, - "optionsSpotifyDeprecationWarning": "Пошук Spotify буде припинено 3 березня 2026 року через зміни в API Spotify. Будь ласка, перейдіть на Deezer.", - "@optionsSpotifyDeprecationWarning": { - "description": "Warning about Spotify API deprecation" - }, - "extensionsTitle": "Розширення", - "@extensionsTitle": { - "description": "Extensions page title" - }, - "extensionsDisabled": "Вимкнені", - "@extensionsDisabled": { - "description": "Extension status - inactive" - }, - "extensionsVersion": "Версія {version}", - "@extensionsVersion": { - "description": "Extension version display", - "placeholders": { - "version": { - "type": "String" - } - } - }, - "extensionsAuthor": "від {author}", - "@extensionsAuthor": { - "description": "Extension author credit", - "placeholders": { - "author": { - "type": "String" - } - } - }, - "extensionsUninstall": "Видалити", - "@extensionsUninstall": { - "description": "Uninstall extension button" - }, - "storeTitle": "Репозиторій розширень", - "@storeTitle": { - "description": "Store screen title" - }, - "storeSearch": "Розширення пошуку...", - "@storeSearch": { - "description": "Store 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": "Keep Android Open", - "@aboutKeepAndroidOpen": { - "description": "Link to Keep Android Open campaign website" - }, - "aboutReportIssue": "Повідомити про проблему", - "@aboutReportIssue": { - "description": "Link to report bugs" - }, - "aboutReportIssueSubtitle": "Повідомити про будь-які проблеми, з якими ви зіткнулися", - "@aboutReportIssueSubtitle": { - "description": "Subtitle for report issue" - }, - "aboutFeatureRequest": "Запит на функцію", - "@aboutFeatureRequest": { - "description": "Link to suggest features" - }, - "aboutFeatureRequestSubtitle": "Запропонувати нові функції для програми", - "@aboutFeatureRequestSubtitle": { - "description": "Subtitle for feature request" - }, - "aboutTelegramChannel": "Телеграм-канал", - "@aboutTelegramChannel": { - "description": "Link to Telegram channel" - }, - "aboutTelegramChannelSubtitle": "Оголошення та оновлення", - "@aboutTelegramChannelSubtitle": { - "description": "Subtitle for Telegram channel" - }, - "aboutTelegramChat": "Telegram Спільнота", - "@aboutTelegramChat": { - "description": "Link to Telegram chat group" - }, - "aboutTelegramChatSubtitle": "Спілкуватися з іншими користувачами", - "@aboutTelegramChatSubtitle": { - "description": "Subtitle for Telegram chat" - }, - "aboutSocial": "Соціальні мережі", - "@aboutSocial": { - "description": "Section for social links" - }, - "aboutApp": "Додаток", - "@aboutApp": { - "description": "Section for app info" - }, - "aboutVersion": "Версія", - "@aboutVersion": { - "description": "Version info label" - }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", - "@aboutBinimumDesc": { - "description": "Credit description for binimum" - }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", - "@aboutSachinsenalDesc": { - "description": "Credit description for sachinsenal0x64" - }, - "aboutSjdonadoDesc": "Творець I Don't Have Spotify (IDHS). Резервний розв'язувач посилань, який рятує становище!", - "@aboutSjdonadoDesc": { - "description": "Credit description for sjdonado" - }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", - "@aboutAppDescription": { - "description": "App description in header card" - }, - "artistAlbums": "Альбоми", - "@artistAlbums": { - "description": "Section header for artist albums" - }, - "artistSingles": "Сингли та міні-альбоми", - "@artistSingles": { - "description": "Section header for singles/EPs" - }, - "artistCompilations": "Збірники", - "@artistCompilations": { - "description": "Section header for compilations" - }, - "artistPopular": "Популярні", - "@artistPopular": { - "description": "Section header for popular/top tracks" - }, - "artistMonthlyListeners": "{count} слухачів щомісяця", - "@artistMonthlyListeners": { - "description": "Monthly listener count display", - "placeholders": { - "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": "Для збереження файлів у вибрану папку завантажень для Android 11+ потрібен дозвіл «Доступ до всіх файлів».", - "@setupStorageAccessMessageAndroid11": { - "description": "Android 11+ specific explanation" - }, - "setupOpenSettings": "Відкрити налаштування", - "@setupOpenSettings": { - "description": "Button to open system settings" - }, - "setupPermissionDeniedMessage": "Дозвіл відхилено. Будь ласка, надайте всі дозволи, щоб продовжити.", - "@setupPermissionDeniedMessage": { - "description": "Error when permission denied" - }, - "setupPermissionRequired": "{permissionType} Потрібен дозвіл", - "@setupPermissionRequired": { - "description": "Generic permission required title", - "placeholders": { - "permissionType": { - "type": "String", - "description": "Type of permission (Storage/Notification)" - } - } - }, - "setupPermissionRequiredMessage": "{permissionType} Для найкращого досвіду потрібен дозвіл. Ви можете змінити це пізніше в налаштуваннях.", - "@setupPermissionRequiredMessage": { - "description": "Generic permission required message", - "placeholders": { - "permissionType": { - "type": "String" - } - } - }, - "setupUseDefaultFolder": "Використати папку за замовчуванням?", - "@setupUseDefaultFolder": { - "description": "Dialog title for default folder" - }, - "setupNoFolderSelected": "Папку не вибрано. Бажаєте використовувати папку «Музика» за замовчуванням?", - "@setupNoFolderSelected": { - "description": "Prompt when no folder selected" - }, - "setupUseDefault": "Використовувати за замовчуванням", - "@setupUseDefault": { - "description": "Button to use default folder" - }, - "setupDownloadLocationTitle": "Розташування завантаження", - "@setupDownloadLocationTitle": { - "description": "Download location dialog title" - }, - "setupDownloadLocationIosMessage": "На iOS завантаження зберігаються в папці «Документи» програми. Ви можете отримати до них доступ через програму «Файли».", - "@setupDownloadLocationIosMessage": { - "description": "iOS-specific folder info" - }, - "setupAppDocumentsFolder": "Папка з документами програми", - "@setupAppDocumentsFolder": { - "description": "iOS documents folder option" - }, - "setupAppDocumentsFolderSubtitle": "Рекомендація – доступно через додаток Файли", - "@setupAppDocumentsFolderSubtitle": { - "description": "Subtitle for documents folder" - }, - "setupChooseFromFiles": "Вибрати з файлів", - "@setupChooseFromFiles": { - "description": "iOS file picker option" - }, - "setupChooseFromFilesSubtitle": "Виберіть iCloud або інше місцезнаходження", - "@setupChooseFromFilesSubtitle": { - "description": "Subtitle for file picker" - }, - "setupIosEmptyFolderWarning": "Обмеження iOS: Не можна вибрати порожні папки. Виберіть папку, яка містить принаймні один файл.", - "@setupIosEmptyFolderWarning": { - "description": "iOS folder selection warning" - }, - "setupIcloudNotSupported": "iCloud Drive не підтримується. Будь ласка, скористайтеся папкою «Документи» програми.", - "@setupIcloudNotSupported": { - "description": "Error when user selects iCloud Drive on iOS" - }, - "setupDownloadInFlac": "Завантажити треки Spotify у форматі FLAC", - "@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" - }, - "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" - }, - "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, =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} треків у CSV. Додати їх до черги завантаження?", - "csvImportTracks": "{count} треків з CSV", - "@csvImportTracks": { - "description": "Label shown in quality picker for CSV import", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "@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" - }, - "snackbarCredentialsSaved": "Облікові дані збережено", - "@snackbarCredentialsSaved": { - "description": "Snackbar - Spotify credentials saved" - }, - "snackbarCredentialsCleared": "Облікові дані очищено", - "@snackbarCredentialsCleared": { - "description": "Snackbar - Spotify credentials removed" - }, - "snackbarDeletedTracks": "Видалено {count} {count, plural, =1{трек} other{треків}}", - "@snackbarDeletedTracks": { - "description": "Snackbar - tracks deleted", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarCannotOpenFile": "Не вдається відкрити файл: {error}", - "@snackbarCannotOpenFile": { - "description": "Snackbar - file open error", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "snackbarFillAllFields": "Будь ласка, заповніть усі поля", - "@snackbarFillAllFields": { - "description": "Snackbar - validation error" - }, - "snackbarViewQueue": "Переглянути чергу", - "@snackbarViewQueue": { - "description": "Snackbar action - view download queue" - }, - "snackbarUrlCopied": "{platform} URL-адреса скопійована в буфер обміну", - "@snackbarUrlCopied": { - "description": "Snackbar - URL copied", - "placeholders": { - "platform": { - "type": "String", - "description": "Platform name (Spotify/Deezer)" - } - } - }, - "snackbarFileNotFound": "Файл не знайдено", - "@snackbarFileNotFound": { - "description": "Snackbar - file doesn't exist" - }, - "snackbarSelectExtFile": "Будь ласка, виберіть файл .spotiflac-ext", - "@snackbarSelectExtFile": { - "description": "Snackbar - wrong file type selected" - }, - "snackbarProviderPrioritySaved": "Пріоритет постачальника збережено", - "@snackbarProviderPrioritySaved": { - "description": "Snackbar - provider order saved" - }, - "snackbarMetadataProviderSaved": "Пріоритет постачальника метаданих збережено", - "@snackbarMetadataProviderSaved": { - "description": "Snackbar - metadata provider order saved" - }, - "snackbarExtensionInstalled": "Розширення {extensionName} встановлено.", - "@snackbarExtensionInstalled": { - "description": "Snackbar - extension installed successfully", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "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" - }, - "errorUrlNotRecognized": "Посилання не розпізнано", - "@errorUrlNotRecognized": { - "description": "Error title - URL not handled by any extension or service" - }, - "errorUrlNotRecognizedMessage": "Це посилання не підтримується. Переконайтеся, що URL-адреса правильна та встановлено сумісне розширення.", - "@errorUrlNotRecognizedMessage": { - "description": "Error message - URL not recognized explanation" - }, - "errorUrlFetchFailed": "Не вдалося завантажити вміст за цим посиланням. Спробуйте ще раз.", - "@errorUrlFetchFailed": { - "description": "Error message - generic URL fetch failure" - }, - "errorMissingExtensionSource": "Не вдається завантажити {item}: відсутній вихідний код розширення", - "@errorMissingExtensionSource": { - "description": "Error - extension source not available", - "placeholders": { - "item": { - "type": "String" - } - } - }, - "actionPause": "Пауза", - "@actionPause": { - "description": "Action button - pause download" - }, - "actionResume": "Відновити", - "@actionResume": { - "description": "Action button - resume download" - }, - "actionCancel": "Скасувати", - "@actionCancel": { - "description": "Action button - cancel operation" - }, - "actionSelectAll": "Вибрати все", - "@actionSelectAll": { - "description": "Action button - select all items" - }, - "actionDeselect": "Скасувати вибір", - "@actionDeselect": { - "description": "Action button - deselect all" - }, - "actionRemoveCredentials": "Видалити облікові дані", - "@actionRemoveCredentials": { - "description": "Action button - delete Spotify credentials" - }, - "actionSaveCredentials": "Зберегти облікові дані", - "@actionSaveCredentials": { - "description": "Action button - save Spotify credentials" - }, - "selectionSelected": "Вибрано {count}", - "@selectionSelected": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "selectionAllSelected": "Усі треки вибрано", - "@selectionAllSelected": { - "description": "Status - all items selected" - }, - "selectionSelectToDelete": "Виберіть треки для видалення", - "@selectionSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "progressFetchingMetadata": "Отримання метаданих... {current}/{total}", - "@progressFetchingMetadata": { - "description": "Progress indicator - loading track info", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "progressReadingCsv": "Читання CSV-файлу...", - "@progressReadingCsv": { - "description": "Progress indicator - parsing CSV file" - }, - "searchSongs": "Пісні", - "@searchSongs": { - "description": "Search result category - songs" - }, - "searchArtists": "Виконавці", - "@searchArtists": { - "description": "Search result category - artists" - }, - "searchAlbums": "Альбоми", - "@searchAlbums": { - "description": "Search result category - albums" - }, - "searchPlaylists": "Списки відтворення", - "@searchPlaylists": { - "description": "Search result category - playlists" - }, - "searchSortTitle": "Сортувати результати", - "@searchSortTitle": { - "description": "Bottom sheet title for search sort options" - }, - "searchSortDefault": "За замовчуванням", - "@searchSortDefault": { - "description": "Sort option - default API order" - }, - "searchSortTitleAZ": "Назва (А-Я)", - "@searchSortTitleAZ": { - "description": "Sort option - title ascending" - }, - "searchSortTitleZA": "Назва (Я-А)", - "@searchSortTitleZA": { - "description": "Sort option - title descending" - }, - "searchSortArtistAZ": "Виконавець (А-Я)", - "@searchSortArtistAZ": { - "description": "Sort option - artist ascending" - }, - "searchSortArtistZA": "Виконавець (Я-А)", - "@searchSortArtistZA": { - "description": "Sort option - artist descending" - }, - "searchSortDurationShort": "Тривалість (найкоротша)", - "@searchSortDurationShort": { - "description": "Sort option - shortest duration first" - }, - "searchSortDurationLong": "Тривалість (найдовша)", - "@searchSortDurationLong": { - "description": "Sort option - longest duration first" - }, - "searchSortDateOldest": "Дата випуску (найстаріша)", - "@searchSortDateOldest": { - "description": "Sort option - oldest release first" - }, - "searchSortDateNewest": "Дата випуску (найновіша)", - "@searchSortDateNewest": { - "description": "Sort option - newest release first" - }, - "tooltipPlay": "Відтворити", - "@tooltipPlay": { - "description": "Tooltip - play button" - }, - "filenameFormat": "Формат імені файлу", - "@filenameFormat": { - "description": "Setting title - filename pattern" - }, - "filenameShowAdvancedTags": "Показати розширені теги", - "@filenameShowAdvancedTags": { - "description": "Toggle label for showing advanced filename tags" - }, - "filenameShowAdvancedTagsDescription": "Увімкнути відформатовані теги для доповнення доріжок і шаблонів дати", - "@filenameShowAdvancedTagsDescription": { - "description": "Description for advanced filename tag toggle" - }, - "folderOrganizationNone": "Жодної організації", - "@folderOrganizationNone": { - "description": "Folder option - flat structure" - }, - "folderOrganizationByPlaylist": "За списком відтворення", - "@folderOrganizationByPlaylist": { - "description": "Folder option - playlist folders" - }, - "folderOrganizationByPlaylistSubtitle": "Окрема папка для кожного списку відтворення", - "@folderOrganizationByPlaylistSubtitle": { - "description": "Subtitle for playlist folder option" - }, - "folderOrganizationByArtist": "За виконавцем", - "@folderOrganizationByArtist": { - "description": "Folder option - artist folders" - }, - "folderOrganizationByAlbum": "За альбомом", - "@folderOrganizationByAlbum": { - "description": "Folder option - album folders" - }, - "folderOrganizationByArtistAlbum": "Виконавець/Альбом", - "@folderOrganizationByArtistAlbum": { - "description": "Folder option - nested folders" - }, - "folderOrganizationDescription": "Упорядкувати завантажені файли в папки", - "@folderOrganizationDescription": { - "description": "Folder organization sheet description" - }, - "folderOrganizationNoneSubtitle": "Усі файли в папці завантажень", - "@folderOrganizationNoneSubtitle": { - "description": "Subtitle for no organization option" - }, - "folderOrganizationByArtistSubtitle": "Окрема папка для кожного виконавця", - "@folderOrganizationByArtistSubtitle": { - "description": "Subtitle for artist folder option" - }, - "folderOrganizationByAlbumSubtitle": "Окрема папка для кожного альбому", - "@folderOrganizationByAlbumSubtitle": { - "description": "Subtitle for album folder option" - }, - "folderOrganizationByArtistAlbumSubtitle": "Вкладені папки для виконавця та альбому", - "@folderOrganizationByArtistAlbumSubtitle": { - "description": "Subtitle for nested folder option" - }, - "updateAvailable": "Доступне оновлення", - "@updateAvailable": { - "description": "Update dialog title" - }, - "updateLater": "Пізніше", - "@updateLater": { - "description": "Update button - dismiss" - }, - "updateStartingDownload": "Початок завантаження...", - "@updateStartingDownload": { - "description": "Update status - initializing" - }, - "updateDownloadFailed": "Не вдалося завантажити", - "@updateDownloadFailed": { - "description": "Update error title" - }, - "updateFailedMessage": "Не вдалося завантажити оновлення", - "@updateFailedMessage": { - "description": "Update error message" - }, - "updateNewVersionReady": "Доступна нова версія", - "@updateNewVersionReady": { - "description": "Update subtitle" - }, - "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" - }, - "providerPriorityFallbackExtensionsTitle": "Резервне розширення", - "@providerPriorityFallbackExtensionsTitle": { - "description": "Section title for choosing which download extensions can be used as fallback providers" - }, - "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", - "@providerPriorityFallbackExtensionsDescription": { - "description": "Section description for extension fallback selection" - }, - "providerPriorityFallbackExtensionsHint": "Тут перелічені лише ввімкнені розширення з можливістю завантаження через постачальника послуг.", - "@providerPriorityFallbackExtensionsHint": { - "description": "Hint below the extension fallback selection list" - }, - "providerBuiltIn": "Legacy", - "@providerBuiltIn": { - "description": "Legacy label retained for old generated localization compatibility" - }, - "providerExtension": "Розширення", - "@providerExtension": { - "description": "Label for extension-provided providers" - }, - "metadataProviderPriorityTitle": "Пріоритет метаданих", - "@metadataProviderPriorityTitle": { - "description": "Metadata priority page title" - }, - "metadataProviderPriorityDescription": "Перетягніть, щоб змінити порядок постачальників метаданих. Додаток шукатиме постачальників зверху вниз під час пошуку треків та отримання метаданих.", - "@metadataProviderPriorityDescription": { - "description": "Metadata priority page description" - }, - "metadataProviderPriorityInfo": "Deezer не має обмежень за швидкістю та рекомендований як основний сервіс. Spotify може обмежувати швидкість після великої кількості запитів.", - "@metadataProviderPriorityInfo": { - "description": "Info tip about rate limits" - }, - "metadataNoRateLimits": "Без обмежень щодо швидкості", - "@metadataNoRateLimits": { - "description": "Deezer provider description" - }, - "metadataMayRateLimit": "Травневе обмеження ставок", - "@metadataMayRateLimit": { - "description": "Spotify provider description" - }, - "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" + "extensionUtilityFunctions": "Utility Functions", + "@extensionUtilityFunctions": { + "description": "Capability label for utility-only extensions" }, "logClearLogsMessage": "Ви впевнені, що хочете очистити всі журнали?", "@logClearLogsMessage": { "description": "Clear logs confirmation message" }, - "logFilterBySeverity": "Фільтрувати журнали за рівнем серйозності", - "@logFilterBySeverity": { - "description": "Filter dialog title" - }, - "logNoLogsYet": "Журналів поки що немає", - "@logNoLogsYet": { - "description": "Empty state title" - }, - "logNoLogsYetSubtitle": "Журнали відображатимуться тут під час використання програми", - "@logNoLogsYetSubtitle": { - "description": "Empty state subtitle" - }, - "logEntriesFiltered": "Записи ({count} filtered)", - "@logEntriesFiltered": { - "description": "Log count with filter active", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "logEntries": "Записи ({count})", - "@logEntries": { - "description": "Total log count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "credentialsTitle": "Облікові дані Spotify", - "@credentialsTitle": { - "description": "Credentials dialog title" - }, - "credentialsDescription": "Введіть свій ідентифікатор клієнта та секретний код, щоб використовувати власну квоту програми Spotify.", - "@credentialsDescription": { - "description": "Credentials dialog explanation" - }, - "credentialsClientId": "Ідентифікатор клієнта", - "@credentialsClientId": { - "description": "Client ID field label - DO NOT TRANSLATE" - }, - "credentialsClientIdHint": "Вставити ідентифікатор клієнта", - "@credentialsClientIdHint": { - "description": "Client ID placeholder" - }, - "credentialsClientSecret": "Секретний код клієнта", - "@credentialsClientSecret": { - "description": "Client Secret field label - DO NOT TRANSLATE" - }, - "credentialsClientSecretHint": "Вставити секретний код клієнта", - "@credentialsClientSecretHint": { - "description": "Client Secret placeholder" - }, - "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": "Service, quality, fallback", - "@settingsDownloadSubtitle": { - "description": "Download settings description" - }, - "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", - "@settingsOptionsSubtitle": { - "description": "Options 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, =1{1 трек} other{{count} треків}}", - "@tracksCount": { - "description": "Track count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "trackCopyFilePath": "Копіювати шлях до файлу", - "@trackCopyFilePath": { - "description": "Action - copy file path" - }, - "trackRemoveFromDevice": "Видалити з пристрою", - "@trackRemoveFromDevice": { - "description": "Action - delete downloaded file" - }, - "trackLoadLyrics": "Завантажити текст пісні", - "@trackLoadLyrics": { - "description": "Action - fetch lyrics" - }, - "trackMetadata": "Метадані", - "@trackMetadata": { - "description": "Tab title - track metadata" - }, - "trackFileInfo": "Інформація про файл", - "@trackFileInfo": { - "description": "Tab title - file information" - }, - "trackLyrics": "Тексти пісень", - "@trackLyrics": { - "description": "Tab title - lyrics" - }, - "trackFileNotFound": "Файл не знайдено", - "@trackFileNotFound": { - "description": "Error - file doesn't exist" - }, - "trackOpenInDeezer": "Відкрити в Deezer", - "@trackOpenInDeezer": { - "description": "Action - open track in Deezer app" - }, - "trackOpenInSpotify": "Відкрити в Spotify", - "@trackOpenInSpotify": { - "description": "Action - open track in Spotify app" - }, - "trackTrackName": "Назва треку", - "@trackTrackName": { - "description": "Metadata label - track title" - }, - "trackArtist": "Артист", - "@trackArtist": { - "description": "Metadata label - artist name" - }, - "trackAlbumArtist": "Виконавець альбому", - "@trackAlbumArtist": { - "description": "Metadata label - album artist" - }, - "trackAlbum": "Альбом", - "@trackAlbum": { - "description": "Metadata label - album name" - }, - "trackTrackNumber": "Номер треку", - "@trackTrackNumber": { - "description": "Metadata label - track number" - }, - "trackDiscNumber": "Номер диска", - "@trackDiscNumber": { - "description": "Metadata label - disc number" - }, - "trackDuration": "Тривалість", - "@trackDuration": { - "description": "Metadata label - track length" - }, - "trackAudioQuality": "Якість звуку", - "@trackAudioQuality": { - "description": "Metadata label - audio quality" - }, - "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" - }, - "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": "Store filter - all extensions" - }, - "storeFilterMetadata": "Метадані", - "@storeFilterMetadata": { - "description": "Store filter - metadata providers" - }, - "storeFilterDownload": "Завантажити", - "@storeFilterDownload": { - "description": "Store filter - download providers" - }, - "storeFilterUtility": "Утиліта", - "@storeFilterUtility": { - "description": "Store filter - utility extensions" - }, - "storeFilterLyrics": "Тексти пісень", - "@storeFilterLyrics": { - "description": "Store filter - lyrics providers" - }, - "storeFilterIntegration": "Інтеграція", - "@storeFilterIntegration": { - "description": "Store filter - integrations" - }, - "storeClearFilters": "Очистити фільтри", "@storeClearFilters": { "description": "Button to clear all filters" }, - "storeAddRepoTitle": "Додати репозиторій розширень", - "@storeAddRepoTitle": { - "description": "Store setup screen - heading when no repo is configured" + "cacheCleanupUnused": "Очищення невикористаних даних", + "@cacheCleanupUnused": { + "description": "Action title for cleaning unused entries" }, - "storeAddRepoDescription": "Введіть URL-адресу репозиторію GitHub, яка містить файл registry.json, для перегляду та встановлення розширень.", - "@storeAddRepoDescription": { - "description": "Store setup screen - explanatory text" - }, - "storeRepoUrlLabel": "URL-адреса репозиторію", - "@storeRepoUrlLabel": { - "description": "Label for the repository URL input field" - }, - "storeRepoUrlHint": "https://github.com/user/repo", - "@storeRepoUrlHint": { - "description": "Hint/placeholder for the repository URL input field" - }, - "storeRepoUrlHelper": "наприклад https://github.com/user/extensions-repo", - "@storeRepoUrlHelper": { - "description": "Helper text below the repository URL input field" - }, - "storeAddRepoButton": "Додати репозиторій", - "@storeAddRepoButton": { - "description": "Button to submit a new repository URL" - }, - "storeChangeRepoTooltip": "Змінити репозиторій", - "@storeChangeRepoTooltip": { - "description": "Tooltip for the change-repository icon button in the app bar" - }, - "storeRepoDialogTitle": "Репозиторій розширень", - "@storeRepoDialogTitle": { - "description": "Title of the change/remove repository dialog" - }, - "storeRepoDialogCurrent": "Поточний репозиторій:", - "@storeRepoDialogCurrent": { - "description": "Label shown above the current repository URL in the dialog" - }, - "storeNewRepoUrlLabel": "Нова URL-адреса репозиторію", - "@storeNewRepoUrlLabel": { - "description": "Label for the new repository URL field inside the dialog" - }, - "storeLoadError": "Не вдалося завантажити репозиторій", - "@storeLoadError": { - "description": "Error heading when the store cannot be loaded" - }, - "storeEmptyNoExtensions": "Розширень немає", - "@storeEmptyNoExtensions": { - "description": "Message when store has no extensions" - }, - "storeEmptyNoResults": "Розширень не знайдено", - "@storeEmptyNoResults": { - "description": "Message when search/filter returns no results" - }, - "extensionDefaultProvider": "Default Search", - "@extensionDefaultProvider": { - "description": "Default search provider option" - }, - "extensionDefaultProviderSubtitle": "Use the default metadata search", - "@extensionDefaultProviderSubtitle": { - "description": "Subtitle for default provider" - }, - "extensionAuthor": "Автор", - "@extensionAuthor": { - "description": "Extension detail - author" - }, - "extensionId": "Ідентифікатор", - "@extensionId": { - "description": "Extension detail - unique ID" - }, - "extensionError": "Помилка", - "@extensionError": { - "description": "Extension detail - error message" - }, - "extensionCapabilities": "Можливості", - "@extensionCapabilities": { - "description": "Section header - extension features" - }, - "extensionMetadataProvider": "Постачальник метаданих", - "@extensionMetadataProvider": { - "description": "Capability - provides metadata" - }, - "extensionDownloadProvider": "Постачальник завантажень", - "@extensionDownloadProvider": { - "description": "Capability - provides downloads" - }, - "extensionLyricsProvider": "Постачальник текстів пісень", - "@extensionLyricsProvider": { - "description": "Capability - provides lyrics" - }, - "extensionUrlHandler": "Обробник URL-адрес", - "@extensionUrlHandler": { - "description": "Capability - handles URLs" - }, - "extensionQualityOptions": "Варіанти якості", - "@extensionQualityOptions": { - "description": "Capability - quality selection" - }, - "extensionPostProcessingHooks": "Хуки пост-обробки", - "@extensionPostProcessingHooks": { - "description": "Capability - post-processing" - }, - "extensionPermissions": "Дозволи", - "@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" - }, - "extensionsDownloadPriority": "Пріоритет завантаження", - "@extensionsDownloadPriority": { - "description": "Setting - download provider order" - }, - "extensionsDownloadPrioritySubtitle": "Встановити порядок завантаження", - "@extensionsDownloadPrioritySubtitle": { - "description": "Subtitle for download priority" - }, - "extensionsFallbackTitle": "Резервні розширення", - "@extensionsFallbackTitle": { - "description": "Setting and page title for choosing which download extensions can be used during fallback" - }, - "extensionsFallbackSubtitle": "Виберіть, які встановлені розширення для завантаження можна використовувати як резервні", - "@extensionsFallbackSubtitle": { - "description": "Subtitle for download fallback extensions menu" - }, - "extensionsNoDownloadProvider": "Без розширень із постачальником завантажень", - "@extensionsNoDownloadProvider": { - "description": "Empty state - no download providers" - }, - "extensionsMetadataPriority": "Пріоритет метаданих", - "@extensionsMetadataPriority": { - "description": "Setting - metadata provider order" - }, - "extensionsMetadataPrioritySubtitle": "Встановити порядок пошуку та джерел метаданих", - "@extensionsMetadataPrioritySubtitle": { - "description": "Subtitle for metadata priority" - }, - "extensionsNoMetadataProvider": "Без розширень із постачальником метаданих", - "@extensionsNoMetadataProvider": { - "description": "Empty state - no metadata providers" - }, - "extensionsSearchProvider": "Постачальник пошуку", - "@extensionsSearchProvider": { - "description": "Setting - search provider selection" - }, - "extensionsNoCustomSearch": "Без розширень із користувацьким пошуком", - "@extensionsNoCustomSearch": { - "description": "Empty state - no search providers" - }, - "extensionsSearchProviderDescription": "Виберіть, який сервіс використовувати для пошуку треків", - "@extensionsSearchProviderDescription": { - "description": "Search provider setting description" - }, - "extensionsCustomSearch": "Користувацький пошук", - "@extensionsCustomSearch": { - "description": "Label for custom search provider" - }, - "extensionsErrorLoading": "Помилка завантаження розширення", - "@extensionsErrorLoading": { - "description": "Error message when extension fails to load" - }, - "qualityFlacLossless": "FLAC без втрат", - "@qualityFlacLossless": { - "description": "Quality option - CD quality FLAC" - }, - "qualityFlacLosslessSubtitle": "16 біт / 44,1 кГц", - "@qualityFlacLosslessSubtitle": { - "description": "Technical spec for lossless" - }, - "qualityHiResFlac": "FLAC високої роздільної здатності", - "@qualityHiResFlac": { - "description": "Quality option - high resolution FLAC" - }, - "qualityHiResFlacSubtitle": "24-біт / до 96 кГц", - "@qualityHiResFlacSubtitle": { - "description": "Technical spec for hi-res" - }, - "qualityHiResFlacMax": "FLAC Max з високою роздільною здатністю", - "@qualityHiResFlacMax": { - "description": "Quality option - maximum resolution FLAC" - }, - "qualityHiResFlacMaxSubtitle": "24-біт / до 192 кГц", - "@qualityHiResFlacMaxSubtitle": { - "description": "Technical spec for hi-res max" - }, - "downloadLossy320": "Lossy (із втратами) 320 кбіт/с", - "@downloadLossy320": { - "description": "Quality option label for lossy 320kbps" - }, - "downloadLossyFormat": "Формат із втратами", - "@downloadLossyFormat": { - "description": "Setting title to pick output format for lossy downloads" - }, - "downloadLossy320Format": "Формат із втратами 320 кбіт/с", - "@downloadLossy320Format": { - "description": "Title of the lossy format picker bottom sheet" - }, - "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", - "@downloadLossy320FormatDesc": { - "description": "Description in the lossy format picker" - }, - "downloadLossyMp3": "MP3 320 кбіт/с", - "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" - }, - "downloadLossyMp3Subtitle": "Найкраща сумісність, ~10 МБ на доріжку", - "@downloadLossyMp3Subtitle": { - "description": "Subtitle for MP3 320kbps lossy option" - }, - "downloadLossyOpus256": "Opus 256 кбіт/с", - "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" - }, - "downloadLossyOpus256Subtitle": "Opus найкращої якості, ~8 МБ на трек", - "@downloadLossyOpus256Subtitle": { - "description": "Subtitle for Opus 256kbps lossy option" - }, - "downloadLossyOpus128": "Opus 128 кбіт/с", - "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" - }, - "downloadLossyOpus128Subtitle": "Найменший розмір, ~4 МБ на доріжку", - "@downloadLossyOpus128Subtitle": { - "description": "Subtitle for Opus 128kbps lossy option" - }, - "qualityNote": "Фактична якість залежить від наявності треку в сервісі", - "@qualityNote": { - "description": "Note about quality availability" - }, - "downloadAskBeforeDownload": "Запитувати перед завантаженням", - "@downloadAskBeforeDownload": { - "description": "Setting - show quality picker" - }, - "downloadDirectory": "Каталог завантажень", - "@downloadDirectory": { - "description": "Setting - download folder" - }, - "downloadSeparateSinglesFolder": "Окрема папка для синглів", - "@downloadSeparateSinglesFolder": { - "description": "Setting - separate folder for singles" - }, - "downloadAlbumFolderStructure": "Структура папок альбому", - "@downloadAlbumFolderStructure": { - "description": "Setting - album folder organization" - }, - "albumFolderStructureDescription": "Виберіть структуру папок альбомів", - "@albumFolderStructureDescription": { - "description": "Album folder structure picker description" - }, - "downloadUseAlbumArtistForFolders": "Використовувати виконавця альбому для папок", - "@downloadUseAlbumArtistForFolders": { - "description": "Setting - choose whether artist folders use Album Artist or Track Artist" - }, - "downloadUsePrimaryArtistOnly": "Тільки основний виконавець для папок", - "@downloadUsePrimaryArtistOnly": { - "description": "Setting - strip featured artists from folder name" - }, - "downloadUsePrimaryArtistOnlyEnabled": "Вибраних виконавців видалити з назви папки (наприклад, Джастін Бібер, Quavo → Джастін Бібер)", - "@downloadUsePrimaryArtistOnlyEnabled": { - "description": "Subtitle when primary artist only is enabled" - }, - "downloadUsePrimaryArtistOnlyDisabled": "Повний рядок виконавця, що використовується для назви папки", - "@downloadUsePrimaryArtistOnlyDisabled": { - "description": "Subtitle when primary artist only is disabled" - }, - "downloadSelectQuality": "Вибрати якість", - "@downloadSelectQuality": { - "description": "Dialog title - choose audio quality" - }, - "downloadFrom": "Завантажити з", - "@downloadFrom": { - "description": "Label - download source" - }, - "appearanceAmoledDark": "Темний AMOLED", - "@appearanceAmoledDark": { - "description": "Theme option - pure black" - }, - "appearanceAmoledDarkSubtitle": "Чисто чорний фон", - "@appearanceAmoledDarkSubtitle": { - "description": "Subtitle for AMOLED dark" - }, - "queueClearAll": "Усі", - "@queueClearAll": { - "description": "Button - clear all queue items" - }, - "queueClearAllMessage": "Ви впевнені, що хочете очистити всі завантаження?", - "@queueClearAllMessage": { - "description": "Clear queue confirmation" - }, - "settingsAutoExportFailed": "Автоматичний експорт невдалих завантажень", - "@settingsAutoExportFailed": { - "description": "Setting toggle for auto-export" - }, - "settingsAutoExportFailedSubtitle": "Автоматично зберігати невдалі завантаження у файл TXT", - "@settingsAutoExportFailedSubtitle": { - "description": "Subtitle for auto-export setting" - }, - "settingsDownloadNetwork": "Мережа для завантаження", - "@settingsDownloadNetwork": { - "description": "Setting for network type preference" - }, - "settingsDownloadNetworkAny": "Wi-Fi + мобільний інтернет", - "@settingsDownloadNetworkAny": { - "description": "Network option - use any connection" - }, - "settingsDownloadNetworkWifiOnly": "Тільки Wi-Fi", - "@settingsDownloadNetworkWifiOnly": { - "description": "Network option - only use WiFi" - }, - "settingsDownloadNetworkSubtitle": "Вибрати мережу для завантажень. Якщо встановлено значення «Тільки Wi-Fi», завантаження призупиняться через мобільні дані.", - "@settingsDownloadNetworkSubtitle": { - "description": "Subtitle explaining network preference" - }, - "albumFolderArtistAlbum": "Артист / Альбом", - "@albumFolderArtistAlbum": { - "description": "Album folder option" - }, - "albumFolderArtistAlbumSubtitle": "Альбоми/Ім'я артиста/Назва альбому/", - "@albumFolderArtistAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistYearAlbum": "Артист / [Рік] Альбом", - "@albumFolderArtistYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderArtistYearAlbumSubtitle": "Альбоми/Ім'я Виконавця/[2005] Назва альбому/", - "@albumFolderArtistYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderAlbumOnly": "Тільки альбом", - "@albumFolderAlbumOnly": { - "description": "Album folder option" - }, - "albumFolderAlbumOnlySubtitle": "Альбоми/Назва Альбому/", - "@albumFolderAlbumOnlySubtitle": { - "description": "Folder structure example" - }, - "albumFolderYearAlbum": "[Рік] Альбом", - "@albumFolderYearAlbum": { - "description": "Album folder option with year" - }, - "albumFolderYearAlbumSubtitle": "Альбоми/[2005] Назва Альбому/", - "@albumFolderYearAlbumSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumSingles": "Виконавець / Альбом + Сингли", - "@albumFolderArtistAlbumSingles": { - "description": "Album folder option with singles inside artist" - }, - "albumFolderArtistAlbumSinglesSubtitle": "Виконавець/Альбом/ та Виконавець/Сингли/", - "@albumFolderArtistAlbumSinglesSubtitle": { - "description": "Folder structure example" - }, - "albumFolderArtistAlbumFlat": "Виконавець / Альбом (сингли без альбомів)", - "@albumFolderArtistAlbumFlat": { - "description": "Album folder option with singles directly in artist folder" - }, - "albumFolderArtistAlbumFlatSubtitle": "Виконавець/Альбом/ та Виконавець/пісня.flac", - "@albumFolderArtistAlbumFlatSubtitle": { - "description": "Folder structure example for flat singles" - }, - "downloadedAlbumDeleteSelected": "Видалити вибране", - "@downloadedAlbumDeleteSelected": { - "description": "Button - delete selected tracks" - }, - "downloadedAlbumDeleteMessage": "Видалити {count} {count, plural, =1{трек} other{треків}} з цього альбому?\n\nЦе також призведе до видалення файлів зі сховища.", - "@downloadedAlbumDeleteMessage": { - "description": "Delete confirmation with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectedCount": "Вибрано {count}", - "@downloadedAlbumSelectedCount": { - "description": "Selection count indicator", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumAllSelected": "Усі треки вибрано", - "@downloadedAlbumAllSelected": { - "description": "Status - all items selected" - }, - "downloadedAlbumTapToSelect": "Натисніть на треки, щоб вибрати", - "@downloadedAlbumTapToSelect": { - "description": "Selection hint" - }, - "downloadedAlbumDeleteCount": "Видалити {count} {count, plural, =1{трек} other{треків}}", - "@downloadedAlbumDeleteCount": { - "description": "Delete button text with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadedAlbumSelectToDelete": "Виберіть треки для видалення", - "@downloadedAlbumSelectToDelete": { - "description": "Placeholder when nothing selected" - }, - "downloadedAlbumDiscHeader": "Диск {discNumber}", - "@downloadedAlbumDiscHeader": { - "description": "Header for disc separator in multi-disc albums", - "placeholders": { - "discNumber": { - "type": "int", - "example": "1" - } - } - }, - "recentTypeArtist": "Артист", - "@recentTypeArtist": { - "description": "Recent access item type - artist" - }, - "recentTypeAlbum": "Альбом", - "@recentTypeAlbum": { - "description": "Recent access item type - album" - }, - "recentTypeSong": "Пісня", - "@recentTypeSong": { - "description": "Recent access item type - song/track" - }, - "recentTypePlaylist": "Список відтворення", - "@recentTypePlaylist": { - "description": "Recent access item type - playlist" - }, - "recentEmpty": "Поки що немає нещодавніх записів", - "@recentEmpty": { - "description": "Empty state text for recent access list" - }, - "recentShowAllDownloads": "Показати всі завантаження", - "@recentShowAllDownloads": { - "description": "Button label to unhide hidden downloads in recent access" - }, - "recentPlaylistInfo": "Список відтворення: {name}", - "@recentPlaylistInfo": { - "description": "Snackbar message when tapping playlist in recent access", - "placeholders": { - "name": { - "type": "String", - "description": "Playlist name" - } - } - }, - "discographyDownload": "Завантажити дискографію", - "@discographyDownload": { - "description": "Button - download artist discography" - }, - "discographyDownloadAll": "Завантажити все", - "@discographyDownloadAll": { - "description": "Option - download entire discography" - }, - "discographyDownloadAllSubtitle": "{count} треків з {albumCount} релізів", - "@discographyDownloadAllSubtitle": { - "description": "Subtitle showing total tracks and albums", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographyAlbumsOnly": "Тільки альбоми", - "@discographyAlbumsOnly": { - "description": "Option - download only albums" - }, - "discographyAlbumsOnlySubtitle": "{count} треків з {albumCount} альбомів", - "@discographyAlbumsOnlySubtitle": { - "description": "Subtitle showing album tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySinglesOnly": "Тільки сингли та міні-альбоми", - "@discographySinglesOnly": { - "description": "Option - download only singles" - }, - "discographySinglesOnlySubtitle": "{count} треків з {albumCount} синглів", - "@discographySinglesOnlySubtitle": { - "description": "Subtitle showing singles tracks count", - "placeholders": { - "count": { - "type": "int" - }, - "albumCount": { - "type": "int" - } - } - }, - "discographySelectAlbums": "Вибрати альбоми...", - "@discographySelectAlbums": { - "description": "Option - manually select albums to download" - }, - "discographySelectAlbumsSubtitle": "Виберіть конкретні альбоми або сингли", - "@discographySelectAlbumsSubtitle": { - "description": "Subtitle for select albums option" - }, - "discographyFetchingTracks": "Отримання треків...", - "@discographyFetchingTracks": { - "description": "Progress - fetching album tracks" - }, - "discographyFetchingAlbum": "Отримання {current} з {total}...", - "@discographyFetchingAlbum": { - "description": "Progress - fetching specific album", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "discographySelectedCount": "{count} вибрано", - "@discographySelectedCount": { - "description": "Selection count badge", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographyDownloadSelected": "Завантажити вибране", - "@discographyDownloadSelected": { - "description": "Button - download selected albums" - }, - "discographyAddedToQueue": "Додано {count} треків до черги", - "@discographyAddedToQueue": { - "description": "Snackbar - tracks added from discography", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "discographySkippedDownloaded": "{added} додано, {skipped} вже завантажено", - "@discographySkippedDownloaded": { - "description": "Snackbar - with skipped tracks count", - "placeholders": { - "added": { - "type": "int" - }, - "skipped": { - "type": "int" - } - } - }, - "discographyNoAlbums": "Немає доступних альбомів", - "@discographyNoAlbums": { - "description": "Error - no albums found for artist" - }, - "discographyFailedToFetch": "Не вдалося отримати деякі альбоми", - "@discographyFailedToFetch": { - "description": "Error - some albums failed to load" - }, - "sectionStorageAccess": "Доступ до сховища", - "@sectionStorageAccess": { - "description": "Section header for storage access settings" - }, - "allFilesAccess": "Доступ до всіх файлів", - "@allFilesAccess": { - "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" - }, - "allFilesAccessEnabledSubtitle": "Можна записувати в будь-яку папку", - "@allFilesAccessEnabledSubtitle": { - "description": "Subtitle when all files access is enabled" - }, - "allFilesAccessDisabledSubtitle": "Обмежено лише медіа-папками", - "@allFilesAccessDisabledSubtitle": { - "description": "Subtitle when all files access is disabled" - }, - "allFilesAccessDescription": "Увімкніть цю опцію, якщо під час збереження у власні папки виникають помилки запису. Android 13+ за замовчуванням обмежує доступ до певних каталогів.", - "@allFilesAccessDescription": { - "description": "Description explaining when to enable all files access" - }, - "allFilesAccessDeniedMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", - "@allFilesAccessDeniedMessage": { - "description": "Message when permission is permanently denied" - }, - "allFilesAccessDisabledMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", - "@allFilesAccessDisabledMessage": { - "description": "Snackbar message when user disables all files access" - }, - "settingsLocalLibrary": "Локальна бібліотека", - "@settingsLocalLibrary": { - "description": "Settings menu item - local library" - }, - "settingsLocalLibrarySubtitle": "Сканування музики та виявлення дублікатів", - "@settingsLocalLibrarySubtitle": { - "description": "Subtitle for local library settings" - }, - "settingsCache": "Сховище та Кеш", - "@settingsCache": { - "description": "Settings menu item - cache management" - }, - "settingsCacheSubtitle": "Переглянути розмір і очистити кешовані дані", - "@settingsCacheSubtitle": { - "description": "Subtitle for cache management menu" - }, - "libraryTitle": "Локальна бібліотека", - "@libraryTitle": { - "description": "Library settings page title" - }, - "libraryScanSettings": "Налаштування сканування", - "@libraryScanSettings": { - "description": "Section header for scan settings" - }, - "libraryEnableLocalLibrary": "Увімкнути локальну бібліотеку", - "@libraryEnableLocalLibrary": { - "description": "Toggle to enable library scanning" - }, - "libraryEnableLocalLibrarySubtitle": "Скануати та відстежити свою існуючу музику", - "@libraryEnableLocalLibrarySubtitle": { - "description": "Subtitle for enable toggle" - }, - "libraryFolder": "Папка бібліотеки", - "@libraryFolder": { - "description": "Folder selection setting" - }, - "libraryFolderHint": "Натисніть, щоб вибрати папку", - "@libraryFolderHint": { - "description": "Placeholder when no folder selected" - }, - "libraryShowDuplicateIndicator": "Показати індикатор дублікатів", - "@libraryShowDuplicateIndicator": { - "description": "Toggle for duplicate indicator in search" - }, - "libraryShowDuplicateIndicatorSubtitle": "Показувати під час пошуку існуючих треків", - "@libraryShowDuplicateIndicatorSubtitle": { - "description": "Subtitle for duplicate indicator toggle" - }, - "libraryAutoScan": "Автоматичне сканування", - "@libraryAutoScan": { - "description": "Setting for automatic library scanning" - }, - "libraryAutoScanSubtitle": "Автоматичне сканування бібліотеки на наявність нових файлів", - "@libraryAutoScanSubtitle": { - "description": "Subtitle for auto scan setting" - }, - "libraryAutoScanOff": "Вимкнено", - "@libraryAutoScanOff": { - "description": "Auto scan disabled" - }, - "libraryAutoScanOnOpen": "Кожного разу коли додаток відкривається", - "@libraryAutoScanOnOpen": { - "description": "Auto scan when app opens" - }, - "libraryAutoScanDaily": "Щоденно", - "@libraryAutoScanDaily": { - "description": "Auto scan once per day" - }, - "libraryAutoScanWeekly": "Щотижнево", - "@libraryAutoScanWeekly": { - "description": "Auto scan once per week" - }, - "libraryActions": "Дії", - "@libraryActions": { - "description": "Section header for library actions" - }, - "libraryScan": "Сканувати бібліотеку", - "@libraryScan": { - "description": "Button to start library scan" - }, - "libraryScanSubtitle": "Сканувати для аудіофайлів", - "@libraryScanSubtitle": { - "description": "Subtitle for scan button" - }, - "libraryScanSelectFolderFirst": "Спочатку виберіть папку", - "@libraryScanSelectFolderFirst": { - "description": "Message when trying to scan without folder" - }, - "libraryCleanupMissingFiles": "Очищення відсутніх файлів", - "@libraryCleanupMissingFiles": { - "description": "Button to remove entries for missing files" - }, - "libraryCleanupMissingFilesSubtitle": "Видалити записи для файлів, яких більше не існує", - "@libraryCleanupMissingFilesSubtitle": { - "description": "Subtitle for cleanup button" - }, - "libraryClear": "Очистити бібліотеку", - "@libraryClear": { - "description": "Button to clear all library entries" - }, - "libraryClearSubtitle": "Видалити всі скановані треки", - "@libraryClearSubtitle": { - "description": "Subtitle for clear button" - }, - "libraryClearConfirmTitle": "Очистити бібліотеку", - "@libraryClearConfirmTitle": { - "description": "Dialog title for clear confirmation" - }, - "libraryClearConfirmMessage": "Це видалить усі скановані треки з вашої бібліотеки. Ваші фактичні музичні файли не будуть видалені.", - "@libraryClearConfirmMessage": { - "description": "Dialog message for clear confirmation" - }, - "libraryAbout": "Про локальну бібліотеку", - "@libraryAbout": { - "description": "Section header for about info" - }, - "libraryAboutDescription": "Сканує вашу існуючу музичну колекцію для виявлення дублікатів під час завантаження. Підтримує формати FLAC, M4A, MP3, Opus та OGG. Метадані зчитуються з тегів файлів, коли вони доступні.", - "@libraryAboutDescription": { - "description": "Description of local library feature" + "trackConvertDitherNone": "None", + "@trackConvertDitherNone": { + "description": "Lossless conversion dither option with no dithering applied" }, "libraryTracksUnit": "{count, plural, =1{трек} other{треків}}", "@libraryTracksUnit": { @@ -2458,1022 +36,59 @@ } } }, - "libraryFilesUnit": "{count, plural, =1{file} other{файлів}}", - "@libraryFilesUnit": { - "description": "Unit label for files count during library scanning", - "placeholders": { - "count": { - "type": "int" - } - } + "folderOrganizationNone": "Жодної організації", + "@folderOrganizationNone": { + "description": "Folder option - flat structure" }, - "libraryLastScanned": "Останнє сканування: {time}", - "@libraryLastScanned": { - "description": "Last scan time display", - "placeholders": { - "time": { - "type": "String" - } - } + "@storeRepoUrlHint": { + "description": "Hint/placeholder for the repository URL input field" }, - "libraryLastScannedNever": "Ніколи", - "@libraryLastScannedNever": { - "description": "Shown when library has never been scanned" - }, - "libraryScanning": "Сканування...", - "@libraryScanning": { - "description": "Status during scan" - }, - "libraryScanFinalizing": "Завершення роботи з бібліотекою...", - "@libraryScanFinalizing": { - "description": "Status shown after file scanning finishes but library persistence is still running" - }, - "libraryScanProgress": "{progress}% від {total} файлів", - "@libraryScanProgress": { - "description": "Scan progress display", - "placeholders": { - "progress": { - "type": "String" - }, - "total": { - "type": "int" - } - } - }, - "libraryInLibrary": "У бібліотеці", - "@libraryInLibrary": { - "description": "Badge shown on tracks that exist in local library" - }, - "libraryRemovedMissingFiles": "Видалено {count} відсутніх файлів з бібліотеки", - "@libraryRemovedMissingFiles": { - "description": "Snackbar after cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "libraryCleared": "Бібліотека очищена", - "@libraryCleared": { - "description": "Snackbar after clearing library" - }, - "libraryStorageAccessRequired": "Потрібен доступ до сховища", - "@libraryStorageAccessRequired": { - "description": "Dialog title for storage permission" - }, - "libraryStorageAccessMessage": "SpotiFLAC потрібен доступ до сховища для сканування вашої музичної бібліотеки. Надайте дозвіл у налаштуваннях.", - "@libraryStorageAccessMessage": { - "description": "Dialog message for storage permission" - }, - "libraryFolderNotExist": "Вибрана папка не існує", - "@libraryFolderNotExist": { - "description": "Error when folder doesn't exist" - }, - "librarySourceDownloaded": "Завантажені", - "@librarySourceDownloaded": { - "description": "Badge for tracks downloaded via SpotiFLAC" - }, - "librarySourceLocal": "Локальні", - "@librarySourceLocal": { - "description": "Badge for tracks from local library scan" - }, - "libraryFilterAll": "Усі", - "@libraryFilterAll": { - "description": "Filter chip - show all library items" - }, - "libraryFilterDownloaded": "Завантажені", - "@libraryFilterDownloaded": { - "description": "Filter chip - show only downloaded items" - }, - "libraryFilterLocal": "Локальні", - "@libraryFilterLocal": { - "description": "Filter chip - show only local library items" - }, - "libraryFilterTitle": "Фільтри", - "@libraryFilterTitle": { - "description": "Filter bottom sheet title" - }, - "libraryFilterReset": "Скинути", - "@libraryFilterReset": { - "description": "Reset all filters button" - }, - "libraryFilterApply": "Застосувати", - "@libraryFilterApply": { - "description": "Apply filters button" - }, - "libraryFilterSource": "Джерело", - "@libraryFilterSource": { - "description": "Filter section - source type" - }, - "libraryFilterQuality": "Якість", - "@libraryFilterQuality": { - "description": "Filter section - audio quality" - }, - "libraryFilterQualityHiRes": "Висока роздільна здатність (24 біти)", - "@libraryFilterQualityHiRes": { - "description": "Filter option - high resolution audio" - }, - "libraryFilterQualityCD": "CD (16-бітний)", - "@libraryFilterQualityCD": { - "description": "Filter option - CD quality audio" - }, - "libraryFilterQualityLossy": "Із втратами (lossy)", - "@libraryFilterQualityLossy": { - "description": "Filter option - lossy compressed audio" - }, - "libraryFilterFormat": "Формат", - "@libraryFilterFormat": { - "description": "Filter section - file format" - }, - "libraryFilterMetadata": "Метадані", - "@libraryFilterMetadata": { - "description": "Filter section - metadata completeness" - }, - "libraryFilterMetadataComplete": "Повні метадані", - "@libraryFilterMetadataComplete": { - "description": "Filter option - items with complete metadata" - }, - "libraryFilterMetadataMissingAny": "будь-які метадані", - "@libraryFilterMetadataMissingAny": { - "description": "Filter option - items missing any tracked metadata field" - }, - "libraryFilterMetadataMissingYear": "Відсутній рік", - "@libraryFilterMetadataMissingYear": { - "description": "Filter option - items missing release year/date" - }, - "libraryFilterMetadataMissingGenre": "Відсутній жанр", - "@libraryFilterMetadataMissingGenre": { - "description": "Filter option - items missing genre" - }, - "libraryFilterMetadataMissingAlbumArtist": "Відсутній виконавець альбому", - "@libraryFilterMetadataMissingAlbumArtist": { - "description": "Filter option - items missing album artist" - }, - "libraryFilterSort": "Сортувати", - "@libraryFilterSort": { - "description": "Filter section - sort order" - }, - "libraryFilterSortLatest": "Найновіші", - "@libraryFilterSortLatest": { - "description": "Sort option - newest first" - }, - "libraryFilterSortOldest": "Найстаріші", - "@libraryFilterSortOldest": { - "description": "Sort option - oldest first" - }, - "libraryFilterSortAlbumAsc": "Альбом (А-Я)", - "@libraryFilterSortAlbumAsc": { - "description": "Sort option - album ascending" - }, - "libraryFilterSortAlbumDesc": "Альбом (Я-А)", - "@libraryFilterSortAlbumDesc": { - "description": "Sort option - album descending" - }, - "libraryFilterSortGenreAsc": "Жанр (А-Я)", - "@libraryFilterSortGenreAsc": { - "description": "Sort option - genre ascending" - }, - "libraryFilterSortGenreDesc": "Жанр (Я-А)", - "@libraryFilterSortGenreDesc": { - "description": "Sort option - genre descending" - }, - "timeJustNow": "Щойно", - "@timeJustNow": { - "description": "Relative time - less than a minute ago" - }, - "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} хвилин тому}}", - "@timeMinutesAgo": { - "description": "Relative time - minutes ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} годин тому}}", - "@timeHoursAgo": { - "description": "Relative time - hours ago", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "tutorialWelcomeTitle": "Ласкаво просимо до SpotiFLAC!", - "@tutorialWelcomeTitle": { - "description": "Tutorial welcome page title" - }, - "tutorialWelcomeDesc": "Давайте дізнаємося, як завантажувати улюблену музику в якості без втрат. Цей короткий посібник покаже вам основи.", - "@tutorialWelcomeDesc": { - "description": "Tutorial welcome page description" - }, - "tutorialWelcomeTip1": "Завантажуйте музику зі Spotify, Deezer або вставляйте будь-яку підтримувану URL-адресу", - "@tutorialWelcomeTip1": { - "description": "Tutorial welcome tip 1" - }, - "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", - "@tutorialWelcomeTip2": { - "description": "Tutorial welcome tip 2" - }, - "tutorialWelcomeTip3": "Автоматичне додавання метаданих, обкладинки та текстів пісень", - "@tutorialWelcomeTip3": { - "description": "Tutorial welcome tip 3" - }, - "tutorialSearchTitle": "Пошук музики", - "@tutorialSearchTitle": { - "description": "Tutorial search page title" - }, - "tutorialSearchDesc": "Існує два простих способи знайти музику, яку ви хочете завантажити.", - "@tutorialSearchDesc": { - "description": "Tutorial search page description" - }, - "tutorialDownloadTitle": "Завантаження музики", - "@tutorialDownloadTitle": { - "description": "Tutorial download page title" - }, - "tutorialDownloadDesc": "Завантаження музики просте та швидке. Ось як це працює.", - "@tutorialDownloadDesc": { - "description": "Tutorial download page description" - }, - "tutorialLibraryTitle": "Ваша бібліотека", - "@tutorialLibraryTitle": { - "description": "Tutorial library page title" - }, - "tutorialLibraryDesc": "Вся завантажена музика організована на вкладці «Бібліотека».", - "@tutorialLibraryDesc": { - "description": "Tutorial library page description" - }, - "tutorialLibraryTip1": "Перегляд стану завантаження та черги на вкладці «Бібліотека»", - "@tutorialLibraryTip1": { - "description": "Tutorial library tip 1" - }, - "tutorialLibraryTip2": "Торкніться будь-якої композиції, щоб відтворити її за допомогою музичного плеєра", - "@tutorialLibraryTip2": { - "description": "Tutorial library tip 2" - }, - "tutorialLibraryTip3": "Перемикання між списком та сіткою для кращого перегляду", - "@tutorialLibraryTip3": { - "description": "Tutorial library tip 3" - }, - "tutorialExtensionsTitle": "Розширення", - "@tutorialExtensionsTitle": { - "description": "Tutorial extensions page title" - }, - "tutorialExtensionsDesc": "Розширте можливості програми за допомогою розширень спільноти.", - "@tutorialExtensionsDesc": { - "description": "Tutorial extensions page description" - }, - "tutorialExtensionsTip1": "Перегляньте вкладку «Репозиторій», щоб знайти корисні розширення", - "@tutorialExtensionsTip1": { - "description": "Tutorial extensions tip 1" - }, - "tutorialExtensionsTip2": "Додавайте нових постачальників послуг завантаження або джерела пошуку", - "@tutorialExtensionsTip2": { - "description": "Tutorial extensions tip 2" - }, - "tutorialExtensionsTip3": "Отримайте тексти пісень, розширені метадані та інші функції", - "@tutorialExtensionsTip3": { - "description": "Tutorial extensions tip 3" - }, - "tutorialSettingsTitle": "Налаштуйте свій досвід", - "@tutorialSettingsTitle": { - "description": "Tutorial settings page title" - }, - "tutorialSettingsDesc": "Персоналізуйте програму в налаштуваннях відповідно до ваших уподобань.", - "@tutorialSettingsDesc": { - "description": "Tutorial settings page description" - }, - "tutorialSettingsTip1": "Змініть місце завантаження та організації папок", - "@tutorialSettingsTip1": { - "description": "Tutorial settings tip 1" - }, - "tutorialSettingsTip2": "Встановіть параметри якості звуку та формату за замовчуванням", - "@tutorialSettingsTip2": { - "description": "Tutorial settings tip 2" - }, - "tutorialSettingsTip3": "Налаштуйте тему та зовнішній вигляд програми", - "@tutorialSettingsTip3": { - "description": "Tutorial settings tip 3" - }, - "tutorialReadyMessage": "Готово! Почніть завантажувати свою улюблену музику прямо зараз.", - "@tutorialReadyMessage": { - "description": "Tutorial completion message" - }, - "libraryForceFullScan": "Примусове повне сканування", - "@libraryForceFullScan": { - "description": "Button to force a complete rescan of library" - }, - "libraryForceFullScanSubtitle": "Пересканувати всі файли, ігноруючи кеш", - "@libraryForceFullScanSubtitle": { - "description": "Subtitle for force full scan button" - }, - "cleanupOrphanedDownloads": "Очищення застарілих завантажень", - "@cleanupOrphanedDownloads": { - "description": "Button to remove history entries for deleted files" - }, - "cleanupOrphanedDownloadsSubtitle": "Видалити записи історії для файлів, яких більше не існує", - "@cleanupOrphanedDownloadsSubtitle": { - "description": "Subtitle for orphaned cleanup button" - }, - "cleanupOrphanedDownloadsResult": "Видалено {count} утрачених записів з історії", - "@cleanupOrphanedDownloadsResult": { - "description": "Snackbar after orphan cleanup", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cleanupOrphanedDownloadsNone": "Не знайдено утрачених записів", - "@cleanupOrphanedDownloadsNone": { - "description": "Snackbar when no orphans found" - }, - "cacheTitle": "Зберігання та кеш", - "@cacheTitle": { - "description": "Cache management page title" - }, - "cacheSummaryTitle": "Огляд кешу", - "@cacheSummaryTitle": { - "description": "Heading for cache summary card" - }, - "cacheSummarySubtitle": "Очищення кешу не призведе до видалення завантажених музичних файлів.", - "@cacheSummarySubtitle": { - "description": "Helper text for cache summary card" - }, - "cacheEstimatedTotal": "Орієнтовне використання кешу: {size}", - "@cacheEstimatedTotal": { - "description": "Total cache size shown in summary", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheSectionStorage": "Кешовані дані", - "@cacheSectionStorage": { - "description": "Section header for cache entries" - }, - "cacheSectionMaintenance": "Технічне обслуговування", - "@cacheSectionMaintenance": { - "description": "Section header for cleanup actions" - }, - "cacheAppDirectory": "Каталог кешу додатка", - "@cacheAppDirectory": { - "description": "Cache item title for app cache directory" - }, - "cacheAppDirectoryDesc": "HTTP-відповіді, дані WebView та інші тимчасові дані додатків.", - "@cacheAppDirectoryDesc": { - "description": "Description of what app cache directory contains" - }, - "cacheTempDirectory": "Тимчасовий каталог", - "@cacheTempDirectory": { - "description": "Cache item title for temporary files directory" - }, - "cacheTempDirectoryDesc": "Тимчасові файли із завантажень та конвертації аудіо.", - "@cacheTempDirectoryDesc": { - "description": "Description of what temporary directory contains" - }, - "cacheCoverImage": "Кеш зображень обкладинок", - "@cacheCoverImage": { - "description": "Cache item title for persistent cover images" - }, - "cacheCoverImageDesc": "Завантажено обкладинку альбому та треку. Завантаження відбудеться повторно після перегляду.", - "@cacheCoverImageDesc": { - "description": "Description of what cover image cache contains" - }, - "cacheLibraryCover": "Кеш бібліотеки обкладинок", - "@cacheLibraryCover": { - "description": "Cache item title for local library cover art images" - }, - "cacheLibraryCoverDesc": "Обкладинку витягнуто з локальних музичних файлів. Буде повторно витягнуто під час наступного сканування.", - "@cacheLibraryCoverDesc": { - "description": "Description of what library cover cache contains" - }, - "cacheExploreFeed": "Огляд кешу стрічки", - "@cacheExploreFeed": { - "description": "Cache item title for explore home feed cache" - }, - "cacheExploreFeedDesc": "Переглянути вміст вкладки (нові випуски, тренди). Оновиться під час наступного відвідування.", - "@cacheExploreFeedDesc": { - "description": "Description of what explore feed cache contains" - }, - "cacheTrackLookup": "Відстеження кешу пошуку", - "@cacheTrackLookup": { - "description": "Cache item title for track ID lookup cache" - }, - "cacheTrackLookupDesc": "Пошук ідентифікаторів треків Spotify/Deezer. Очищення може уповільнити наступні кілька пошуків.", - "@cacheTrackLookupDesc": { - "description": "Description of what track lookup cache contains" - }, - "cacheCleanupUnusedDesc": "Видалити історію втрачених завантажень та записи бібліотеки для відсутніх файлів.", - "@cacheCleanupUnusedDesc": { - "description": "Description of what cleanup unused data does" - }, - "cacheNoData": "Кешованих даних немає", - "@cacheNoData": { - "description": "Label when cache category has no data" - }, - "cacheSizeWithFiles": "{size} у {count} файлах", - "@cacheSizeWithFiles": { - "description": "Cache size and file count", - "placeholders": { - "size": { - "type": "String" - }, - "count": { - "type": "int" - } - } - }, - "cacheSizeOnly": "{size}", - "@cacheSizeOnly": { - "description": "Cache size only", - "placeholders": { - "size": { - "type": "String" - } - } - }, - "cacheEntries": "{count} записів", - "@cacheEntries": { - "description": "Track cache entry count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "cacheClearSuccess": "Очищено: {target}", - "@cacheClearSuccess": { - "description": "Snackbar after clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearConfirmTitle": "Очистити кеш?", - "@cacheClearConfirmTitle": { - "description": "Dialog title before clearing one cache category" - }, - "cacheClearConfirmMessage": "Це очистить кешовані дані для {target}. Завантажені музичні файли не будуть видалені.", - "@cacheClearConfirmMessage": { - "description": "Dialog message before clearing selected cache", - "placeholders": { - "target": { - "type": "String" - } - } - }, - "cacheClearAllConfirmTitle": "Очистити увесь кеш?", - "@cacheClearAllConfirmTitle": { - "description": "Dialog title before clearing all caches" - }, - "cacheClearAllConfirmMessage": "Це очистить усі категорії кешу на цій сторінці. Завантажені музичні файли не будуть видалені.", - "@cacheClearAllConfirmMessage": { - "description": "Dialog message before clearing all caches" - }, - "cacheClearAll": "Очистити весь кеш", - "@cacheClearAll": { - "description": "Button label to clear all caches" - }, - "cacheCleanupUnused": "Очищення невикористаних даних", - "@cacheCleanupUnused": { - "description": "Action title for cleaning unused entries" - }, - "cacheCleanupUnusedSubtitle": "Видалити історію утрачених завантажень файлів та відсутні записи бібліотеки", - "@cacheCleanupUnusedSubtitle": { - "description": "Subtitle for cleanup unused data action" - }, - "cacheCleanupResult": "Очищення завершено: {downloadCount} утрачених завантажень, {libraryCount} відсутніх записів бібліотеки", - "@cacheCleanupResult": { - "description": "Snackbar after unused data cleanup", - "placeholders": { - "downloadCount": { - "type": "int" - }, - "libraryCount": { - "type": "int" - } - } - }, - "cacheRefreshStats": "Оновити статистику", - "@cacheRefreshStats": { - "description": "Button label to refresh cache statistics" - }, - "trackSaveCoverArt": "Зберегти обкладинку", - "@trackSaveCoverArt": { - "description": "Menu action - save album cover art as file" - }, - "trackSaveCoverArtSubtitle": "Зберегти обкладинку альбому як файл .jpg", - "@trackSaveCoverArtSubtitle": { - "description": "Subtitle for save cover art action" - }, - "trackSaveLyrics": "Зберегти текст пісні (.lrc)", - "@trackSaveLyrics": { - "description": "Menu action - save lyrics as .lrc file" - }, - "trackSaveLyricsSubtitle": "Отримати та зберегти текст пісні у форматі .lrc", - "@trackSaveLyricsSubtitle": { - "description": "Subtitle for save lyrics action" - }, - "trackSaveLyricsProgress": "Збереження тексту пісні...", - "@trackSaveLyricsProgress": { - "description": "Snackbar while saving lyrics to file" - }, - "trackReEnrich": "Перезбагачувати", - "@trackReEnrich": { - "description": "Menu action - re-embed metadata into audio file" - }, - "trackReEnrichOnlineSubtitle": "Пошук метаданих в Інтернеті та вбудовування у файл", - "@trackReEnrichOnlineSubtitle": { - "description": "Subtitle for re-enrich metadata action for local items" - }, - "trackReEnrichFieldsTitle": "Поля для оновлення", - "@trackReEnrichFieldsTitle": { - "description": "Section title for field selection in re-enrich dialog" - }, - "trackReEnrichFieldCover": "Обкладинка", - "@trackReEnrichFieldCover": { - "description": "Checkbox label for cover art field in re-enrich" - }, - "trackReEnrichFieldLyrics": "Тексти пісень", - "@trackReEnrichFieldLyrics": { - "description": "Checkbox label for lyrics field in re-enrich" - }, - "trackReEnrichFieldBasicTags": "Альбом, Виконавець альбому", - "@trackReEnrichFieldBasicTags": { - "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" - }, - "trackReEnrichFieldTrackInfo": "Номер треку та диска", - "@trackReEnrichFieldTrackInfo": { - "description": "Checkbox label for track info in re-enrich" - }, - "trackReEnrichFieldReleaseInfo": "Дата та ISRC", - "@trackReEnrichFieldReleaseInfo": { - "description": "Checkbox label for release info in re-enrich" - }, - "trackReEnrichFieldExtra": "Жанр, Лейбл, Авторське право", - "@trackReEnrichFieldExtra": { - "description": "Checkbox label for extra metadata in re-enrich" - }, - "trackReEnrichSelectAll": "Вибрати все", - "@trackReEnrichSelectAll": { - "description": "Select all fields checkbox in re-enrich" - }, - "trackEditMetadata": "Редагувати метадані", - "@trackEditMetadata": { - "description": "Menu action - edit embedded metadata" - }, - "trackCoverSaved": "Обкладинку збережено до {fileName}", - "@trackCoverSaved": { - "description": "Snackbar after cover art saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackCoverNoSource": "Джерело обкладинки недоступне", - "@trackCoverNoSource": { - "description": "Snackbar when no cover art URL or embedded cover" - }, - "trackLyricsSaved": "Текст пісні збережено в {fileName}", - "@trackLyricsSaved": { - "description": "Snackbar after lyrics saved", - "placeholders": { - "fileName": { - "type": "String" - } - } - }, - "trackReEnrichProgress": "Повторне збагачення метаданих...", - "@trackReEnrichProgress": { - "description": "Snackbar while re-enriching metadata" - }, - "trackReEnrichSearching": "Пошук метаданих в Інтернеті...", - "@trackReEnrichSearching": { - "description": "Snackbar while searching metadata from internet for local items" - }, - "trackReEnrichSuccess": "Метадані повторно збагачені успішно", - "@trackReEnrichSuccess": { - "description": "Snackbar after successful re-enrichment" - }, - "trackReEnrichFfmpegFailed": "Не вдалося вбудувати метадані FFmpeg", - "@trackReEnrichFfmpegFailed": { - "description": "Snackbar when FFmpeg embed fails for MP3/Opus" - }, - "queueFlacAction": "Черга FLAC", - "@queueFlacAction": { - "description": "Action/button label for queueing FLAC redownloads for local tracks" - }, - "queueFlacConfirmMessage": "Пошук онлайн-збігів для вибраних треків та додавання завантажень FLAC до черги.\n\nІснуючі файли не будуть змінені або видалені.\n\nАвтоматично додаються до черги лише збіги з високою достовірністю.\n\n{count} вибрано", - "@queueFlacConfirmMessage": { - "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueFlacFindingProgress": "Пошук FLAC-збігів... ({current}/{total})", - "@queueFlacFindingProgress": { - "description": "Snackbar while resolving remote matches for local FLAC redownloads", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "queueFlacNoReliableMatches": "Не знайдено надійних онлайн-відповідей для вибраного запиту", - "@queueFlacNoReliableMatches": { - "description": "Snackbar when no safe FLAC redownload matches were found" - }, - "queueFlacQueuedWithSkipped": "Додано {addedCount} треків до черги, пропущено {skippedCount}", - "@queueFlacQueuedWithSkipped": { - "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", - "placeholders": { - "addedCount": { - "type": "int" - }, - "skippedCount": { - "type": "int" - } - } - }, - "trackSaveFailed": "Не вдалося: {error}", - "@trackSaveFailed": { - "description": "Snackbar when save operation fails", - "placeholders": { - "error": { - "type": "String" - } - } - }, - "trackConvertFormat": "Конвертувати формат", - "@trackConvertFormat": { - "description": "Menu item - convert audio format" - }, - "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", - "@trackConvertFormatSubtitle": { - "description": "Subtitle for convert format menu item" - }, - "trackConvertTitle": "Конвертувати аудіо", - "@trackConvertTitle": { - "description": "Title of convert bottom sheet" - }, - "trackConvertTargetFormat": "Цільовий формат", - "@trackConvertTargetFormat": { - "description": "Label for format selection" - }, - "trackConvertBitrate": "Бітрейт", - "@trackConvertBitrate": { - "description": "Label for bitrate selection" - }, - "trackConvertConfirmTitle": "Підтвердити конверсію", "@trackConvertConfirmTitle": { "description": "Confirmation dialog title" }, - "trackConvertConfirmMessage": "Конвертувати з {sourceFormat} в {targetFormat} із бітрейтом {bitrate}?\n\nОригінальний файл буде видалено після конвертації.", - "@trackConvertConfirmMessage": { - "description": "Confirmation dialog message", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - }, - "bitrate": { - "type": "String" - } - } - }, - "trackConvertConfirmMessageLossless": "Конвертувати з {sourceFormat} у {targetFormat}? (Lossless — без втрати якості)\n\nОригінальний файл буде видалено після конвертації.", - "@trackConvertConfirmMessageLossless": { - "description": "Confirmation dialog message for lossless-to-lossless conversion", - "placeholders": { - "sourceFormat": { - "type": "String" - }, - "targetFormat": { - "type": "String" - } - } - }, - "trackConvertLosslessHint": "Lossless конвертація — без втрати якості", - "@trackConvertLosslessHint": { - "description": "Hint shown when converting between lossless formats" - }, - "trackConvertConverting": "Конвертування аудіо...", - "@trackConvertConverting": { - "description": "Snackbar while converting" - }, - "trackConvertSuccess": "Конвертовано в {format} успішно", - "@trackConvertSuccess": { - "description": "Snackbar after successful conversion", - "placeholders": { - "format": { - "type": "String" - } - } - }, - "trackConvertFailed": "Конвертація не вдалася", - "@trackConvertFailed": { - "description": "Snackbar when conversion fails" - }, - "cueSplitTitle": "Розділений аркуш CUE", - "@cueSplitTitle": { - "description": "Title for CUE split bottom sheet" - }, - "cueSplitSubtitle": "Розділення CUE+FLAC на окремі треки", - "@cueSplitSubtitle": { - "description": "Subtitle for CUE split menu item" - }, - "cueSplitAlbum": "Альбом: {album}", - "@cueSplitAlbum": { - "description": "Album name in CUE split sheet", - "placeholders": { - "album": { - "type": "String" - } - } - }, - "cueSplitArtist": "Артист: {artist}", - "@cueSplitArtist": { - "description": "Artist name in CUE split sheet", - "placeholders": { - "artist": { - "type": "String" - } - } - }, - "cueSplitTrackCount": "{count} треків", - "@cueSplitTrackCount": { - "description": "Number of tracks in CUE sheet", + "@extensionPatternsCount": { + "description": "URL patterns count", "placeholders": { "count": { "type": "int" } } }, - "cueSplitConfirmTitle": "Розділений альбом CUE", - "@cueSplitConfirmTitle": { - "description": "CUE split confirmation dialog title" + "audioAnalysisContainer": "Container", + "@audioAnalysisContainer": { + "description": "Audio container metric label" }, - "cueSplitConfirmMessage": "Розділити \"{album}\" на {count} окремих FLAC-файлів?\n\nФайли будуть збережені в одному каталозі.", - "@cueSplitConfirmMessage": { - "description": "CUE split confirmation dialog message", + "libraryAutoScanOff": "Вимкнено", + "@libraryAutoScanOff": { + "description": "Auto scan disabled" + }, + "shareSheetLinkCopied": "{service} link copied", + "@shareSheetLinkCopied": { + "description": "Snackbar after copying a cross-service link", "placeholders": { - "album": { - "type": "String" - }, - "count": { - "type": "int" - } + "service": {} } }, - "cueSplitSplitting": "Розділення аркуша CUE... ({current}/{total})", - "@cueSplitSplitting": { - "description": "Snackbar while splitting CUE", - "placeholders": { - "current": { - "type": "int" - }, - "total": { - "type": "int" - } - } + "providerPriorityFallbackExtensionsDescription": "Choose which installed download extensions can be used during automatic fallback.", + "@providerPriorityFallbackExtensionsDescription": { + "description": "Section description for extension fallback selection" }, - "cueSplitSuccess": "Розділено на {count} треків успішно", - "@cueSplitSuccess": { - "description": "Snackbar after successful CUE split", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", "placeholders": { "count": { "type": "int" } } }, - "cueSplitFailed": "Розділення CUE не вдалося", - "@cueSplitFailed": { - "description": "Snackbar when CUE split fails" - }, - "cueSplitNoAudioFile": "Аудіофайл для цього аркуша CUE не знайдено", - "@cueSplitNoAudioFile": { - "description": "Error when CUE audio file is missing" - }, - "cueSplitButton": "Розділити на треки", - "@cueSplitButton": { - "description": "Button text to start CUE splitting" - }, - "actionCreate": "Створити", - "@actionCreate": { - "description": "Generic action button - create" - }, - "collectionFoldersTitle": "Мої папки", - "@collectionFoldersTitle": { - "description": "Library section title for custom folders" - }, - "collectionWishlist": "Список бажань", - "@collectionWishlist": { - "description": "Custom folder for saved tracks to download later" - }, - "collectionLoved": "Вподобані", - "@collectionLoved": { - "description": "Custom folder for favorite tracks" - }, - "collectionPlaylists": "Списки відтворення", - "@collectionPlaylists": { - "description": "Custom user playlists folder" - }, - "collectionPlaylist": "Список відтворення", - "@collectionPlaylist": { - "description": "Single playlist label" - }, - "collectionAddToPlaylist": "Додати до списку відтворення", - "@collectionAddToPlaylist": { - "description": "Action to add a track to user playlist" - }, - "collectionCreatePlaylist": "Створити плейлист", - "@collectionCreatePlaylist": { - "description": "Action to create a new playlist" - }, - "collectionNoPlaylistsYet": "Поки що немає списків відтворення", - "@collectionNoPlaylistsYet": { - "description": "Empty state title when user has no playlists" - }, - "collectionNoPlaylistsSubtitle": "Створіть список відтворення, щоб розпочати категоризацію треків", - "@collectionNoPlaylistsSubtitle": { - "description": "Empty state subtitle when user has no playlists" - }, - "collectionPlaylistTracks": "{count, plural, =1{1 трек} other{{count} треків}}", - "@collectionPlaylistTracks": { - "description": "Track count label for custom playlists", + "@extensionsHomeFeedUse": { + "description": "Extensions page - subtitle for a specific extension home feed option", "placeholders": { - "count": { - "type": "int" - } - } - }, - "collectionAddedToPlaylist": "Додано до \"{playlistName}\"", - "@collectionAddedToPlaylist": { - "description": "Snackbar after adding track to playlist", - "placeholders": { - "playlistName": { + "extensionName": { "type": "String" } } }, - "collectionAlreadyInPlaylist": "Вже у списку відтворення \"{playlistName}\"", - "@collectionAlreadyInPlaylist": { - "description": "Snackbar when track already exists in playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistCreated": "Список відтворення створено", - "@collectionPlaylistCreated": { - "description": "Snackbar after creating playlist" - }, - "collectionPlaylistNameHint": "Назва списку відтворення", - "@collectionPlaylistNameHint": { - "description": "Hint text for playlist name input" - }, - "collectionPlaylistNameRequired": "Потрібно вказати назву списку відтворення", - "@collectionPlaylistNameRequired": { - "description": "Validation error for empty playlist name" - }, - "collectionRenamePlaylist": "Перейменувати список відтворення", - "@collectionRenamePlaylist": { - "description": "Action to rename playlist" - }, - "collectionDeletePlaylist": "Видалити список відтворення", - "@collectionDeletePlaylist": { - "description": "Action to delete playlist" - }, - "collectionDeletePlaylistMessage": "Видалити \"{playlistName}\" та всі треки в ньому?", - "@collectionDeletePlaylistMessage": { - "description": "Confirmation message for deleting playlist", - "placeholders": { - "playlistName": { - "type": "String" - } - } - }, - "collectionPlaylistDeleted": "Список відтворення видалено", - "@collectionPlaylistDeleted": { - "description": "Snackbar after deleting playlist" - }, - "collectionPlaylistRenamed": "Список відтворення перейменовано", - "@collectionPlaylistRenamed": { - "description": "Snackbar after renaming playlist" - }, - "collectionWishlistEmptyTitle": "Список бажань порожній", - "@collectionWishlistEmptyTitle": { - "description": "Wishlist empty state title" - }, - "collectionWishlistEmptySubtitle": "Натисніть + на треках, щоб зберегти те, що ви хочете завантажити пізніше", - "@collectionWishlistEmptySubtitle": { - "description": "Wishlist empty state subtitle" - }, - "collectionLovedEmptyTitle": "Папка \"Улюблені\" порожня", - "@collectionLovedEmptyTitle": { - "description": "Loved empty state title" - }, - "collectionLovedEmptySubtitle": "Натисніть «Подобається» на треках, щоб зберегти у свої улюблені", - "@collectionLovedEmptySubtitle": { - "description": "Loved empty state subtitle" - }, - "collectionPlaylistEmptyTitle": "Список відтворення порожній", - "@collectionPlaylistEmptyTitle": { - "description": "Playlist empty state title" - }, - "collectionPlaylistEmptySubtitle": "Тривале натискання + на будь-якій доріжці додасть її сюди", - "@collectionPlaylistEmptySubtitle": { - "description": "Playlist empty state subtitle" - }, - "collectionRemoveFromPlaylist": "Видалити зі списку відтворення", - "@collectionRemoveFromPlaylist": { - "description": "Tooltip for removing track from playlist" - }, - "collectionRemoveFromFolder": "Видалити з папки", - "@collectionRemoveFromFolder": { - "description": "Tooltip for removing track from wishlist/loved folder" - }, - "collectionRemoved": "\"{trackName}\" видалено", - "@collectionRemoved": { - "description": "Snackbar after removing a track from a collection", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToLoved": "\"{trackName}\" додано до списку улюблених", - "@collectionAddedToLoved": { - "description": "Snackbar after adding track to loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromLoved": "\"{trackName}\" видалено з уподобань", - "@collectionRemovedFromLoved": { - "description": "Snackbar after removing track from loved folder", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionAddedToWishlist": "\"{trackName}\" додано до списку бажань", - "@collectionAddedToWishlist": { - "description": "Snackbar after adding track to wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "collectionRemovedFromWishlist": "\"{trackName}\" видалено зі списку бажань", - "@collectionRemovedFromWishlist": { - "description": "Snackbar after removing track from wishlist", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "trackOptionAddToLoved": "Додати до улюблених", - "@trackOptionAddToLoved": { - "description": "Bottom sheet action label - add track to loved folder" - }, - "trackOptionRemoveFromLoved": "Видалити з улюблених", - "@trackOptionRemoveFromLoved": { - "description": "Bottom sheet action label - remove track from loved folder" - }, - "trackOptionAddToWishlist": "Додати до списку бажань", - "@trackOptionAddToWishlist": { - "description": "Bottom sheet action label - add track to wishlist" - }, - "trackOptionRemoveFromWishlist": "Видалити зі списку бажань", - "@trackOptionRemoveFromWishlist": { - "description": "Bottom sheet action label - remove track from wishlist" - }, - "collectionPlaylistChangeCover": "Змінити зображення обкладинки", - "@collectionPlaylistChangeCover": { - "description": "Bottom sheet action to pick a custom cover image for a playlist" - }, - "collectionPlaylistRemoveCover": "Видалити зображення обкладинки", - "@collectionPlaylistRemoveCover": { - "description": "Bottom sheet action to remove custom cover image from a playlist" - }, "selectionShareCount": "Поділитися {count} {count, plural, =1{трек} other{треків}}", "@selectionShareCount": { "description": "Share button text with count in selection mode", @@ -3483,42 +98,102 @@ } } }, - "selectionShareNoFiles": "Файлів для спільного доступу не знайдено", - "@selectionShareNoFiles": { - "description": "Snackbar when no selected files exist on disk" - }, - "selectionConvertCount": "Конвертувати {count} {count, plural, =1{трек} other{треків}}", - "@selectionConvertCount": { - "description": "Convert button text with count in selection mode", + "@storeExtensionsCount": { + "description": "Store extension result count", "placeholders": { "count": { "type": "int" } } }, - "selectionConvertNoConvertible": "Трансформованих треків не вибрано", - "@selectionConvertNoConvertible": { - "description": "Snackbar when no selected tracks support conversion" + "@logSearchHint": { + "description": "Log search placeholder" }, - "selectionBatchConvertConfirmTitle": "Пакетне конвертування", - "@selectionBatchConvertConfirmTitle": { - "description": "Confirmation dialog title for batch conversion" + "@audioAnalysisSamples": { + "description": "Total samples metric label" }, - "selectionBatchConvertConfirmMessage": "Конвертувати {count} {count, plural, =1{трек} other{треків}} у {format} з бітрейтом {bitrate}?\n\nОригінальні файли будуть видалені після конвертації.", - "@selectionBatchConvertConfirmMessage": { - "description": "Confirmation dialog message for batch conversion", + "trackCoverReplace": "Replace Cover", + "@trackCoverReplace": { + "description": "Button label for replacing selected cover art" + }, + "@discographyAddedToQueue": { + "description": "Snackbar - tracks added from discography", "placeholders": { "count": { "type": "int" - }, - "format": { - "type": "String" - }, - "bitrate": { - "type": "String" } } }, + "downloadAppleElrcWordSyncEnabled": "Raw word-by-word timestamps preserved", + "@downloadAppleElrcWordSyncEnabled": { + "description": "Subtitle when Apple Music eLRC word sync is enabled" + }, + "@notifChannelDownloadDesc": { + "description": "Android notification channel description for download progress" + }, + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "@trackGenre": { + "description": "Metadata label - music genre" + }, + "recentTypeSong": "Пісня", + "@recentTypeSong": { + "description": "Recent access item type - song/track" + }, + "logShareLogs": "Журнали обміну", + "@logShareLogs": { + "description": "Share button tooltip" + }, + "@storeFilterLyrics": { + "description": "Store filter - lyrics providers" + }, + "extensionsInstallButton": "Встановити розширення", + "@extensionsInstallButton": { + "description": "Button to install extension from file" + }, + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "nowPlayingMinimize": "Minimize", + "@nowPlayingMinimize": { + "description": "Tooltip for minimizing the now playing screen" + }, + "logIssueNetworkErrorSuggestion": "Check your internet connection", + "@logIssueNetworkErrorSuggestion": { + "description": "Diagnostic badge suggestion for generic network errors" + }, + "extensionsNoExtensions": "Розширень не встановлено", + "@extensionsNoExtensions": { + "description": "Empty state - no extensions" + }, + "@cacheRefresh": { + "description": "Tooltip for refresh button on cache management page" + }, + "@snackbarHistoryCleared": { + "description": "Snackbar - history deleted" + }, + "cueSplitFailed": "Розділення CUE не вдалося", + "@cueSplitFailed": { + "description": "Snackbar when CUE split fails" + }, + "trackConvertLosslessSuffix": "Lossless", + "@trackConvertLosslessSuffix": { + "description": "Suffix used in converted lossless quality labels" + }, + "homeSubtitle": "Вставте URL-адресу яка підтримується, або виконайте пошук за назвою", + "@homeSubtitle": { + "description": "Subtitle shown below search box" + }, "selectionBatchConvertConfirmMessageLossless": "Конвертувати {count} {count, plural, =1{трек} other{треків}} у {format}? (Lossless — без втрати якості)\n\nОригінальні файли будуть видалені після конвертації.", "@selectionBatchConvertConfirmMessageLossless": { "description": "Confirmation dialog message for lossless batch conversion", @@ -3531,18 +206,297 @@ } } }, - "selectionBatchConvertProgress": "Конвертування {current} з {total}...", - "@selectionBatchConvertProgress": { - "description": "Snackbar during batch conversion progress", + "@extensionVerificationHelpMessageManual": { + "description": "Dialog message when automatic browser launch for verification fails" + }, + "queueRateLimitMessage": "This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.", + "@queueRateLimitMessage": { + "description": "Explanation shown on a failed queue item when the download service rate limits requests" + }, + "searchSortDateOldest": "Дата випуску (найстаріша)", + "@searchSortDateOldest": { + "description": "Sort option - oldest release first" + }, + "aboutSjdonadoDesc": "Творець I Don't Have Spotify (IDHS). Резервний розв'язувач посилань, який рятує становище!", + "@aboutSjdonadoDesc": { + "description": "Credit description for sjdonado" + }, + "nowPlayingShuffleOn": "Shuffle on", + "@nowPlayingShuffleOn": { + "description": "Tooltip when shuffle mode is enabled" + }, + "sectionColor": "Колір", + "@sectionColor": { + "description": "Settings section header" + }, + "@providerPriorityFallbackExtensionsHint": { + "description": "Hint below the extension fallback selection list" + }, + "cacheCoverImage": "Кеш зображень обкладинок", + "@cacheCoverImage": { + "description": "Cache item title for persistent cover images" + }, + "@navSettings": { + "description": "Bottom navigation - Settings tab" + }, + "@trackCoverReplaceNotice": { + "description": "Notice shown when a new cover has been selected but not saved yet" + }, + "cueSplitConfirmTitle": "Розділений альбом CUE", + "@cueSplitConfirmTitle": { + "description": "CUE split confirmation dialog title" + }, + "@trackDeleteConfirmMessage": { + "description": "Delete confirmation message" + }, + "cacheClearSuccess": "Очищено: {target}", + "@cacheClearSuccess": { + "description": "Snackbar after clearing selected cache", "placeholders": { - "current": { + "target": { + "type": "String" + } + } + }, + "editMetadataFieldCover": "Обкладинка", + "@editMetadataFieldCover": { + "description": "Chip label for cover art field in auto-fill selector" + }, + "snackbarSelectExtFile": "Будь ласка, виберіть файл .spotiflac-ext", + "@snackbarSelectExtFile": { + "description": "Snackbar - wrong file type selected" + }, + "libraryFilterFormat": "Формат", + "@libraryFilterFormat": { + "description": "Filter section - file format" + }, + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "@setupNext": { + "description": "Next button text" + }, + "@releaseTypeSingle": { + "description": "Badge label for single releases" + }, + "@optionsDefaultSearchTab": { + "description": "Title for the preferred default search tab setting" + }, + "trackConvertLosslessOutputWithCap": "Lossless output with {quality} cap", + "@trackConvertLosslessOutputWithCap": { + "description": "Hint shown when lossless conversion will cap bit depth or sample rate", + "placeholders": { + "quality": { + "type": "String" + } + } + }, + "bulkDownloadSelectPlaylists": "Вибрати списки відтворення для завантаження", + "@bulkDownloadSelectPlaylists": { + "description": "Button label when no playlists are selected for download" + }, + "artistOptionAddToFavorites": "Add to Favorite Artists", + "@artistOptionAddToFavorites": { + "description": "Action label - add artist to favorite artists" + }, + "@timeJustNow": { + "description": "Relative time - less than a minute ago" + }, + "@optionsUseExtensionProviders": { + "description": "Legacy setting label for extension download providers" + }, + "downloadLossyOpus256": "Opus 256 кбіт/с", + "@downloadLossyOpus256": { + "description": "Lossy format option - Opus 256kbps" + }, + "discographySinglesOnlySubtitle": "{count} треків з {albumCount} синглів", + "@discographySinglesOnlySubtitle": { + "description": "Subtitle showing singles tracks count", + "placeholders": { + "count": { "type": "int" }, - "total": { + "albumCount": { "type": "int" } } }, + "optionsExtensionStore": "Репозиторій розширень", + "@optionsExtensionStore": { + "description": "Show/hide store tab" + }, + "libraryDownloadsHistoryExcluded": "{count} from Downloads history (excluded from list)", + "@libraryDownloadsHistoryExcluded": { + "description": "Library count note for downloaded history items excluded from the local list", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@errorUrlFetchFailed": { + "description": "Error message - generic URL fetch failure" + }, + "@trackOptionAddToWishlist": { + "description": "Bottom sheet action label - add track to wishlist" + }, + "discographySinglesOnly": "Тільки сингли та міні-альбоми", + "@discographySinglesOnly": { + "description": "Option - download only singles" + }, + "@downloadSongLinkRegionDesc": { + "description": "Description in SongLink region picker" + }, + "notifEmbeddingMetadata": "Вбудовування метаданих...", + "@notifEmbeddingMetadata": { + "description": "Notification body while embedding metadata into a downloaded track" + }, + "@settingsLocalLibrarySubtitle": { + "description": "Subtitle for local library settings" + }, + "@downloadLocationSubtitle": { + "description": "Subtitle shown in the download location picker sheet" + }, + "trackConvertOriginalQuality": "Original quality", + "@trackConvertOriginalQuality": { + "description": "Label when no bit depth or sample rate cap is applied during lossless conversion" + }, + "nowPlayingTabLyrics": "Lyrics", + "@nowPlayingTabLyrics": { + "description": "Tab label for the lyrics view" + }, + "selectionConvertCount": "Конвертувати {count} {count, plural, =1{трек} other{треків}}", + "@selectionConvertCount": { + "description": "Convert button text with count in selection mode", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsInstalledSection": { + "description": "Section header - installed extensions" + }, + "@downloadNetworkCompatibilityModeDisabled": { + "description": "Subtitle when network compatibility mode is off" + }, + "nowPlayingShuffleLibrary": "Shuffle library", + "@nowPlayingShuffleLibrary": { + "description": "Button label to shuffle and play the entire local library" + }, + "trackReEnrichFieldCover": "Обкладинка", + "@trackReEnrichFieldCover": { + "description": "Checkbox label for cover art field in re-enrich" + }, + "tutorialExtensionsTip3": "Отримайте тексти пісень, розширені метадані та інші функції", + "@tutorialExtensionsTip3": { + "description": "Tutorial extensions tip 3" + }, + "@cacheCleanupUnusedDesc": { + "description": "Description of what cleanup unused data does" + }, + "a11yOpenAlbum": "Open album {albumName}", + "@a11yOpenAlbum": { + "description": "Accessibility label for opening an album", + "placeholders": { + "albumName": { + "type": "String" + } + } + }, + "@settingsLyrics": { + "description": "Settings menu item - lyrics settings" + }, + "nowPlayingQueueEmpty": "Queue is empty", + "@nowPlayingQueueEmpty": { + "description": "Empty state when the playback queue has no items" + }, + "@settingsDownload": { + "description": "Settings section - download options" + }, + "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", + "@notifTracksDownloadedSuccess": { + "description": "Notification body for queue complete - how many tracks were downloaded", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "storeCategoryDownload": "Download", + "@storeCategoryDownload": { + "description": "Store extension category - download" + }, + "aboutTelegramChannel": "Телеграм-канал", + "@aboutTelegramChannel": { + "description": "Link to Telegram channel" + }, + "@downloadedAlbumDiscHeader": { + "description": "Header for disc separator in multi-disc albums", + "placeholders": { + "discNumber": { + "type": "int", + "example": "1" + } + } + }, + "@recentEmpty": { + "description": "Empty state text for recent access list" + }, + "@backupRestoreConfirmMessage": { + "description": "Confirmation dialog message before restoring a backup" + }, + "@shareSheetCopyLink": { + "description": "Tooltip for copying a cross-service link" + }, + "regionCountryID": "Indonesia", + "@regionCountryID": { + "description": "Country name for SongLink region picker" + }, + "@libraryInLibrary": { + "description": "Badge shown on tracks that exist in local library" + }, + "extensionPostProcessingHooks": "Хуки пост-обробки", + "@extensionPostProcessingHooks": { + "description": "Capability - post-processing" + }, + "@setupGrantPermission": { + "description": "Button to request permission" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "storeFilterDownload": "Завантажити", + "@storeFilterDownload": { + "description": "Store filter - download providers" + }, + "@collectionAddToPlaylist": { + "description": "Action to add a track to user playlist" + }, + "@discographyFailedToFetch": { + "description": "Error - some albums failed to load" + }, + "@updateWhatsNew": { + "description": "Changelog section title" + }, + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "dialogDeleteSelectedTitle": "Видалити вибране", + "@dialogDeleteSelectedTitle": { + "description": "Dialog title - delete selected items" + }, + "trackCoverPick": "Pick Cover", + "@trackCoverPick": { + "description": "Button label for selecting cover art" + }, + "@collectionCreatePlaylist": { + "description": "Action to create a new playlist" + }, "selectionBatchConvertSuccess": "Конвертовано {success} з {total} треків у {format}", "@selectionBatchConvertSuccess": { "description": "Snackbar after batch conversion completes", @@ -3558,906 +512,133 @@ } } }, - "downloadedAlbumDownloadedCount": "{count} завантажено", - "@downloadedAlbumDownloadedCount": { - "description": "Downloaded tracks count badge", + "qualityHiResFlacMax": "FLAC Max з високою роздільною здатністю", + "@qualityHiResFlacMax": { + "description": "Quality option - maximum resolution FLAC" + }, + "audioAnalysisStereo": "Stereo", + "@audioAnalysisStereo": { + "description": "Audio channel layout label - stereo" + }, + "backupExportButton": "Create backup file", + "@backupExportButton": { + "description": "Button to create and share a backup file" + }, + "settingsApp": "App", + "@settingsApp": { + "description": "Settings menu item - app settings" + }, + "clickableInformationUnavailable": "{type} information not available", + "@clickableInformationUnavailable": { + "description": "Snackbar shown when clickable metadata cannot open a destination", "placeholders": { - "count": { - "type": "int" - } - } - }, - "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", - "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" - }, - "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", - "@downloadUseAlbumArtistForFoldersTrackSubtitle": { - "description": "Subtitle when Track Artist is used for folder naming" - }, - "lyricsProvidersTitle": "Lyrics Provider Priority", - "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" - }, - "lyricsProvidersDescription": "Увімкнення, вимкнення та зміна порядку джерел текстів пісень. Постачальники перевірятимуть зверху вниз, доки не буде знайдено текст пісні.", - "@lyricsProvidersDescription": { - "description": "Description on the lyrics provider priority page" - }, - "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", - "@lyricsProvidersInfoText": { - "description": "Info tip on lyrics provider priority page" - }, - "lyricsProvidersEnabledSection": "Увімкнено ({count})", - "@lyricsProvidersEnabledSection": { - "description": "Section header for enabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersDisabledSection": "Вимкнено ({count})", - "@lyricsProvidersDisabledSection": { - "description": "Section header for disabled providers", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "lyricsProvidersAtLeastOne": "Принаймні один постачальник має залишатися ввімкненим", - "@lyricsProvidersAtLeastOne": { - "description": "Snackbar when user tries to disable the last enabled provider" - }, - "lyricsProvidersSaved": "Пріоритет постачальника текстів пісень збережено", - "@lyricsProvidersSaved": { - "description": "Snackbar after saving lyrics provider priority" - }, - "lyricsProvidersDiscardContent": "У вас є незбережені зміни, які буде втрачено.", - "@lyricsProvidersDiscardContent": { - "description": "Body text of the discard-changes dialog on lyrics provider page" - }, - "lyricsProviderLrclibDesc": "Синхронізована база даних текстів пісень з відкритим кодом", - "@lyricsProviderLrclibDesc": { - "description": "Description for LRCLIB provider" - }, - "lyricsProviderNeteaseDesc": "NetEase Cloud Music (добре підходить для азійських пісень)", - "@lyricsProviderNeteaseDesc": { - "description": "Description for Netease provider" - }, - "lyricsProviderMusixmatchDesc": "Найбільша база даних текстів пісень (багатомовна)", - "@lyricsProviderMusixmatchDesc": { - "description": "Description for Musixmatch provider" - }, - "lyricsProviderAppleMusicDesc": "Синхронізовані тексти пісень слово за словом (через проксі)", - "@lyricsProviderAppleMusicDesc": { - "description": "Description for Apple Music provider" - }, - "lyricsProviderQqMusicDesc": "QQ Music (добре для китайських пісень, через проксі)", - "@lyricsProviderQqMusicDesc": { - "description": "Description for QQ Music provider" - }, - "lyricsProviderExtensionDesc": "Постачальник розширень", - "@lyricsProviderExtensionDesc": { - "description": "Generic description for extension-based lyrics providers" - }, - "safMigrationTitle": "Потрібне оновлення сховища", - "@safMigrationTitle": { - "description": "Title of SAF migration dialog" - }, - "safMigrationMessage1": "SpotiFLAC тепер використовує Android Storage Access Framework (SAF) для завантажень. Це виправляє помилки «відмовлено в доступі» на Android 10+.", - "@safMigrationMessage1": { - "description": "First paragraph of SAF migration dialog" - }, - "safMigrationMessage2": "Будь ласка, виберіть папку завантажень ще раз, щоб перейти до нової системи зберігання.", - "@safMigrationMessage2": { - "description": "Second paragraph of SAF migration dialog" - }, - "safMigrationSuccess": "Папку завантажень оновлено до режиму SAF", - "@safMigrationSuccess": { - "description": "Snackbar after successfully migrating to SAF" - }, - "settingsDonate": "Support Development", - "@settingsDonate": { - "description": "Settings menu item - donate" - }, - "settingsDonateSubtitle": "Buy the developer a coffee", - "@settingsDonateSubtitle": { - "description": "Subtitle for donate menu item" - }, - "tooltipLoveAll": "Уподобати всіх", - "@tooltipLoveAll": { - "description": "Tooltip for the Love All button on album/playlist screens" - }, - "tooltipAddToPlaylist": "Додати до списку відтворення", - "@tooltipAddToPlaylist": { - "description": "Tooltip for the Add to Playlist button" - }, - "snackbarRemovedTracksFromLoved": "Видалено {count} треків з уподобань", - "@snackbarRemovedTracksFromLoved": { - "description": "Snackbar after removing multiple tracks from Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "snackbarAddedTracksToLoved": "Додано {count} треків до списку \"Улюблені\"", - "@snackbarAddedTracksToLoved": { - "description": "Snackbar after adding multiple tracks to Loved folder", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "dialogDownloadAllTitle": "Завантажити все", - "@dialogDownloadAllTitle": { - "description": "Dialog title for bulk download confirmation" - }, - "dialogDownloadAllMessage": "Завантажити {count} треків?", - "@dialogDownloadAllMessage": { - "description": "Body of the Download All confirmation dialog", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "homeSkipAlreadyDownloaded": "Пропустити вже завантажені пісні", - "@homeSkipAlreadyDownloaded": { - "description": "Checkbox label in import dialog to skip already-downloaded songs" - }, - "homeGoToAlbum": "Перейти до альбому", - "@homeGoToAlbum": { - "description": "Context menu item to navigate to the album page" - }, - "homeAlbumInfoUnavailable": "Інформація про альбом недоступна", - "@homeAlbumInfoUnavailable": { - "description": "Snackbar when album info cannot be loaded" - }, - "snackbarLoadingCueSheet": "Завантаження аркуша CUE...", - "@snackbarLoadingCueSheet": { - "description": "Snackbar while loading a CUE sheet file" - }, - "snackbarMetadataSaved": "Метадані успішно збережено", - "@snackbarMetadataSaved": { - "description": "Snackbar after successfully saving track metadata" - }, - "snackbarFailedToEmbedLyrics": "Не вдалося вставити текст пісні", - "@snackbarFailedToEmbedLyrics": { - "description": "Snackbar when lyrics embedding fails" - }, - "snackbarFailedToWriteStorage": "Не вдалося перезаписати у сховище", - "@snackbarFailedToWriteStorage": { - "description": "Snackbar when writing metadata back to file fails" - }, - "snackbarError": "Помилка: {error}", - "@snackbarError": { - "description": "Generic error snackbar with error detail", - "placeholders": { - "error": { + "type": { "type": "String" } } }, - "snackbarNoActionDefined": "Для цієї кнопки не визначено жодної дії", - "@snackbarNoActionDefined": { - "description": "Snackbar when an extension button has no action configured" + "@logFilterLevel": { + "description": "Filter by log level" }, - "noTracksFoundForAlbum": "Для цього альбому не знайдено жодних треків", - "@noTracksFoundForAlbum": { - "description": "Empty state message when an album has no tracks" + "sectionTheme": "Тема", + "@sectionTheme": { + "description": "Settings section header" }, - "downloadLocationSubtitle": "Choose where to save your downloaded tracks", - "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "@extensionActionFailed": { + "description": "Fallback error when an extension action fails without details" }, - "storageModeAppFolder": "App Folder (Recommended)", - "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "@downloadAppleElrcWordSync": { + "description": "Setting for preserving Apple Music word-by-word eLRC timestamps" }, - "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", - "@storageModeAppFolderSubtitle": { - "description": "Subtitle for app folder storage mode" + "@trackSaveLyricsSubtitle": { + "description": "Subtitle for save lyrics action" }, - "storageModeSaf": "Custom Folder (SAF)", - "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "@extensionsNoCustomSearch": { + "description": "Empty state - no search providers" }, - "storageModeSafSubtitle": "Pick any folder, including SD card", - "@storageModeSafSubtitle": { - "description": "Subtitle for SAF storage mode" + "@collectionPlaylistRemoveCover": { + "description": "Bottom sheet action to remove custom cover image from a playlist" }, - "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", - "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "@extensionDefaultProvider": { + "description": "Default search provider option" }, - "downloadFilenameInsertTag": "Натисніть, щоб вставити тег:", - "@downloadFilenameInsertTag": { - "description": "Label above filename tag chips" + "@snackbarCredentialsCleared": { + "description": "Snackbar - Spotify credentials removed" }, - "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", - "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "@tutorialWelcomeDesc": { + "description": "Tutorial welcome page description" }, - "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", - "@downloadSeparateSinglesDisabled": { - "description": "Subtitle when separate singles folder is disabled" + "@tutorialSearchDesc": { + "description": "Tutorial search page description" }, - "downloadArtistNameFilters": "Фільтри імені виконавця", - "@downloadArtistNameFilters": { - "description": "Setting title for artist folder filter options" - }, - "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", - "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" - }, - "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", - "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" - }, - "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", - "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" - }, - "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", - "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" - }, - "downloadSongLinkRegion": "Регіон SongLink", - "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" - }, - "downloadNetworkCompatibilityMode": "Network Compatibility Mode", - "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" - }, - "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", - "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" - }, - "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", - "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" - }, - "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", - "@downloadSelectServiceToEnable": { - "description": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" - }, - "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", - "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" - }, - "downloadEmbedLyricsDisabled": "Enable metadata embedding first", - "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" - }, - "downloadNeteaseIncludeTranslation": "Netease: Включити переклад", - "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" - }, - "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", - "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" - }, - "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", - "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" - }, - "downloadNeteaseIncludeRomanization": "Netease: Включити романізацію", - "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" - }, - "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", - "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" - }, - "downloadNeteaseIncludeRomanizationDisabled": "No romanization", - "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" - }, - "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", - "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" - }, - "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", - "@downloadAppleQqMultiPersonEnabled": { - "description": "Subtitle when multi-person word-by-word is enabled" - }, - "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", - "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" - }, - "downloadMusixmatchLanguage": "Мова Musixmatch", - "@downloadMusixmatchLanguage": { - "description": "Setting title for Musixmatch language preference" - }, - "downloadMusixmatchLanguageAuto": "Auto (original language)", - "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" - }, - "downloadFilterContributing": "Filter Contributing Artists", - "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" - }, - "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", - "@downloadFilterContributingEnabled": { - "description": "Subtitle when contributing artist filter is enabled" - }, - "downloadFilterContributingDisabled": "Full Album Artist string used", - "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" - }, - "downloadProvidersNoneEnabled": "No providers enabled", - "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" - }, - "downloadMusixmatchLanguageCode": "Код мови", - "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" - }, - "downloadMusixmatchLanguageHint": "e.g. en, de, ja", - "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" - }, - "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", - "@downloadMusixmatchLanguageDesc": { - "description": "Description in the Musixmatch language picker" - }, - "downloadMusixmatchAuto": "Авто", - "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" - }, - "downloadNetworkAnySubtitle": "Use WiFi or mobile data", - "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" - }, - "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", - "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" - }, - "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", - "@downloadSongLinkRegionDesc": { - "description": "Description in the SongLink region picker" - }, - "snackbarUnsupportedAudioFormat": "Непідтримуваний аудіоформат", - "@snackbarUnsupportedAudioFormat": { - "description": "Snackbar when the audio format is not supported for the requested operation" - }, - "cacheRefresh": "Оновити", - "@cacheRefresh": { - "description": "Tooltip for refresh button on cache management page" - }, - "dialogDownloadPlaylistsMessage": "Завантажити {trackCount} {trackCount, plural, =1{трек} other{треків}} з {playlistCount} {playlistCount, plural, =1{плейлист} other{плейлистів}}?", - "@dialogDownloadPlaylistsMessage": { - "description": "Dialog message for bulk playlist download confirmation", - "placeholders": { - "trackCount": { - "type": "int" - }, - "playlistCount": { - "type": "int" - } - } - }, - "bulkDownloadPlaylistsButton": "Завантажити {count} {count, plural, =1{плейлист} other{плейлистів}}", - "@bulkDownloadPlaylistsButton": { - "description": "Button label for bulk downloading selected playlists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "bulkDownloadSelectPlaylists": "Вибрати списки відтворення для завантаження", - "@bulkDownloadSelectPlaylists": { - "description": "Button label when no playlists are selected for download" - }, - "snackbarSelectedPlaylistsEmpty": "Вибрані списки відтворення не містять треків", - "@snackbarSelectedPlaylistsEmpty": { - "description": "Snackbar when selected playlists contain no tracks" - }, - "playlistsCount": "{count, plural, =1{1 плейлист} other{{count} плейлистів}}", - "@playlistsCount": { - "description": "Playlist count display", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAutoFill": "Автоматичне заповнення з онлайн-ресурсів", - "@editMetadataAutoFill": { - "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" - }, - "editMetadataAutoFillDesc": "Виберіть поля для автоматичного заповнення з онлайн-метаданих", - "@editMetadataAutoFillDesc": { - "description": "Description for the auto-fill section" - }, - "editMetadataAutoFillFetch": "Отримання та заповнення", - "@editMetadataAutoFillFetch": { - "description": "Button label to fetch online metadata and fill selected fields" - }, - "editMetadataAutoFillSearching": "Пошук в Інтернеті...", - "@editMetadataAutoFillSearching": { - "description": "Snackbar shown while searching for online metadata" - }, - "editMetadataAutoFillNoResults": "Відповідних метаданих в Інтернеті не знайдено", - "@editMetadataAutoFillNoResults": { - "description": "Snackbar when online metadata search returns no results" - }, - "editMetadataAutoFillDone": "Заповнено {count} {count, plural, =1{поле} other{полей}} з онлайн-метаданих", - "@editMetadataAutoFillDone": { - "description": "Snackbar confirming how many fields were auto-filled", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "editMetadataAutoFillNoneSelected": "Виберіть принаймні одне поле для автоматичного заповнення", - "@editMetadataAutoFillNoneSelected": { - "description": "Snackbar when user taps Fetch without selecting any fields" - }, - "editMetadataFieldTitle": "Назва", - "@editMetadataFieldTitle": { - "description": "Chip label for title field in auto-fill selector" - }, - "editMetadataFieldArtist": "Виконавець", - "@editMetadataFieldArtist": { - "description": "Chip label for artist field in auto-fill selector" - }, - "editMetadataFieldAlbum": "Альбом", - "@editMetadataFieldAlbum": { - "description": "Chip label for album field in auto-fill selector" - }, - "editMetadataFieldAlbumArtist": "Виконавець альбому", - "@editMetadataFieldAlbumArtist": { - "description": "Chip label for album artist field in auto-fill selector" - }, - "editMetadataFieldDate": "Дата", - "@editMetadataFieldDate": { - "description": "Chip label for date field in auto-fill selector" - }, - "editMetadataFieldTrackNum": "Номер треку", - "@editMetadataFieldTrackNum": { - "description": "Chip label for track number field in auto-fill selector" - }, - "editMetadataFieldDiscNum": "Номер диска", - "@editMetadataFieldDiscNum": { - "description": "Chip label for disc number field in auto-fill selector" - }, - "editMetadataFieldGenre": "Жанр", - "@editMetadataFieldGenre": { - "description": "Chip label for genre field in auto-fill selector" - }, - "editMetadataFieldIsrc": "ISRC", - "@editMetadataFieldIsrc": { - "description": "Chip label for ISRC field in auto-fill selector" - }, - "editMetadataFieldLabel": "Лейбл", - "@editMetadataFieldLabel": { - "description": "Chip label for label field in auto-fill selector" - }, - "editMetadataFieldCopyright": "Авторське право", - "@editMetadataFieldCopyright": { - "description": "Chip label for copyright field in auto-fill selector" - }, - "editMetadataFieldCover": "Обкладинка", - "@editMetadataFieldCover": { - "description": "Chip label for cover art field in auto-fill selector" - }, - "editMetadataSelectAll": "Усі", - "@editMetadataSelectAll": { - "description": "Button to select all fields for auto-fill" - }, - "editMetadataSelectEmpty": "Порожні (без мета даних)", - "@editMetadataSelectEmpty": { - "description": "Button to select only fields that are currently empty" - }, - "queueDownloadingCount": "Завантаження ({count})", - "@queueDownloadingCount": { - "description": "Header for active downloads section with count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueDownloadedHeader": "Завантажено", - "@queueDownloadedHeader": { - "description": "Header label for downloaded items section in library" - }, - "queueFilteringIndicator": "Фільтрування...", - "@queueFilteringIndicator": { - "description": "Shown while filter results are being computed" - }, - "queueTrackCount": "{count, plural, =1{1 трек} other{{count} треків}}", - "@queueTrackCount": { - "description": "Track count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueAlbumCount": "{count, plural, =1{1 альбом} other{{count} альбомів}}", - "@queueAlbumCount": { - "description": "Album count label with plural support", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "queueEmptyAlbums": "Немає завантажень альбомів", - "@queueEmptyAlbums": { - "description": "Empty state title when no album downloads exist" - }, - "queueEmptyAlbumsSubtitle": "Завантажте кілька треків з альбому, щоб переглянути їх тут", - "@queueEmptyAlbumsSubtitle": { - "description": "Empty state subtitle for album downloads" - }, - "queueEmptySingles": "Без окремих завантажень", - "@queueEmptySingles": { - "description": "Empty state title when no single track downloads exist" - }, - "queueEmptySinglesSubtitle": "Завантаження окремих треків з’являться тут", - "@queueEmptySinglesSubtitle": { - "description": "Empty state subtitle for single track downloads" - }, - "queueEmptyHistory": "Немає історії завантажень", - "@queueEmptyHistory": { - "description": "Empty state title when download history is empty" - }, - "queueEmptyHistorySubtitle": "Завантажені треки з’являться тут", - "@queueEmptyHistorySubtitle": { - "description": "Empty state subtitle for download history" - }, - "selectionAllPlaylistsSelected": "Вибрано всі списки відтворення", - "@selectionAllPlaylistsSelected": { - "description": "Shown when all playlists are selected in selection mode" - }, - "selectionTapPlaylistsToSelect": "Торкніться списків відтворення, щоб вибрати", - "@selectionTapPlaylistsToSelect": { - "description": "Hint shown in playlist selection mode" - }, - "selectionSelectPlaylistsToDelete": "Вибрати списки відтворення для видалення", - "@selectionSelectPlaylistsToDelete": { - "description": "Hint shown when no playlists are selected for deletion" - }, - "audioAnalysisTitle": "Аналіз якості звуку", - "@audioAnalysisTitle": { - "description": "Title for audio analysis section" - }, - "audioAnalysisDescription": "Перевірити якість без втрат за допомогою спектрального аналізу", - "@audioAnalysisDescription": { - "description": "Description for audio analysis tap-to-analyze prompt" - }, - "audioAnalysisAnalyzing": "Аналіз аудіо...", - "@audioAnalysisAnalyzing": { - "description": "Loading text while analyzing audio" - }, - "audioAnalysisSampleRate": "Частота дискретизації", - "@audioAnalysisSampleRate": { - "description": "Sample rate metric label" - }, - "audioAnalysisBitDepth": "Глибина бітів", - "@audioAnalysisBitDepth": { - "description": "Bit depth metric label" - }, - "audioAnalysisChannels": "Канали", - "@audioAnalysisChannels": { - "description": "Channels metric label" - }, - "audioAnalysisDuration": "Тривалість", - "@audioAnalysisDuration": { - "description": "Duration metric label" - }, - "audioAnalysisNyquist": "Частота Найквіста", - "@audioAnalysisNyquist": { - "description": "Nyquist frequency metric label" - }, - "audioAnalysisFileSize": "Розмір", - "@audioAnalysisFileSize": { - "description": "File size metric label" - }, - "audioAnalysisDynamicRange": "Динамічний діапазон", - "@audioAnalysisDynamicRange": { - "description": "Dynamic range metric label" - }, - "audioAnalysisPeak": "Пік", - "@audioAnalysisPeak": { - "description": "Peak amplitude metric label" - }, - "audioAnalysisRms": "RMS", - "@audioAnalysisRms": { - "description": "RMS level metric label" - }, - "audioAnalysisSamples": "Семпли", - "@audioAnalysisSamples": { - "description": "Total samples metric label" - }, - "audioAnalysisRescan": "Re-analyze", - "@audioAnalysisRescan": { - "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" - }, - "audioAnalysisRescanning": "Re-analyzing audio...", - "@audioAnalysisRescanning": { - "description": "Loading text while audio is being re-analyzed after an explicit refresh" - }, - "extensionsSearchWith": "Пошук за допомогою{providerName}", - "@extensionsSearchWith": { - "description": "Extensions page - subtitle for default metadata search provider option", - "placeholders": { - "providerName": { - "type": "String" - } - } - }, - "extensionsHomeFeedProvider": "Постачальник оновлень домашньої стрічки", - "@extensionsHomeFeedProvider": { - "description": "Extensions page - label for home feed provider selector" - }, - "extensionsHomeFeedDescription": "Виберіть, яке розширення відображатиме домашню стрічку на головному екрані", - "@extensionsHomeFeedDescription": { - "description": "Extensions page - description for home feed provider picker" - }, - "extensionsHomeFeedAuto": "Авто", - "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" - }, - "extensionsHomeFeedAutoSubtitle": "Автоматично вибирати найкращий доступний", - "@extensionsHomeFeedAutoSubtitle": { - "description": "Extensions page - subtitle for auto home feed option" - }, - "extensionsHomeFeedUse": "Використовувати {extensionName} головну стрічку", - "@extensionsHomeFeedUse": { - "description": "Extensions page - subtitle for a specific extension home feed option", - "placeholders": { - "extensionName": { - "type": "String" - } - } - }, - "extensionsNoHomeFeedExtensions": "Без розширень із домашньою стрічкою", - "@extensionsNoHomeFeedExtensions": { - "description": "Extensions page - shown when no installed extension has home feed" - }, - "sortAlphaAsc": "А-Я", - "@sortAlphaAsc": { - "description": "Sort option - alphabetical ascending" - }, - "sortAlphaDesc": "Я-А", - "@sortAlphaDesc": { - "description": "Sort option - alphabetical descending" - }, - "cancelDownloadTitle": "Скасувати завантаження?", - "@cancelDownloadTitle": { - "description": "Dialog title when confirming cancellation of an active download" - }, - "cancelDownloadContent": "Це скасує активне завантаження треку \"{trackName}\".", - "@cancelDownloadContent": { - "description": "Dialog body when confirming cancellation of an active download", + "collectionAddedToWishlist": "\"{trackName}\" додано до списку бажань", + "@collectionAddedToWishlist": { + "description": "Snackbar after adding track to wishlist", "placeholders": { "trackName": { "type": "String" } } }, - "cancelDownloadKeep": "Зберегти", - "@cancelDownloadKeep": { - "description": "Dialog button - keep the active download (do not cancel)" - }, - "metadataSaveFailedFfmpeg": "Не вдалося зберегти метадані через FFmpeg", - "@metadataSaveFailedFfmpeg": { - "description": "Snackbar error when FFmpeg fails to write metadata" - }, - "metadataSaveFailedStorage": "Не вдалося записати метадані назад у сховище", - "@metadataSaveFailedStorage": { - "description": "Snackbar error when writing metadata file back to storage fails" - }, - "snackbarFolderPickerFailed": "Не вдалося відкрити засіб вибору папок: {error}", - "@snackbarFolderPickerFailed": { - "description": "Snackbar shown when folder picker fails to open", + "logAffectedDomains": "Affected: {domains}", + "@logAffectedDomains": { + "description": "Affected domains in log issue analysis", "placeholders": { - "error": { + "domains": { "type": "String" } } }, - "errorLoadAlbum": "Не вдалося завантажити альбом", - "@errorLoadAlbum": { - "description": "Error state shown when album fails to load" + "@folderOrganizationByArtistSubtitle": { + "description": "Subtitle for artist folder option" }, - "errorLoadPlaylist": "Не вдалося завантажити список відтворення", - "@errorLoadPlaylist": { - "description": "Error state shown when playlist fails to load" + "errorNoTracksFound": "Треків не знайдено", + "@errorNoTracksFound": { + "description": "Error - search returned no results" }, - "errorLoadArtist": "Не вдалося завантажити артиста", - "@errorLoadArtist": { - "description": "Error state shown when artist fails to load" + "providerPriorityTitle": "Пріоритет постачальника", + "@providerPriorityTitle": { + "description": "Provider priority page title" }, - "notifChannelDownloadName": "Прогрес завантаження", - "@notifChannelDownloadName": { - "description": "Android notification channel name for download progress" - }, - "notifChannelDownloadDesc": "Показує прогрес завантаження треків", - "@notifChannelDownloadDesc": { - "description": "Android notification channel description for download progress" - }, - "notifChannelLibraryScanName": "Сканування бібліотеки", - "@notifChannelLibraryScanName": { - "description": "Android notification channel name for library scan" - }, - "notifChannelLibraryScanDesc": "Показує перебіг сканування локальної бібліотеки", - "@notifChannelLibraryScanDesc": { - "description": "Android notification channel description for library scan" - }, - "notifDownloadingTrack": "Завантаження {trackName}", - "@notifDownloadingTrack": { - "description": "Notification title while downloading a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifFinalizingTrack": "Фіналізація {trackName}", - "@notifFinalizingTrack": { - "description": "Notification title while finalizing (embedding metadata) a track", - "placeholders": { - "trackName": { - "type": "String" - } - } - }, - "notifEmbeddingMetadata": "Вбудовування метаданих...", - "@notifEmbeddingMetadata": { - "description": "Notification body while embedding metadata into a downloaded track" - }, - "notifAlreadyInLibraryCount": "Вже в бібліотеці ({completed}/{total})", - "@notifAlreadyInLibraryCount": { - "description": "Notification title when track is already in library, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifAlreadyInLibrary": "Вже в бібліотеці", - "@notifAlreadyInLibrary": { - "description": "Notification title when track is already in library" - }, - "notifDownloadCompleteCount": "Завантаження завершено ({completed}/{total})", - "@notifDownloadCompleteCount": { - "description": "Notification title when download is complete, with count", - "placeholders": { - "completed": { - "type": "int" - }, - "total": { - "type": "int" - } - } - }, - "notifDownloadComplete": "Завантаження завершено", - "@notifDownloadComplete": { - "description": "Notification title when a single download is complete" - }, - "notifDownloadsFinished": "Завантаження завершено ({completed} завершено, {failed} не вдалося)", - "@notifDownloadsFinished": { - "description": "Notification title when queue finishes with some failures", - "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" - } - } - }, - "notifAllDownloadsComplete": "Усі завантаження завершено", - "@notifAllDownloadsComplete": { - "description": "Notification title when all downloads finish successfully" - }, - "notifTracksDownloadedSuccess": "{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}", - "@notifTracksDownloadedSuccess": { - "description": "Notification body for queue complete - how many tracks were downloaded", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifScanningLibrary": "Сканування локальної бібліотеки", - "@notifScanningLibrary": { - "description": "Notification title while scanning local library" - }, - "notifLibraryScanProgressWithTotal": "{scanned}/{total} файлів • {percentage}%", - "@notifLibraryScanProgressWithTotal": { - "description": "Notification body for library scan progress when total is known", - "placeholders": { - "scanned": { - "type": "int" - }, - "total": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "notifLibraryScanProgressNoTotal": "{scanned} файлів скановано • {percentage}%", - "@notifLibraryScanProgressNoTotal": { - "description": "Notification body for library scan progress when total is unknown", - "placeholders": { - "scanned": { - "type": "int" - }, - "percentage": { - "type": "int" - } - } - }, - "notifLibraryScanComplete": "Сканування бібліотеки завершено", - "@notifLibraryScanComplete": { - "description": "Notification title when library scan finishes" - }, - "notifLibraryScanCompleteBody": "{count} треків індексовано", - "@notifLibraryScanCompleteBody": { - "description": "Notification body for library scan complete - number of indexed tracks", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanExcluded": "{count} виключені", - "@notifLibraryScanExcluded": { - "description": "Library scan complete suffix - excluded track count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanErrors": "{count} помилок", - "@notifLibraryScanErrors": { - "description": "Library scan complete suffix - error count", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "notifLibraryScanFailed": "Не вдалося сканувати бібліотеку", - "@notifLibraryScanFailed": { - "description": "Notification title when library scan fails" - }, - "notifLibraryScanCancelled": "Сканування бібліотеки скасовано", - "@notifLibraryScanCancelled": { - "description": "Notification title when library scan is cancelled by the user" - }, - "notifLibraryScanStopped": "Сканування зупинено до завершення.", - "@notifLibraryScanStopped": { - "description": "Notification body when library scan is cancelled" - }, - "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", - "@notifDownloadingUpdate": { - "description": "Notification title while downloading an app update", + "@notifUpdateReadyBody": { + "description": "Notification body when app update is ready to install", "placeholders": { "version": { "type": "String" } } }, - "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", + "@settingsExtensions": { + "description": "Settings section - extension management" + }, + "trackDeleteConfirmTitle": "Видалити з пристрою?", + "@trackDeleteConfirmTitle": { + "description": "Delete confirmation title" + }, + "@settingsDownloadNetwork": { + "description": "Setting for network type preference" + }, + "downloadProvidersNoneEnabled": "No providers enabled", + "@downloadProvidersNoneEnabled": { + "description": "Shown when no lyrics providers are active" + }, + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, + "trackReEnrichFieldBasicTags": "Альбом, Виконавець альбому", + "@trackReEnrichFieldBasicTags": { + "description": "Checkbox label for basic tags in re-enrich (title/artist are never overwritten)" + }, + "@audioAnalysisSpectralCutoff": { + "description": "Estimated spectral cutoff metric label" + }, + "@logClearLogsTitle": { + "description": "Clear logs dialog title" + }, + "storageModeSafSubtitle": "Pick any folder, including SD card", + "@storageModeSafSubtitle": { + "description": "Subtitle for SAF storage mode" + }, "@notifUpdateProgress": { "description": "Notification body showing update download progress", "placeholders": { @@ -4472,132 +653,514 @@ } } }, - "notifUpdateReady": "Оновлення готове", - "@notifUpdateReady": { - "description": "Notification title when app update download is complete" + "downloadUsePrimaryArtistOnlyEnabled": "Вибраних виконавців видалити з назви папки (наприклад, Джастін Бібер, Quavo → Джастін Бібер)", + "@downloadUsePrimaryArtistOnlyEnabled": { + "description": "Subtitle when primary artist only is enabled" }, - "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", - "@notifUpdateReadyBody": { - "description": "Notification body when app update is ready to install", - "placeholders": { - "version": { - "type": "String" - } - } + "notifScanningLibrary": "Сканування локальної бібліотеки", + "@notifScanningLibrary": { + "description": "Notification title while scanning local library" }, - "notifUpdateFailed": "Не вдалося оновити", - "@notifUpdateFailed": { - "description": "Notification title when app update download fails" - }, - "notifUpdateFailedBody": "Не вдалося завантажити оновлення. Спробуйте пізніше.", - "@notifUpdateFailedBody": { - "description": "Notification body when app update download fails" - }, - "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" + "setupGetStarted": "Почати", + "@setupGetStarted": { + "description": "Final setup button" }, - "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", - "@downloadDeduplicationEnabled": { - "description": "Subtitle when deduplication is on" + "libraryFilterQualityCD": "CD (16-бітний)", + "@libraryFilterQualityCD": { + "description": "Filter option - CD quality audio" }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" + "sectionLayout": "Макет", + "@sectionLayout": { + "description": "Settings section header" }, - "downloadFallbackExtensions": "Fallback Extensions", - "@downloadFallbackExtensions": { - "description": "Settings item for configuring fallback extension providers" + "@tooltipLoveAll": { + "description": "Tooltip for the Love All button on album/playlist screens" }, - "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", - "@downloadFallbackExtensionsSubtitle": { - "description": "Subtitle for fallback extensions item" + "queueFinalizingDownload": "Finalizing download", + "@queueFinalizingDownload": { + "description": "Accessibility label for a queue item that is finalizing" }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", + "trackConvertActionLabelLossy": "{sourceFormat} → {targetFormat} @ {bitrate}", + "@trackConvertActionLabelLossy": { + "description": "Convert button label for lossy conversion", "placeholders": { - "source": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { "type": "String" } } }, + "extensionsMetadataPriority": "Пріоритет метаданих", + "@extensionsMetadataPriority": { + "description": "Setting - metadata provider order" + }, + "updateCurrent": "Поточна", + "@updateCurrent": { + "description": "Label for current version" + }, + "@aboutFeatureRequest": { + "description": "Link to suggest features" + }, + "@safMigrationSuccess": { + "description": "Snackbar after successfully migrating to SAF" + }, + "backupRestoreConfirmMessage": "This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.", + "@cleanupOrphanedDownloadsNone": { + "description": "Snackbar when no orphans found" + }, + "lyricsProviderNeteaseDesc": "NetEase Cloud Music (добре підходить для азійських пісень)", + "@lyricsProviderNeteaseDesc": { + "description": "Description for Netease provider" + }, + "libraryScanCancelledSubtitle": "You can retry the scan when ready.", + "@libraryScanCancelledSubtitle": { + "description": "Library scan status subtitle after cancellation" + }, + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, + "@trackAlbum": { + "description": "Metadata label - album name" + }, + "dialogDeleteSelectedMessage": "Видалити {count} {count, plural, =1{трек} other{треків}} з історії?\n\nЦе також видалить файли з пам'яті.", + "@dialogDeleteSelectedMessage": { + "description": "Dialog message - delete selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReEnrich": "Перезбагачувати", + "@trackReEnrich": { + "description": "Menu action - re-embed metadata into audio file" + }, + "@lyricsProvidersSaved": { + "description": "Snackbar after saving lyrics provider priority" + }, + "@storageModeSaf": { + "description": "Storage mode option - Storage Access Framework" + }, + "libraryStorageAccessRequired": "Потрібен доступ до сховища", + "@libraryStorageAccessRequired": { + "description": "Dialog title for storage permission" + }, + "@cacheClearAllConfirmTitle": { + "description": "Dialog title before clearing all caches" + }, + "@unknownArtist": { + "description": "Fallback artist name when metadata is missing" + }, + "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", + "@downloadCreatePlaylistSourceFolderEnabled": { + "description": "Subtitle when playlist folder is enabled" + }, + "dialogClearHistoryMessage": "Ви впевнені, що хочете очистити всю історію завантажень? Цю дію неможливо скасувати.", + "@dialogClearHistoryMessage": { + "description": "Dialog message - clear history confirmation" + }, + "@sectionData": { + "description": "Settings section header" + }, + "audioAnalysisRms": "RMS", + "@audioAnalysisRms": { + "description": "RMS level metric label" + }, + "downloadFilterContributingEnabled": "Contributing artists removed from Album Artist folder name", + "@downloadFilterContributingEnabled": { + "description": "Subtitle when contributing artist filter is on" + }, + "timeJustNow": "Щойно", + "@extensionCustomUrlHandlingShareHint": { + "description": "Extension detail hint explaining share-to-app URL handling" + }, + "cleanupOrphanedDownloads": "Очищення застарілих завантажень", + "@cleanupOrphanedDownloads": { + "description": "Button to remove history entries for deleted files" + }, + "@audioAnalysisNoClipping": { + "description": "Displayed when no clipped samples were detected" + }, + "@tutorialWelcomeTitle": { + "description": "Tutorial welcome page title" + }, + "collectionFavoriteArtists": "Favorite Artists", + "audioAnalysisRescanning": "Re-analyzing audio...", + "@audioAnalysisRescanning": { + "description": "Loading text while audio is being re-analyzed after an explicit refresh" + }, + "collectionPlaylists": "Списки відтворення", + "@collectionPlaylists": { + "description": "Custom user playlists folder" + }, + "logTitle": "Журнали", + "@logTitle": { + "description": "Logs screen title" + }, + "@regionCountryGB": { + "description": "Country name for SongLink region picker" + }, + "@progressFetchingMetadata": { + "description": "Progress indicator - loading track info", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "aboutLogoArtist": "Талановитий художник, який створив чудовий логотип нашого додатку!", + "@aboutLogoArtist": { + "description": "Role description for logo artist" + }, + "@snackbarFillAllFields": { + "description": "Snackbar - validation error" + }, + "channelPreview": "Бета", + "@channelPreview": { + "description": "Update channel - beta/preview releases" + }, + "@trackReEnrichFieldsTitle": { + "description": "Section title for field selection in re-enrich dialog" + }, + "collectionPlaylistsDeleted": "{count} {count, plural, =1{playlist} other{playlists}} deleted", + "@collectionPlaylistsDeleted": { + "description": "Snackbar after deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@libraryFilterMetadataMissingGenre": { + "description": "Filter option - items missing genre" + }, + "homeTitle": "Головна", + "@homeTitle": { + "description": "Home screen title" + }, + "extensionMinAppVersion": "Мінімальна версія програми", + "@extensionMinAppVersion": { + "description": "Extension detail - minimum app version" + }, + "backupContentsLiked": "{count} liked {count, plural, =1{track} other{tracks}}", + "@backupContentsLiked": { + "description": "Backup contents row for liked tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisTruePeak": "True Peak", + "@audioAnalysisTruePeak": { + "description": "True peak metric label" + }, + "notifDownloadsCanceledBody": "{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}", + "@notifDownloadsCanceledBody": { + "description": "Notification body when downloads are canceled by the user", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@dialogRetry": { + "description": "Dialog button - retry action" + }, + "@homeChangeSearchProviderTooltip": { + "description": "Tooltip for the Home search provider picker" + }, + "@settingsOptionsSubtitle": { + "description": "Options settings description" + }, + "selectionBatchConvertProgress": "Конвертування {current} з {total}...", + "@selectionBatchConvertProgress": { + "description": "Snackbar during batch conversion progress", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@sectionLyricsProviderOptions": { + "description": "Settings section header for per-provider lyrics options" + }, + "@trackReEnrichSuccessWithFailures": { + "description": "Snackbar summary after batch metadata re-enrichment finishes with failures", + "placeholders": { + "successCount": { + "type": "int" + }, + "total": { + "type": "int" + }, + "failedCount": { + "type": "int" + } + } + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "optionsSpotifyCredentialsConfigured": "Ідентифікатор клієнта: {clientId}...", + "@optionsSpotifyCredentialsConfigured": { + "description": "Shows configured client ID preview", + "placeholders": { + "clientId": { + "type": "String" + } + } + }, + "@collectionPlaylistDeleted": { + "description": "Snackbar after deleting playlist" + }, + "nowPlayingTabPlayer": "Player", + "@nowPlayingTabPlayer": { + "description": "Tab label for the player view" + }, + "backupContentsPlaylists": "{count, plural, =1{1 playlist} other{{count} playlists}}", + "@backupContentsPlaylists": { + "description": "Backup contents row for playlist count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryLastScannedNever": "Ніколи", + "@libraryLastScannedNever": { + "description": "Shown when library has never been scanned" + }, + "trackTrackNumber": "Номер треку", + "@trackTrackNumber": { + "description": "Metadata label - track number" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "downloadLossyMp3": "MP3 320 кбіт/с", + "@downloadLossyMp3": { + "description": "Lossy format option - MP3 320kbps" + }, + "@albumFolderArtistAlbumSingles": { + "description": "Album folder option with singles inside artist" + }, + "@extensionHealthNotConfigured": { + "description": "Extension service health status - not configured" + }, + "@downloadSeparateSinglesDisabled": { + "description": "Subtitle when separate singles folder is off" + }, + "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", + "@downloadCreatePlaylistSourceFolder": { + "description": "Setting to create a subfolder per playlist source" + }, + "@trackReleaseDate": { + "description": "Metadata label - release date" + }, + "aboutContributors": "Автори", + "@aboutContributors": { + "description": "Section for contributors" + }, + "@audioAnalysisMono": { + "description": "Audio channel layout label - mono" + }, + "@optionsMaxQualityCoverSubtitle": { + "description": "Subtitle for max quality cover" + }, + "@audioAnalysisNyquist": { + "description": "Nyquist frequency metric label" + }, + "permissionStorage": "Storage", + "@permissionStorage": { + "description": "Storage permission type label" + }, + "permissionAudio": "Audio", + "@permissionAudio": { + "description": "Audio permission type label" + }, + "@libraryScanSubtitle": { + "description": "Subtitle for scan button" + }, + "@snackbarUnsupportedAudioFormat": { + "description": "Snackbar when the audio format is not supported for the requested operation" + }, + "@notifLibraryScanStopped": { + "description": "Notification body when library scan is cancelled" + }, + "@downloadMusixmatchAuto": { + "description": "Button to clear Musixmatch language (use auto)" + }, + "@trackLyricsTimeout": { + "description": "Message when lyrics request times out" + }, + "@trackReEnrichFieldReleaseInfo": { + "description": "Checkbox label for release info in re-enrich" + }, + "@regionCountryXK": { + "description": "Country name for SongLink region picker" + }, + "aboutTelegramChatSubtitle": "Спілкуватися з іншими користувачами", + "@aboutTelegramChatSubtitle": { + "description": "Subtitle for Telegram chat" + }, + "selectionAllPlaylistsSelected": "Вибрано всі списки відтворення", + "@selectionAllPlaylistsSelected": { + "description": "Shown when all playlists are selected in selection mode" + }, + "cacheTrackLookupDesc": "Пошук ідентифікаторів треків Spotify/Deezer. Очищення може уповільнити наступні кілька пошуків.", + "@cacheTrackLookupDesc": { + "description": "Description of what track lookup cache contains" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "@unknownAlbum": { + "description": "Fallback album name when metadata is missing" + }, + "@extensionsErrorLoading": { + "description": "Error message when extension fails to load" + }, + "@cacheTitle": { + "description": "Cache management page title" + }, + "@downloadFilenameFormat": { + "description": "Setting for output filename pattern" + }, + "errorUrlNotRecognized": "Посилання не розпізнано", + "@errorUrlNotRecognized": { + "description": "Error title - URL not handled by any extension or service" + }, + "downloadAppleElrcWordSync": "Apple Music eLRC Word Sync", + "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { + "description": "Subtitle when album artist is used for folder names" + }, + "@credentialsClientSecretHint": { + "description": "Client Secret placeholder" + }, + "@qualityFlacLossless": { + "description": "Quality option - CD quality FLAC" + }, + "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", + "@downloadNeteaseIncludeTranslationEnabled": { + "description": "Subtitle when Netease translation is on" + }, + "collectionLovedEmptySubtitle": "Натисніть «Подобається» на треках, щоб зберегти у свої улюблені", + "@collectionLovedEmptySubtitle": { + "description": "Loved empty state subtitle" + }, + "@libraryBuiltInPlayerInfo": { + "description": "Info note explaining the built-in player is for previews only" + }, + "@notifLibraryScanProgressNoTotal": { + "description": "Notification body for library scan progress when total is unknown", + "placeholders": { + "scanned": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@tutorialSearchTitle": { + "description": "Tutorial search page title" + }, + "metadataNoRateLimits": "Без обмежень щодо швидкості", + "@metadataNoRateLimits": { + "description": "Deezer provider description" + }, + "trackReEnrichSuccessWithFailures": "Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}", + "@a11yTrackByArtist": { + "description": "Accessibility label for a queue or list track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "libraryFilterMetadataMissingLabel": "Missing label", + "@libraryFilterMetadataMissingLabel": { + "description": "Filter option - items missing record label" + }, + "@badgeBeta": { + "description": "Badge label for beta features" + }, + "@audioAnalysisLufs": { + "description": "Integrated loudness metric label" + }, + "trackMetadata": "Метадані", + "@trackMetadata": { + "description": "Tab title - track metadata" + }, + "trackOptionRemoveFromLoved": "Видалити з улюблених", + "@trackOptionRemoveFromLoved": { + "description": "Bottom sheet action label - remove track from loved folder" + }, + "@aboutTelegramChat": { + "description": "Link to Telegram chat group" + }, + "errorLoadAlbum": "Не вдалося завантажити альбом", + "@errorLoadAlbum": { + "description": "Error state shown when album fails to load" + }, + "@trackCopiedToClipboard": { + "description": "Snackbar - content copied" + }, + "aboutKeepAndroidOpen": "Keep Android Open", + "@aboutKeepAndroidOpen": { + "description": "Link to Keep Android Open campaign website" + }, + "@lyricsProvidersDisabledSection": { + "description": "Section header for disabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@downloadAllowLocalNetwork": { + "description": "Setting title for allowing requests to private/local network targets" + }, + "credentialsClientIdHint": "Вставити ідентифікатор клієнта", + "@credentialsClientIdHint": { + "description": "Client ID placeholder" + }, + "@openInOtherServices": { + "description": "Title and tooltip for finding the current collection in other services" + }, + "@extensionVerificationBrowserInApp": { + "description": "Chip label for in-app browser verification mode" + }, + "sectionSearchSource": "Джерело пошуку", + "@sectionSearchSource": { + "description": "Settings section header" + }, + "allFilesAccess": "Доступ до всіх файлів", + "@allFilesAccess": { + "description": "Toggle for MANAGE_EXTERNAL_STORAGE permission" + }, "extensionsInstalledCount": "{count} extensions installed successfully", "@extensionsInstalledCount": { "description": "Success message after installing multiple extensions", @@ -4608,6 +1171,3228 @@ } } }, + "snackbarFailedToEmbedLyrics": "Не вдалося вставити текст пісні", + "@snackbarFailedToEmbedLyrics": { + "description": "Snackbar when lyrics embedding fails" + }, + "@lyricsProviderMusixmatchDesc": { + "description": "Description for Musixmatch provider" + }, + "queueRateLimitTitle": "Service rate limited", + "@queueRateLimitTitle": { + "description": "Title shown on a failed queue item when the download service rate limits requests" + }, + "@notifDownloadComplete": { + "description": "Notification title when a single download is complete" + }, + "@homeSupports": { + "description": "Info text about supported URL types" + }, + "notifDownloadsCanceledTitle": "Downloads canceled", + "@notifDownloadsCanceledTitle": { + "description": "Notification title when downloads are canceled by the user" + }, + "@lyricsModeEmbedSubtitle": { + "description": "Subtitle for embed option" + }, + "@snackbarCredentialsSaved": { + "description": "Snackbar - Spotify credentials saved" + }, + "optionsReplayGain": "Нормалізація звуку", + "@optionsReplayGain": { + "description": "Title for ReplayGain setting toggle" + }, + "@credentialsTitle": { + "description": "Credentials dialog title" + }, + "@storeLoadError": { + "description": "Error heading when the store cannot be loaded" + }, + "@trackArtist": { + "description": "Metadata label - artist name" + }, + "cacheCoverImageDesc": "Завантажено обкладинку альбому та треку. Завантаження відбудеться повторно після перегляду.", + "@cacheCoverImageDesc": { + "description": "Description of what cover image cache contains" + }, + "queueClearAll": "Усі", + "@queueClearAll": { + "description": "Button - clear all queue items" + }, + "downloadUsePrimaryArtistOnlyDisabled": "Повний рядок виконавця, що використовується для назви папки", + "@downloadUsePrimaryArtistOnlyDisabled": { + "description": "Subtitle when primary artist only is disabled" + }, + "backupImportSectionTitle": "Restore backup", + "@backupImportSectionTitle": { + "description": "Section title for the import/restore card" + }, + "@downloadMusixmatchLanguageHint": { + "description": "Placeholder for Musixmatch language input" + }, + "collectionRemoveFromFolder": "Видалити з папки", + "@collectionRemoveFromFolder": { + "description": "Tooltip for removing track from wishlist/loved folder" + }, + "storeFilterMetadata": "Метадані", + "@storeFilterMetadata": { + "description": "Store filter - metadata providers" + }, + "shareSheetCopyLink": "Copy Link", + "errorRateLimitedMessage": "Забагато запитів. Будь ласка, зачекайте хвилинку, перш ніж шукати знову.", + "@errorRateLimitedMessage": { + "description": "Error message - rate limit explanation" + }, + "libraryFilterSortGenreDesc": "Жанр (Я-А)", + "@libraryFilterSortGenreDesc": { + "description": "Sort option - genre descending" + }, + "trackFileNotFound": "Файл не знайдено", + "@trackFileNotFound": { + "description": "Error - file doesn't exist" + }, + "@queueEmptySinglesSubtitle": { + "description": "Empty state subtitle for single track downloads" + }, + "@queueDownloadStarting": { + "description": "Queue status before download progress is available" + }, + "metadataProviderPriorityInfo": "Deezer не має обмежень за швидкістю та рекомендований як основний сервіс. Spotify може обмежувати швидкість після великої кількості запитів.", + "@metadataProviderPriorityInfo": { + "description": "Info tip about rate limits" + }, + "aboutPCSource": "Вихідний код для ПК", + "@aboutPCSource": { + "description": "Link to PC GitHub repo" + }, + "editMetadataAutoFill": "Автоматичне заповнення з онлайн-ресурсів", + "@editMetadataAutoFill": { + "description": "Section title for selective online metadata auto-fill in the edit metadata sheet" + }, + "snackbarDeletedTracks": "Видалено {count} {count, plural, =1{трек} other{треків}}", + "@snackbarDeletedTracks": { + "description": "Snackbar - tracks deleted", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionHealthServiceDegraded": { + "description": "Tooltip for degraded extension service" + }, + "lyricsProviderLrclibDesc": "Синхронізована база даних текстів пісень з відкритим кодом", + "@lyricsProviderLrclibDesc": { + "description": "Description for LRCLIB provider" + }, + "downloadMusixmatchLanguageDesc": "Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.", + "@downloadMusixmatchLanguageDesc": { + "description": "Description in Musixmatch language picker" + }, + "@optionsEmbedMetadataSubtitleOn": { + "description": "Subtitle when metadata embedding is enabled" + }, + "@setupSkipForNow": { + "description": "Skip button text" + }, + "@a11ySelectTrack": { + "description": "Accessibility label for selecting a track" + }, + "@folderOrganizationByAlbumSubtitle": { + "description": "Subtitle for album folder option" + }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@extensionVerificationBrowserTitle": { + "description": "Settings option title for extension verification browser preference" + }, + "@backupContentsExtensions": { + "description": "Backup contents row for installed extensions count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarUrlCopied": "{platform} URL-адреса скопійована в буфер обміну", + "@snackbarUrlCopied": { + "description": "Snackbar - URL copied", + "placeholders": { + "platform": { + "type": "String", + "description": "Platform name (Spotify/Deezer)" + } + } + }, + "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "@aboutBinimumDesc": { + "description": "Credit description for binimum" + }, + "discographyFetchingAlbum": "Отримання {current} з {total}...", + "@discographyFetchingAlbum": { + "description": "Progress - fetching specific album", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "logAutoScrollOn": "Auto-scroll ON", + "@logAutoScrollOn": { + "description": "Tooltip when auto-scroll is enabled on the log screen" + }, + "@settingsMetadataSubtitle": { + "description": "Subtitle for metadata settings" + }, + "@regionCountryBR": { + "description": "Country name for SongLink region picker" + }, + "@lyricsProvidersTitle": { + "description": "Settings item title for lyrics provider order" + }, + "trackMetadataService": "Сервіс", + "@trackMetadataService": { + "description": "Metadata field - download service used" + }, + "discographyAddedToQueue": "Додано {count} треків до черги", + "cueSplitTrackCount": "{count} треків", + "@cueSplitTrackCount": { + "description": "Number of tracks in CUE sheet", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "dialogImportPlaylistTitle": "Імпорт списку відтворення", + "@dialogImportPlaylistTitle": { + "description": "Dialog title - import CSV playlist" + }, + "@cleanupOrphanedDownloadsSubtitle": { + "description": "Subtitle for orphaned cleanup button" + }, + "settingsLocalLibrary": "Локальна бібліотека", + "@settingsLocalLibrary": { + "description": "Settings menu item - local library" + }, + "@metadataSaveFailedStorage": { + "description": "Snackbar error when writing metadata file back to storage fails" + }, + "logCopyLogs": "Copy logs", + "@logCopyLogs": { + "description": "Tooltip for copying logs" + }, + "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", + "@downloadNetworkWifiOnlySubtitle": { + "description": "Subtitle for WiFi-only option in picker" + }, + "@lyricsModeBothSubtitle": { + "description": "Subtitle for both option" + }, + "@collectionAlreadyInPlaylist": { + "description": "Snackbar when track already exists in playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@collectionFoldersTitle": { + "description": "Library section title for custom folders" + }, + "searchSortDateNewest": "Дата випуску (найновіша)", + "@searchSortDateNewest": { + "description": "Sort option - newest release first" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "@recentTypeAlbum": { + "description": "Recent access item type - album" + }, + "nowPlayingPlayInOrder": "Play in order", + "@nowPlayingPlayInOrder": { + "description": "Tooltip when shuffle mode is disabled" + }, + "@cueSplitConfirmMessage": { + "description": "CUE split confirmation dialog message", + "placeholders": { + "album": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@audioAnalysisFileSize": { + "description": "File size metric label" + }, + "artistSingles": "Сингли та міні-альбоми", + "@artistSingles": { + "description": "Section header for singles/EPs" + }, + "@snackbarProviderPrioritySaved": { + "description": "Snackbar - provider order saved" + }, + "@recentPlaylistInfo": { + "description": "Snackbar message when tapping playlist in recent access", + "placeholders": { + "name": { + "type": "String", + "description": "Playlist name" + } + } + }, + "@lyricsProviderLyricsPlusDesc": { + "description": "Description for LyricsPlus provider" + }, + "providerPriorityFallbackExtensionsTitle": "Резервне розширення", + "@providerPriorityFallbackExtensionsTitle": { + "description": "Section title for choosing which download extensions can be used as fallback providers" + }, + "@libraryFilterDownloaded": { + "description": "Filter chip - show only downloaded items" + }, + "recentPlaylistInfo": "Список відтворення: {name}", + "@optionsReplayGainSubtitleOn": { + "description": "Subtitle when ReplayGain is enabled" + }, + "@actionCreate": { + "description": "Generic action button - create" + }, + "@downloadSelectQuality": { + "description": "Dialog title - choose audio quality" + }, + "cueSplitAlbum": "Альбом: {album}", + "@cueSplitAlbum": { + "description": "Album name in CUE split sheet", + "placeholders": { + "album": { + "type": "String" + } + } + }, + "@trackCoverNoSource": { + "description": "Snackbar when no cover art URL or embedded cover" + }, + "@storeRepoUrlLabel": { + "description": "Label for the repository URL input field" + }, + "@notifLibraryScanCompleteBody": { + "description": "Notification body for library scan complete - number of indexed tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsDetailedLogging": "Детальне журналювання", + "@optionsDetailedLogging": { + "description": "Enable verbose logs for debugging" + }, + "@lyricsProvidersDiscardContent": { + "description": "Body text of the discard-changes dialog on lyrics provider page" + }, + "@dialogDisableHistoryTitle": { + "description": "Confirmation dialog title shown before disabling download history" + }, + "downloadLossyOpus128Subtitle": "Найменший розмір, ~4 МБ на доріжку", + "@downloadLossyOpus128Subtitle": { + "description": "Subtitle for Opus 128kbps lossy option" + }, + "@appName": { + "description": "App name - DO NOT TRANSLATE" + }, + "libraryActions": "Дії", + "@libraryActions": { + "description": "Section header for library actions" + }, + "setupNoFolderSelected": "Папку не вибрано. Бажаєте використовувати папку «Музика» за замовчуванням?", + "@setupNoFolderSelected": { + "description": "Prompt when no folder selected" + }, + "downloadMusixmatchLanguageHint": "e.g. en, de, ja", + "trackSaveFailed": "Не вдалося: {error}", + "@trackSaveFailed": { + "description": "Snackbar when save operation fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "tutorialExtensionsTip1": "Перегляньте вкладку «Репозиторій», щоб знайти корисні розширення", + "@tutorialExtensionsTip1": { + "description": "Tutorial extensions tip 1" + }, + "@trackAddToQueue": { + "description": "Menu action to add a track to the playback queue" + }, + "@cacheTrackLookup": { + "description": "Cache item title for track ID lookup cache" + }, + "@discographyNoAlbums": { + "description": "Error - no albums found for artist" + }, + "optionsUseExtensionProvidersOff": "Extension providers are required", + "@optionsUseExtensionProvidersOff": { + "description": "Legacy status when extension providers would be disabled" + }, + "@updateLater": { + "description": "Update button - dismiss" + }, + "@snackbarFailedToInstall": { + "description": "Snackbar - extension install error" + }, + "@albumFolderArtistAlbumFlatSubtitle": { + "description": "Folder structure example for flat singles" + }, + "@errorMissingExtensionSource": { + "description": "Error - extension source not available", + "placeholders": { + "item": { + "type": "String" + } + } + }, + "libraryFilterSortAlbumAsc": "Альбом (А-Я)", + "@libraryFilterSortAlbumAsc": { + "description": "Sort option - album ascending" + }, + "@queueTrackCount": { + "description": "Track count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "audioAnalysisMono": "Mono", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, + "@lyricsModeEmbed": { + "description": "Lyrics mode option - embed in audio file" + }, + "@storeRepoDialogCurrent": { + "description": "Label shown above the current repository URL in the dialog" + }, + "@cacheRefreshStats": { + "description": "Button label to refresh cache statistics" + }, + "lyricsProviderAppleMusicDesc": "Синхронізовані тексти пісень слово за словом (через проксі)", + "@lyricsProviderAppleMusicDesc": { + "description": "Description for Apple Music provider" + }, + "settingsOptions": "Опції", + "@settingsOptions": { + "description": "Settings section - app options" + }, + "@downloadDeduplication": { + "description": "Setting - skip tracks already in download history" + }, + "updateFailedMessage": "Не вдалося завантажити оновлення", + "@updateFailedMessage": { + "description": "Update error message" + }, + "cacheEstimatedTotal": "Орієнтовне використання кешу: {size}", + "@cacheEstimatedTotal": { + "description": "Total cache size shown in summary", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "@aboutVersion": { + "description": "Version info label" + }, + "dialogRetry": "Повторити спробу", + "@cueSplitSplitting": { + "description": "Snackbar while splitting CUE", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@searchSortTitleZA": { + "description": "Sort option - title descending" + }, + "tutorialLibraryTip2": "Торкніться будь-якої композиції, щоб відтворити її за допомогою музичного плеєра", + "@tutorialLibraryTip2": { + "description": "Tutorial library tip 2" + }, + "extensionHealthServiceOffline": "Service offline", + "@extensionHealthServiceOffline": { + "description": "Tooltip for offline extension service" + }, + "actionDeselect": "Скасувати вибір", + "@actionDeselect": { + "description": "Action button - deselect all" + }, + "@trackConvertOriginal": { + "description": "Label for keeping original bit depth or sample rate during conversion" + }, + "@libraryClearConfirmTitle": { + "description": "Dialog title for clear confirmation" + }, + "@dialogDownloadAllMessage": { + "description": "Body of the Download All confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "homeSupports": "Підтримує: URL-адреси треків, альбомів, списків відтворення, виконавців", + "@downloadedAlbumDeleteSelected": { + "description": "Button - delete selected tracks" + }, + "@recentShowAllDownloads": { + "description": "Button label to unhide hidden downloads in recent access" + }, + "artistOptionRemoveFromFavorites": "Remove from Favorite Artists", + "@artistOptionRemoveFromFavorites": { + "description": "Action label - remove artist from favorite artists" + }, + "collectionPlaylistEmptyTitle": "Список відтворення порожній", + "@collectionPlaylistEmptyTitle": { + "description": "Playlist empty state title" + }, + "libraryFilterSortLatest": "Найновіші", + "@libraryFilterSortLatest": { + "description": "Sort option - newest first" + }, + "@libraryFilterMetadataMissingYear": { + "description": "Filter option - items missing release year/date" + }, + "@selectionSelected": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@tracksCount": { + "description": "Track count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@optionsCheckUpdates": { + "description": "Auto update check toggle" + }, + "@qualityHiResFlacMaxSubtitle": { + "description": "Technical spec for hi-res max" + }, + "actionStop": "Stop", + "@actionStop": { + "description": "Generic action - stop" + }, + "@selectionSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@queueFlacFindingProgress": { + "description": "Snackbar while resolving remote matches for local FLAC redownloads", + "placeholders": { + "current": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "folderOrganizationNoneSubtitle": "Усі файли в папці завантажень", + "@folderOrganizationNoneSubtitle": { + "description": "Subtitle for no organization option" + }, + "@updateDownloading": { + "description": "Update status - downloading" + }, + "artistAlbums": "Альбоми", + "@artistAlbums": { + "description": "Section header for artist albums" + }, + "trackConvertDitherTriangular": "TPDF", + "@trackConvertDitherTriangular": { + "description": "Lossless conversion triangular probability density function dither option" + }, + "nowPlayingShuffleLibraryFailed": "Could not shuffle library: {error}", + "@nowPlayingShuffleLibraryFailed": { + "description": "Snackbar when shuffling the library fails", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@setupIcloudNotSupported": { + "description": "Error when user selects iCloud Drive on iOS" + }, + "@optionsArtistTagModeSplitVorbis": { + "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" + }, + "@extensionsProviderPrioritySection": { + "description": "Section header - provider priority" + }, + "@libraryShowDuplicateIndicatorSubtitle": { + "description": "Subtitle for duplicate indicator toggle" + }, + "sectionDuplicates": "Duplicates", + "@sectionDuplicates": { + "description": "Settings section header for deduplication" + }, + "@backupTitle": { + "description": "App bar title for the backup and restore page" + }, + "trackCoverReplaceNotice": "The selected cover will replace the current embedded cover when you tap Save.", + "cacheSectionMaintenance": "Технічне обслуговування", + "@cacheSectionMaintenance": { + "description": "Section header for cleanup actions" + }, + "@editMetadataFieldGenre": { + "description": "Chip label for genre field in auto-fill selector" + }, + "@extensionsFallbackSubtitle": { + "description": "Subtitle for download fallback extensions menu" + }, + "selectionBatchConvertConfirmMessage": "Конвертувати {count} {count, plural, =1{трек} other{треків}} у {format} з бітрейтом {bitrate}?\n\nОригінальні файли будуть видалені після конвертації.", + "@selectionBatchConvertConfirmMessage": { + "description": "Confirmation dialog message for batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@selectionTapPlaylistsToSelect": { + "description": "Hint shown in playlist selection mode" + }, + "qualityHiResFlacMaxSubtitle": "24-біт / до 192 кГц", + "snackbarRemovedTracksFromLoved": "Видалено {count} треків з уподобань", + "@snackbarRemovedTracksFromLoved": { + "description": "Snackbar after removing multiple tracks from Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "folderOrganizationByArtistAlbum": "Виконавець/Альбом", + "@folderOrganizationByArtistAlbum": { + "description": "Folder option - nested folders" + }, + "snackbarCannotOpenFile": "Не вдається відкрити файл: {error}", + "@snackbarCannotOpenFile": { + "description": "Snackbar - file open error", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOff": { + "description": "Status when logging disabled" + }, + "optionsSpotifyCredentialsRequired": "Обов'язковий – торкніться, щоб налаштувати", + "@optionsSpotifyCredentialsRequired": { + "description": "Prompt to set up credentials" + }, + "@setupStorageDescription": { + "description": "Explanation for storage permission" + }, + "audioAnalysisCodec": "Codec", + "@regionCountryFR": { + "description": "Country name for SongLink region picker" + }, + "@optionsArtistTagMode": { + "description": "Setting title for how artist metadata is written into files" + }, + "@libraryClearConfirmMessage": { + "description": "Dialog message for clear confirmation" + }, + "trackLyricsNotAvailable": "Текст пісні для цього треку недоступний", + "@trackLyricsNotAvailable": { + "description": "Message when lyrics not found" + }, + "storeFilterUtility": "Утиліта", + "@storeFilterUtility": { + "description": "Store filter - utility extensions" + }, + "collectionAddedToPlaylist": "Додано до \"{playlistName}\"", + "@collectionAddedToPlaylist": { + "description": "Snackbar after adding track to playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "cacheClearConfirmTitle": "Очистити кеш?", + "@cacheClearConfirmTitle": { + "description": "Dialog title before clearing one cache category" + }, + "@downloadAppleElrcWordSyncDisabled": { + "description": "Subtitle when Apple Music eLRC word sync is disabled" + }, + "@aboutMobileDeveloper": { + "description": "Role description for mobile dev" + }, + "albumFolderYearAlbum": "[Рік] Альбом", + "@albumFolderYearAlbum": { + "description": "Album folder option with year" + }, + "cacheTitle": "Зберігання та кеш", + "@errorLoadPlaylist": { + "description": "Error state shown when playlist fails to load" + }, + "@extensionPostProcessing": { + "description": "Capability - post-download processing" + }, + "extensionsNoMetadataProvider": "Без розширень із постачальником метаданих", + "@extensionsNoMetadataProvider": { + "description": "Empty state - no metadata providers" + }, + "searchSortTitleZA": "Назва (Я-А)", + "@queueClearAllMessage": { + "description": "Clear queue confirmation" + }, + "audioAnalysisTitle": "Аналіз якості звуку", + "@audioAnalysisTitle": { + "description": "Title for audio analysis section" + }, + "@aboutReportIssueSubtitle": { + "description": "Subtitle for report issue" + }, + "@audioAnalysisSampleRate": { + "description": "Sample rate metric label" + }, + "@discographySelectedCount": { + "description": "Selection count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "qualityFlacLosslessSubtitle": "16 біт / 44,1 кГц", + "@qualityFlacLosslessSubtitle": { + "description": "Technical spec for lossless" + }, + "@credentialsClientId": { + "description": "Client ID field label - DO NOT TRANSLATE" + }, + "libraryScanFinalizing": "Завершення роботи з бібліотекою...", + "@libraryScanFinalizing": { + "description": "Status shown after file scanning finishes but library persistence is still running" + }, + "@trackEditMetadata": { + "description": "Menu action - edit embedded metadata" + }, + "@downloadNeteaseIncludeRomanization": { + "description": "Setting to include romanized lyrics from Netease" + }, + "@optionsArtistTagModeJoinedSubtitle": { + "description": "Subtitle for joined artist tag mode" + }, + "regionCountryDE": "Germany", + "@regionCountryDE": { + "description": "Country name for SongLink region picker" + }, + "optionsAutoFallback": "Автоматичний резервний варіант", + "@optionsAutoFallback": { + "description": "Auto-retry with other services" + }, + "@trackMetadataPlay": { + "description": "Action button - play track" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "aboutMobileDeveloper": "Розробник мобільної версії", + "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", + "@errorCouldNotKeepFolderAccess": { + "description": "Error when persistent folder access cannot be saved" + }, + "@trackDownloaded": { + "description": "Metadata label - download date" + }, + "homeSkipAlreadyDownloaded": "Пропустити вже завантажені пісні", + "@homeSkipAlreadyDownloaded": { + "description": "Checkbox label in import dialog to skip already-downloaded songs" + }, + "dialogUninstall": "Деінсталювати", + "@dialogUninstall": { + "description": "Dialog button - uninstall extension" + }, + "collectionDeletePlaylist": "Видалити список відтворення", + "@collectionDeletePlaylist": { + "description": "Action to delete playlist" + }, + "trackCoverOnline": "Online cover", + "@trackCoverOnline": { + "description": "Label shown when metadata autofill downloaded cover art from the internet" + }, + "@actionSaveCredentials": { + "description": "Action button - save Spotify credentials" + }, + "downloadTitle": "Завантажити", + "@downloadTitle": { + "description": "Download settings page title" + }, + "searchArtists": "Виконавці", + "@searchArtists": { + "description": "Search result category - artists" + }, + "extensionUrlHandler": "Обробник URL-адрес", + "@extensionUrlHandler": { + "description": "Capability - handles URLs" + }, + "@timeHoursAgo": { + "description": "Relative time - hours ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "editMetadataAdvanced": "Advanced", + "@editMetadataAdvanced": { + "description": "Expandable section label for advanced metadata fields" + }, + "@actionSelectAll": { + "description": "Action button - select all items" + }, + "timeMinutesAgo": "{count, plural, =1{1 minute ago} other{{count} хвилин тому}}", + "@timeMinutesAgo": { + "description": "Relative time - minutes ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "regionCountryXK": "Kosovo", + "@downloadAskQualitySubtitle": { + "description": "Subtitle for ask quality toggle" + }, + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, + "@updateAvailable": { + "description": "Update dialog title" + }, + "cacheEntries": "{count} записів", + "@cacheEntries": { + "description": "Track cache entry count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@notifLibraryScanExcluded": { + "description": "Library scan complete suffix - excluded track count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsMetadataPrioritySubtitle": "Встановити порядок пошуку та джерел метаданих", + "@extensionsMetadataPrioritySubtitle": { + "description": "Subtitle for metadata priority" + }, + "downloadedAlbumSelectToDelete": "Виберіть треки для видалення", + "@downloadedAlbumSelectToDelete": { + "description": "Placeholder when nothing selected" + }, + "@dialogClearHistoryTitle": { + "description": "Dialog title - clear download history" + }, + "tutorialSettingsTip1": "Змініть місце завантаження та організації папок", + "@tutorialSettingsTip1": { + "description": "Tutorial settings tip 1" + }, + "@extensionsInstalledSuccess": { + "description": "Success message after install" + }, + "allFilesAccessDisabledSubtitle": "Обмежено лише медіа-папками", + "@allFilesAccessDisabledSubtitle": { + "description": "Subtitle when all files access is disabled" + }, + "@appearanceHistoryViewList": { + "description": "List layout option" + }, + "@notifAlreadyInLibraryCount": { + "description": "Notification title when track is already in library, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "@libraryFilterAll": { + "description": "Filter chip - show all library items" + }, + "settingsDownload": "Завантаження", + "settingsFilesSubtitle": "Download location, filename, folder structure", + "@settingsFilesSubtitle": { + "description": "Subtitle for files & folders settings" + }, + "@libraryFilterSort": { + "description": "Filter section - sort order" + }, + "metadataProvidersSubtitle": "Drag to set search and metadata source order", + "@extensionPermissions": { + "description": "Section header - required permissions" + }, + "@downloadSelectTidalQobuz": { + "description": "Legacy info shown when a provider does not expose quality options" + }, + "selectionSelectToDelete": "Виберіть треки для видалення", + "@libraryExternalPlayerSubtitle": { + "description": "Subtitle for external player option" + }, + "extensionVerificationOpenBrowser": "Open browser", + "@extensionVerificationOpenBrowser": { + "description": "Button to open the extension verification URL in a browser" + }, + "@trackConvertConfirmMessageLossless": { + "description": "Confirmation dialog message for lossless-to-lossless conversion", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + } + } + }, + "@snackbarAddedTracksToQueue": { + "description": "Snackbar - multiple tracks added to queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@backupContentsWishlist": { + "description": "Backup contents row for wishlist tracks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheCleanupUnusedSubtitle": { + "description": "Subtitle for cleanup unused data action" + }, + "trackLabel": "Лейбл", + "@trackLabel": { + "description": "Metadata label - record label" + }, + "@collectionAddedToLoved": { + "description": "Snackbar after adding track to loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "regionCountryGB": "United Kingdom", + "dialogCancel": "Скасувати", + "@dialogCancel": { + "description": "Dialog button - cancel action" + }, + "@folderOrganizationByArtistAlbumSubtitle": { + "description": "Subtitle for nested folder option" + }, + "@notifAllDownloadsComplete": { + "description": "Notification title when all downloads finish successfully" + }, + "setupEnableNotifications": "Увімкнути сповіщення", + "@setupEnableNotifications": { + "description": "Button to enable notifications" + }, + "@notifFinalizingTrack": { + "description": "Notification title while finalizing (embedding metadata) a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionAuthor": "Автор", + "@extensionAuthor": { + "description": "Extension detail - author" + }, + "@downloadLossy320FormatDesc": { + "description": "Description in the lossy format picker" + }, + "filenameFormat": "Формат імені файлу", + "@filenameFormat": { + "description": "Setting title - filename pattern" + }, + "historySearchHint": "Історія пошуку...", + "@historySearchHint": { + "description": "Search bar placeholder in history" + }, + "@tutorialReadyMessage": { + "description": "Tutorial completion message" + }, + "cacheTempDirectoryDesc": "Тимчасові файли із завантажень та конвертації аудіо.", + "@cacheTempDirectoryDesc": { + "description": "Description of what temporary directory contains" + }, + "@trackSaveLyrics": { + "description": "Menu action - save lyrics as .lrc file" + }, + "@notifDownloadsFinished": { + "description": "Notification title when queue finishes with some failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@historyFilterAlbums": { + "description": "Filter chip - show albums only" + }, + "trackEmbedLyrics": "Вбудувати текст пісні", + "@trackEmbedLyrics": { + "description": "Action - embed lyrics into audio file" + }, + "@downloadPrimaryArtistOnlyOff": { + "description": "Status label when primary-artist-only folder naming is disabled" + }, + "credentialsClientSecretHint": "Вставити секретний код клієнта", + "@trackReEnrichFieldTrackInfo": { + "description": "Checkbox label for track info in re-enrich" + }, + "snackbarHistoryCleared": "Історія очищена", + "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", + "@artistPopular": { + "description": "Section header for popular/top tracks" + }, + "@trackFetchOnlineLyrics": { + "description": "Action - fetch lyrics from online providers" + }, + "extensionLyricsProvider": "Постачальник текстів пісень", + "@extensionLyricsProvider": { + "description": "Capability - provides lyrics" + }, + "historyFilterAll": "Усі", + "@historyFilterAll": { + "description": "Filter chip - show all items" + }, + "tutorialSearchTitle": "Пошук музики", + "@lyricsModeExternal": { + "description": "Lyrics mode option - separate LRC file" + }, + "@actionDismiss": { + "description": "Generic action - dismiss" + }, + "trackOpenInSpotify": "Відкрити в Spotify", + "@trackOpenInSpotify": { + "description": "Action - open track in Spotify app" + }, + "@libraryClear": { + "description": "Button to clear all library entries" + }, + "queueDownloadedHeader": "Завантажено", + "@queueDownloadedHeader": { + "description": "Header label for downloaded items section in library" + }, + "discographyFailedToFetch": "Не вдалося отримати деякі альбоми", + "@filenameShowAdvancedTagsDescription": { + "description": "Description for advanced filename tag toggle" + }, + "@storeUpdate": { + "description": "Update available button" + }, + "collectionPlaylistTracks": "{count, plural, =1{1 трек} other{{count} треків}}", + "@collectionPlaylistTracks": { + "description": "Track count label for custom playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsPrimaryProviderSubtitle": "Service used for searching by track or album name", + "@optionsPrimaryProviderSubtitle": { + "description": "Subtitle for primary provider" + }, + "@downloadEmbedLyricsDisabled": { + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" + }, + "@librarySourceLocal": { + "description": "Badge for tracks from local library scan" + }, + "@searchSortDurationLong": { + "description": "Sort option - longest duration first" + }, + "@downloadFilterContributingDisabled": { + "description": "Subtitle when contributing artist filter is off" + }, + "queueDownloadingCount": "Завантаження ({count})", + "@queueDownloadingCount": { + "description": "Header for active downloads section with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionVerificationBrowserInApp": "In-app", + "trackAudioQuality": "Якість звуку", + "@trackAudioQuality": { + "description": "Metadata label - audio quality" + }, + "libraryRemovedMissingFiles": "Видалено {count} відсутніх файлів з бібліотеки", + "@libraryRemovedMissingFiles": { + "description": "Snackbar after cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", + "@collectionFavoriteArtistsEmptyTitle": { + "description": "Favorite artists empty state title" + }, + "@errorInvalidFolderSelected": { + "description": "Error when the selected folder is invalid" + }, + "@searchSortArtistZA": { + "description": "Sort option - artist descending" + }, + "snackbarAddedTracksToLoved": "Додано {count} треків до списку \"Улюблені\"", + "@snackbarAddedTracksToLoved": { + "description": "Snackbar after adding multiple tracks to Loved folder", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cancelDownloadContent": "Це скасує активне завантаження треку \"{trackName}\".", + "@cancelDownloadContent": { + "description": "Dialog body when confirming cancellation of an active download", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "settingsCacheSubtitle": "Переглянути розмір і очистити кешовані дані", + "@settingsCacheSubtitle": { + "description": "Subtitle for cache management menu" + }, + "notifLibraryScanCompleteBody": "{count} треків індексовано", + "@cacheSizeWithFiles": { + "description": "Cache size and file count", + "placeholders": { + "size": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "@downloadAskBeforeDownload": { + "description": "Setting - show quality picker" + }, + "@extensionHealthDegraded": { + "description": "Extension service health status - degraded" + }, + "@sectionPerformance": { + "description": "Settings section header" + }, + "@trackCoverCurrent": { + "description": "Label for the currently embedded cover preview" + }, + "discographySelectAlbums": "Вибрати альбоми...", + "@discographySelectAlbums": { + "description": "Option - manually select albums to download" + }, + "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", + "@aboutAppDescription": { + "description": "App description in header card" + }, + "extensionCustomTrackMatching": "Підбір користувацьких треків", + "@extensionCustomTrackMatching": { + "description": "Capability - custom track matching algorithm" + }, + "@editMetadataSelectNone": { + "description": "Button to clear selected fields for auto-fill" + }, + "@trackPlayNext": { + "description": "Menu action to play a track as the next queue item" + }, + "extensionCapabilities": "Можливості", + "@extensionCapabilities": { + "description": "Section header - extension features" + }, + "trackSaveLyricsSubtitle": "Отримати та зберегти текст пісні у форматі .lrc", + "@downloadSelectServiceToEnable": { + "description": "Subtitle when quality picker is disabled due to extension service" + }, + "logIssueRateLimitedDescription": "Too many requests to the service", + "@logIssueRateLimitedDescription": { + "description": "Diagnostic badge description for rate limiting" + }, + "@actionResume": { + "description": "Action button - resume download" + }, + "@updateDownloadInstall": { + "description": "Update button - download and install" + }, + "downloadLossy320Format": "Формат із втратами 320 кбіт/с", + "@downloadLossy320Format": { + "description": "Title of the lossy format picker bottom sheet" + }, + "settingsMetadataSubtitle": "Cover art, tags, ReplayGain, providers", + "@trackCopyright": { + "description": "Metadata label - copyright information" + }, + "@snackbarExtensionInstalled": { + "description": "Snackbar - extension installed successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@regionCountryJP": { + "description": "Country name for SongLink region picker" + }, + "trackReEnrichOnlineSubtitle": "Пошук метаданих в Інтернеті та вбудовування у файл", + "@trackReEnrichOnlineSubtitle": { + "description": "Subtitle for re-enrich metadata action for local items" + }, + "nowPlayingNothingPlaying": "Nothing is playing", + "@nowPlayingNothingPlaying": { + "description": "Empty state when no track is currently playing" + }, + "tutorialDownloadDesc": "Завантаження музики просте та швидке. Ось як це працює.", + "@tutorialDownloadDesc": { + "description": "Tutorial download page description" + }, + "@appearanceTitle": { + "description": "Appearance settings page title" + }, + "collectionDeletePlaylistMessage": "Видалити \"{playlistName}\" та всі треки в ньому?", + "@collectionDeletePlaylistMessage": { + "description": "Confirmation message for deleting playlist", + "placeholders": { + "playlistName": { + "type": "String" + } + } + }, + "@backupExportSectionDescription": { + "description": "Description of what a backup contains" + }, + "@downloadLossyOpus128": { + "description": "Lossy format option - Opus 128kbps" + }, + "@logFilterSection": { + "description": "Filter section title" + }, + "trackReEnrichSuccess": "Метадані повторно збагачені успішно", + "@trackReEnrichSuccess": { + "description": "Snackbar after successful re-enrichment" + }, + "backupContentsHistory": "{count} history {count, plural, =1{item} other{items}}", + "@backupContentsHistory": { + "description": "Backup contents row for history count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "snackbarAddedToQueue": "Додано \"{trackName}\" до черги", + "@snackbarAddedToQueue": { + "description": "Snackbar - track added to download queue", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "libraryAutoScanOnOpen": "Кожного разу коли додаток відкривається", + "@libraryAutoScanOnOpen": { + "description": "Auto scan when app opens" + }, + "audioAnalysisChannels": "Канали", + "@audioAnalysisChannels": { + "description": "Channels metric label" + }, + "appearanceHistoryViewList": "Список", + "updateDownloadInstall": "Завантажити та встановити", + "@libraryShowDuplicateIndicator": { + "description": "Toggle for duplicate indicator in search" + }, + "extensionsHomeFeedOff": "Off", + "@extensionsHomeFeedOff": { + "description": "Extensions page - home feed provider option: off" + }, + "searchSortTitleAZ": "Назва (А-Я)", + "@searchSortTitleAZ": { + "description": "Sort option - title ascending" + }, + "collectionRemovedFromLoved": "\"{trackName}\" видалено з уподобань", + "@collectionRemovedFromLoved": { + "description": "Snackbar after removing track from loved folder", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "sectionAudioQuality": "Якість звуку", + "@sectionAudioQuality": { + "description": "Settings section header" + }, + "trackConvertSuccess": "Конвертовано в {format} успішно", + "@trackConvertSuccess": { + "description": "Snackbar after successful conversion", + "placeholders": { + "format": { + "type": "String" + } + } + }, + "dialogUninstallExtensionMessage": "Ви впевнені, що хочете видалити {extensionName}?", + "@dialogUninstallExtensionMessage": { + "description": "Dialog message - uninstall specific extension", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "downloadNativeWorkerSubtitle": "Beta Android service worker for extension downloads", + "@downloadNativeWorkerSubtitle": { + "description": "Setting subtitle for Android native download worker" + }, + "storeUpdate": "Оновлені", + "libraryFilterMetadataMissingAny": "будь-які метадані", + "@libraryFilterMetadataMissingAny": { + "description": "Filter option - items missing any tracked metadata field" + }, + "@selectionBatchConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless batch conversion", + "placeholders": { + "count": { + "type": "int" + }, + "format": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "editMetadataAutoFillDesc": "Виберіть поля для автоматичного заповнення з онлайн-метаданих", + "@editMetadataAutoFillDesc": { + "description": "Description for the auto-fill section" + }, + "@lyricsProviderExtensionDesc": { + "description": "Generic description for extension-based lyrics providers" + }, + "downloadSongLinkRegion": "Регіон SongLink", + "@downloadSongLinkRegion": { + "description": "Setting for SongLink region used during fallback resolution" + }, + "shareSheetNoExtensions": "No other compatible services", + "@shareSheetNoExtensions": { + "description": "Empty state when no extensions can be searched for cross-service links" + }, + "queueFlacConfirmMessage": "Пошук онлайн-збігів для вибраних треків та додавання завантажень FLAC до черги.\n\nІснуючі файли не будуть змінені або видалені.\n\nАвтоматично додаються до черги лише збіги з високою достовірністю.\n\n{count} вибрано", + "@queueFlacConfirmMessage": { + "description": "Confirmation dialog body before queueing FLAC redownloads for local tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "tooltipAddToPlaylist": "Додати до списку відтворення", + "@tooltipAddToPlaylist": { + "description": "Tooltip for the Add to Playlist button" + }, + "@snackbarAddedToQueueGeneric": { + "description": "Snackbar when a track is added to the playback queue without naming it" + }, + "@tutorialSettingsTip2": { + "description": "Tutorial settings tip 2" + }, + "extensionPermissions": "Дозволи", + "releaseTypeSingle": "Single", + "aboutTelegramChannelSubtitle": "Оголошення та оновлення", + "@aboutTelegramChannelSubtitle": { + "description": "Subtitle for Telegram channel" + }, + "@dialogDisableAndClear": { + "description": "Confirmation action to disable download history and clear existing entries" + }, + "@homeSearchHintProvider": { + "description": "Placeholder for the main search field when a provider is selected", + "placeholders": { + "providerName": { + "type": "String" + } + } + }, + "metadataProvidersTitle": "Metadata Provider Priority", + "@metadataProvidersTitle": { + "description": "Settings item title for metadata provider order" + }, + "trackAddToQueue": "Add to queue", + "audioAnalysisDecodedFormat": "Decoded Format", + "@audioAnalysisDecodedFormat": { + "description": "Decoded sample format metric label" + }, + "@editMetadataSelectEmpty": { + "description": "Button to select only fields that are currently empty" + }, + "collectionAlreadyInPlaylist": "Вже у списку відтворення \"{playlistName}\"", + "discographyAlbumsOnlySubtitle": "{count} треків з {albumCount} альбомів", + "@discographyAlbumsOnlySubtitle": { + "description": "Subtitle showing album tracks count", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "setupNotificationEnable": "Увімкнути сповіщення", + "@setupNotificationEnable": { + "description": "Button to enable notifications" + }, + "@notifChannelLibraryScanDesc": { + "description": "Android notification channel description for library scan" + }, + "settingsAppearanceSubtitle": "Тема, кольори, дисплей", + "@settingsAppearanceSubtitle": { + "description": "Appearance settings description" + }, + "@notifUpdateFailedBody": { + "description": "Notification body when app update download fails" + }, + "@aboutOriginalCreator": { + "description": "Role description for original creator" + }, + "libraryBuiltInPreviewPlayer": "Built-in preview player", + "@libraryBuiltInPreviewPlayer": { + "description": "Setting option to use the built-in preview player" + }, + "tooltipPlay": "Відтворити", + "@tooltipPlay": { + "description": "Tooltip - play button" + }, + "@safMigrationMessage2": { + "description": "Second paragraph of SAF migration dialog" + }, + "@extensionsSearchProvider": { + "description": "Setting - search provider selection" + }, + "libraryAboutDescription": "Сканує вашу існуючу музичну колекцію для виявлення дублікатів під час завантаження. Підтримує формати FLAC, M4A, MP3, Opus та OGG. Метадані зчитуються з тегів файлів, коли вони доступні.", + "@libraryAboutDescription": { + "description": "Description of local library feature" + }, + "downloadAskBeforeDownload": "Запитувати перед завантаженням", + "nowPlayingNoMetadata": "No metadata available", + "@nowPlayingNoMetadata": { + "description": "Empty state when track metadata cannot be loaded" + }, + "trackInstrumental": "Інструментальний трек", + "@trackInstrumental": { + "description": "Message when track is instrumental (no lyrics)" + }, + "@collectionWishlistEmptyTitle": { + "description": "Wishlist empty state title" + }, + "selectionBatchConvertConfirmMessageLosslessCapped": "Convert {count} {count, plural, =1{track} other{tracks}} to {format} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original files will be deleted after conversion.", + "downloadDeduplication": "Skip Duplicate Downloads", + "libraryFilterSortOldest": "Найстаріші", + "@libraryFilterSortOldest": { + "description": "Sort option - oldest first" + }, + "setupSkip": "Пропустити поки що", + "@setupSkip": { + "description": "Skip current step button" + }, + "@setupFolderDescription": { + "description": "Explanation for folder selection" + }, + "@settingsLogsSubtitle": { + "description": "Logs settings description" + }, + "storeNewRepoUrlLabel": "Нова URL-адреса репозиторію", + "@storeNewRepoUrlLabel": { + "description": "Label for the new repository URL field inside the dialog" + }, + "cacheClearConfirmMessage": "Це очистить кешовані дані для {target}. Завантажені музичні файли не будуть видалені.", + "@cacheClearConfirmMessage": { + "description": "Dialog message before clearing selected cache", + "placeholders": { + "target": { + "type": "String" + } + } + }, + "trackMetadataPlay": "Прослухати", + "@libraryEnableLocalLibrary": { + "description": "Toggle to enable library scanning" + }, + "optionsUpdateChannel": "Канал оновлень", + "@optionsUpdateChannel": { + "description": "Stable vs preview releases" + }, + "@downloadCreatePlaylistSourceFolderDisabled": { + "description": "Subtitle when playlist folder is disabled" + }, + "@extensionRefreshStatus": { + "description": "Tooltip for refreshing extension service health status" + }, + "backupRestoreRestartHint": "Restart the app to make sure every change is applied.", + "@backupRestoreRestartHint": { + "description": "Hint shown after restoring that an app restart is recommended" + }, + "@snackbarExtensionInstalledEnable": { + "description": "Snackbar after installing an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "settingsAutoExportFailedSubtitle": "Автоматично зберігати невдалі завантаження у файл TXT", + "@settingsAutoExportFailedSubtitle": { + "description": "Subtitle for auto-export setting" + }, + "searchSortArtistAZ": "Виконавець (А-Я)", + "@searchSortArtistAZ": { + "description": "Sort option - artist ascending" + }, + "editMetadataFieldAlbumArtist": "Виконавець альбому", + "@editMetadataFieldAlbumArtist": { + "description": "Chip label for album artist field in auto-fill selector" + }, + "@queueEmptyHistory": { + "description": "Empty state title when download history is empty" + }, + "@dialogDisableHistoryMessage": { + "description": "Confirmation dialog message shown before disabling download history" + }, + "queueFlacNoReliableMatches": "Не знайдено надійних онлайн-відповідей для вибраного запиту", + "@queueFlacNoReliableMatches": { + "description": "Snackbar when no safe FLAC redownload matches were found" + }, + "trackOpenInDeezer": "Відкрити в Deezer", + "@trackOpenInDeezer": { + "description": "Action - open track in Deezer app" + }, + "setupChooseFromFilesSubtitle": "Виберіть iCloud або інше місцезнаходження", + "@setupChooseFromFilesSubtitle": { + "description": "Subtitle for file picker" + }, + "artistMonthlyListeners": "{count} слухачів щомісяця", + "@artistMonthlyListeners": { + "description": "Monthly listener count display", + "placeholders": { + "count": { + "type": "String", + "description": "Formatted listener count" + } + } + }, + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, + "cacheSectionStorage": "Кешовані дані", + "@cacheSectionStorage": { + "description": "Section header for cache entries" + }, + "@libraryAutoScanWeekly": { + "description": "Auto scan once per week" + }, + "tutorialDownloadCompletedSemantics": "Download completed", + "@tutorialDownloadCompletedSemantics": { + "description": "Accessibility label for completed download state in tutorial demo" + }, + "@logNoLogsYet": { + "description": "Empty state title" + }, + "@selectionDeletePlaylistsCount": { + "description": "Button label for deleting multiple selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", + "@downloadSeparateSinglesEnabled": { + "description": "Subtitle when separate singles folder is on" + }, + "setupAppDocumentsFolder": "Папка з документами програми", + "@setupAppDocumentsFolder": { + "description": "iOS documents folder option" + }, + "storeLoadError": "Не вдалося завантажити репозиторій", + "settingsDownloadNetwork": "Мережа для завантаження", + "metadataSaveFailedStorage": "Не вдалося записати метадані назад у сховище", + "@logAutoScrollOff": { + "description": "Tooltip when auto-scroll is disabled on the log screen" + }, + "@trackConvertFormat": { + "description": "Menu item - convert audio format" + }, + "optionsArtistTagModeJoined": "Одне об'єднане значення", + "@optionsArtistTagModeJoined": { + "description": "Artist tag mode option that joins multiple artists into one value" + }, + "@dateYesterday": { + "description": "Relative date - yesterday" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "@settingsExtensionsSubtitle": { + "description": "Extensions settings description" + }, + "searchSortArtistZA": "Виконавець (Я-А)", + "@extensionSettings": { + "description": "Section header - extension settings" + }, + "@extensionOauthConnectHint": { + "description": "Hint for an OAuth login link field before connecting Spotify" + }, + "@notifUpdateReady": { + "description": "Notification title when app update download is complete" + }, + "@regionCountryMX": { + "description": "Country name for SongLink region picker" + }, + "@nowPlayingOpenInExternalPlayer": { + "description": "Menu item to open the current track in an external player" + }, + "trackConvertDithering": "Dithering", + "@trackConvertDithering": { + "description": "Section label for lossless conversion dithering options" + }, + "settingsDownloadSubtitle": "Service, quality, fallback", + "@settingsDownloadSubtitle": { + "description": "Download settings description" + }, + "libraryLastScanned": "Останнє сканування: {time}", + "@libraryLastScanned": { + "description": "Last scan time display", + "placeholders": { + "time": { + "type": "String" + } + } + }, + "setupIosEmptyFolderWarning": "Обмеження iOS: Не можна вибрати порожні папки. Виберіть папку, яка містить принаймні один файл.", + "@setupIosEmptyFolderWarning": { + "description": "iOS folder selection warning" + }, + "@storeAddRepoDescription": { + "description": "Store setup screen - explanatory text" + }, + "@snackbarFailedToInstallNamed": { + "description": "Snackbar when extension install fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@collectionAddedTracksToPlaylist": { + "description": "Snackbar after adding multiple tracks to a playlist", + "placeholders": { + "count": { + "type": "int" + }, + "playlistName": { + "type": "String" + } + } + }, + "updateNew": "Нова", + "@updateNew": { + "description": "Label for new version" + }, + "settingsExtensionsSubtitle": "Керування постачальниками послуг завантаження", + "sortAlphaAsc": "А-Я", + "@sortAlphaAsc": { + "description": "Sort option - alphabetical ascending" + }, + "@albumFolderArtistAlbumSinglesSubtitle": { + "description": "Folder structure example" + }, + "trackReEnrichSelectAll": "Вибрати все", + "@trackReEnrichSelectAll": { + "description": "Select all fields checkbox in re-enrich" + }, + "@extensionsUninstall": { + "description": "Uninstall extension button" + }, + "@downloadUseAlbumArtistForFoldersTrackSubtitle": { + "description": "Subtitle when track artist is used for folder names" + }, + "@logIssueNetworkErrorLabel": { + "description": "Diagnostic badge label for generic network errors" + }, + "albumFolderArtistYearAlbumSubtitle": "Альбоми/Ім'я Виконавця/[2005] Назва альбому/", + "@albumFolderArtistYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "itemCount": "{count} {count, plural, =1{item} other{items}}", + "@itemCount": { + "description": "Generic item count label", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "discographyFetchingTracks": "Отримання треків...", + "@discographyFetchingTracks": { + "description": "Progress - fetching album tracks" + }, + "@libraryFolder": { + "description": "Folder selection setting" + }, + "queueEmptyAlbums": "Немає завантажень альбомів", + "@queueEmptyAlbums": { + "description": "Empty state title when no album downloads exist" + }, + "@metadataProviderPriorityDescription": { + "description": "Metadata priority page description" + }, + "@extensionVerificationHelpTitleManual": { + "description": "Dialog title when automatic browser launch for verification fails" + }, + "extensionError": "Помилка", + "@extensionError": { + "description": "Extension detail - error message" + }, + "@trackLyricsLoadFailed": { + "description": "Message when lyrics loading fails" + }, + "@downloadedAlbumDeleteCount": { + "description": "Delete button text with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionsNoHomeFeedExtensions": { + "description": "Extensions page - shown when no installed extension has home feed" + }, + "@collectionArtistCount": { + "description": "Artist count label for favorite artists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "backupContentsArtists": "{count, plural, =1{1 favorite artist} other{{count} favorite artists}}", + "@backupContentsArtists": { + "description": "Backup contents row for favorite artists count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackRemoveFromDevice": { + "description": "Action - delete downloaded file" + }, + "lyricsProvidersEnabledSection": "Увімкнено ({count})", + "@lyricsProvidersEnabledSection": { + "description": "Section header for enabled providers", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cueSplitTitle": { + "description": "Title for CUE split bottom sheet" + }, + "@downloadedAlbumSelectedCount": { + "description": "Selection count indicator", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackOptionRemoveFromWishlist": { + "description": "Bottom sheet action label - remove track from wishlist" + }, + "notifDownloadingTrack": "Завантаження {trackName}", + "@notifDownloadingTrack": { + "description": "Notification title while downloading a track", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "@discographySkippedDownloaded": { + "description": "Snackbar - with skipped tracks count", + "placeholders": { + "added": { + "type": "int" + }, + "skipped": { + "type": "int" + } + } + }, + "@tutorialSettingsTip3": { + "description": "Tutorial settings tip 3" + }, + "@credentialsClientSecret": { + "description": "Client Secret field label - DO NOT TRANSLATE" + }, + "@announcementUnableToOpenLink": { + "description": "Snackbar shown when an announcement CTA link cannot be opened" + }, + "trackReleaseDate": "Дата випуску", + "discographySelectedCount": "{count} вибрано", + "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", + "logIssueNetworkErrorLabel": "NETWORK ERROR", + "updateStartingDownload": "Початок завантаження...", + "@updateStartingDownload": { + "description": "Update status - initializing" + }, + "trackDiscNumber": "Номер диска", + "@trackDiscNumber": { + "description": "Metadata label - disc number" + }, + "optionsUsingExtension": "Використання розширення: {extensionName}", + "@optionsUsingExtension": { + "description": "Shows active extension name", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "dialogDisableHistoryTitle": "Turn off download history?", + "tutorialWelcomeTip3": "Автоматичне додавання метаданих, обкладинки та текстів пісень", + "@tutorialWelcomeTip3": { + "description": "Tutorial welcome tip 3" + }, + "@collectionPlaylistEmptySubtitle": { + "description": "Playlist empty state subtitle" + }, + "badgeBeta": "BETA", + "@tutorialSearchHint": { + "description": "Placeholder shown in the tutorial search demo" + }, + "cleanupOrphanedDownloadsNone": "Не знайдено утрачених записів", + "discographySkippedDownloaded": "{added} додано, {skipped} вже завантажено", + "@updateDontRemind": { + "description": "Update button - skip this version" + }, + "@snackbarLoadingCueSheet": { + "description": "Snackbar while loading a CUE sheet file" + }, + "@dialogUninstallExtension": { + "description": "Dialog title - uninstall extension" + }, + "lyricsProvidersTitle": "Lyrics Provider Priority", + "@dialogRemove": { + "description": "Dialog button - remove item" + }, + "snackbarError": "Помилка: {error}", + "@snackbarError": { + "description": "Generic error snackbar with error detail", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@sectionApp": { + "description": "Settings section header" + }, + "@libraryPlayback": { + "description": "Section header for playback settings in library settings" + }, + "@downloadPrimaryArtistOnlyOn": { + "description": "Status label when primary-artist-only folder naming is enabled" + }, + "lyricsProvidersDiscardContent": "У вас є незбережені зміни, які буде втрачено.", + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "trackConvertConfirmMessageLossless": "Конвертувати з {sourceFormat} у {targetFormat}? (Lossless — без втрати якості)\n\nОригінальний файл буде видалено після конвертації.", + "discographyAlbumsOnly": "Тільки альбоми", + "@discographyAlbumsOnly": { + "description": "Option - download only albums" + }, + "@editMetadataFieldCopyright": { + "description": "Chip label for copyright field in auto-fill selector" + }, + "extensionsFallbackSubtitle": "Виберіть, які встановлені розширення для завантаження можна використовувати як резервні", + "aboutSocial": "Соціальні мережі", + "@aboutSocial": { + "description": "Section for social links" + }, + "audioAnalysisNyquist": "Частота Найквіста", + "trackCoverSelected": "Selected cover", + "@trackCoverSelected": { + "description": "Label for the newly selected cover preview" + }, + "downloadDeduplicationEnabled": "Already-downloaded tracks will be skipped", + "@downloadDeduplicationEnabled": { + "description": "Subtitle when deduplication is on" + }, + "homeEmptyTitle": "No search providers yet", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "@extensionHealthUnknown": { + "description": "Extension service health status - unknown" + }, + "storeInstalled": "Встановлені", + "@storeInstalled": { + "description": "Already installed badge" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "libraryShowDuplicateIndicatorSubtitle": "Показувати під час пошуку існуючих треків", + "@collectionPlaylistRenamed": { + "description": "Snackbar after renaming playlist" + }, + "@trackConvertResamplerSoxr": { + "description": "Lossless conversion SoX resampler option" + }, + "@dialogUnsavedChanges": { + "description": "Dialog message - unsaved changes" + }, + "dialogDownload": "Завантажити", + "@dialogDownload": { + "description": "Confirm button in Download All dialog" + }, + "trackLyricsLoadFailed": "Не вдалося завантажити текст пісні", + "@backupContentsTitle": { + "description": "Header above the list summarizing what the backup contains" + }, + "@safMigrationTitle": { + "description": "Title of SAF migration dialog" + }, + "@trackReEnrichFieldLyrics": { + "description": "Checkbox label for lyrics field in re-enrich" + }, + "setupPermissionDeniedMessage": "Дозвіл відхилено. Будь ласка, надайте всі дозволи, щоб продовжити.", + "@setupPermissionDeniedMessage": { + "description": "Error when permission denied" + }, + "settingsDownloadNetworkWifiOnly": "Тільки Wi-Fi", + "@settingsDownloadNetworkWifiOnly": { + "description": "Network option - only use WiFi" + }, + "@backupIncludeSecrets": { + "description": "Toggle to include secret extension settings (tokens, API keys) in the backup" + }, + "@libraryFilterMetadataMissingAlbumArtist": { + "description": "Filter option - items missing album artist" + }, + "@extensionHealthServiceUnknown": { + "description": "Tooltip for unknown extension service health" + }, + "snackbarExtensionUpdated": "{extensionName} оновлено.", + "@snackbarExtensionUpdated": { + "description": "Snackbar - extension updated successfully", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@settingsTitle": { + "description": "Settings screen title" + }, + "@libraryFilterMetadataIncorrectIsrcFormat": { + "description": "Filter option - items with an invalid ISRC format" + }, + "@notifLibraryScanComplete": { + "description": "Notification title when library scan finishes" + }, + "@logIssueIspBlockingLabel": { + "description": "Diagnostic badge label when ISP blocking is detected" + }, + "tutorialDownloadTitle": "Завантаження музики", + "@tutorialDownloadTitle": { + "description": "Tutorial download page title" + }, + "unknownTitle": "Unknown title", + "@unknownTitle": { + "description": "Fallback track title when metadata is missing" + }, + "settingsOptionsSubtitle": "Fallback, metadata, lyrics, cover art", + "navLibrary": "Бібліотека", + "@navLibrary": { + "description": "Bottom navigation - Library tab" + }, + "@snackbarAlreadyDownloaded": { + "description": "Snackbar - track already exists", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "editMetadataSelectAll": "Усі", + "@editMetadataSelectAll": { + "description": "Button to select all fields for auto-fill" + }, + "storeEmptyNoExtensions": "Розширень немає", + "@storeEmptyNoExtensions": { + "description": "Message when store has no extensions" + }, + "optionsUpdateChannelWarning": "Тестовий реліз може містити помилки або неповні функції", + "@optionsUpdateChannelWarning": { + "description": "Warning about preview channel" + }, + "@collectionPlaylistNameHint": { + "description": "Hint text for playlist name input" + }, + "notifLibraryScanComplete": "Сканування бібліотеки завершено", + "editMetadataFieldIsrc": "ISRC", + "@editMetadataFieldIsrc": { + "description": "Chip label for ISRC field in auto-fill selector" + }, + "@libraryFolderHint": { + "description": "Placeholder when no folder selected" + }, + "homeSearchHintDefault": "Paste supported URL or search...", + "@homeSearchHintDefault": { + "description": "Default placeholder for the main search field on Home" + }, + "extensionsNoExtensionsSubtitle": "Встановіть файли .spotiflac-ext, щоб додати нових провайдерів", + "@extensionsNoExtensionsSubtitle": { + "description": "Empty state subtitle" + }, + "@extensionEnterValue": { + "description": "Hint for editing an extension setting value" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "@libraryScanSelectFolderFirst": { + "description": "Message when trying to scan without folder" + }, + "@qualityHiResFlac": { + "description": "Quality option - high resolution FLAC" + }, + "aboutSpecialThanks": "Особлива подяка", + "@aboutSpecialThanks": { + "description": "Section for special thanks" + }, + "storeInstall": "Встановити", + "@storeInstall": { + "description": "Install extension button" + }, + "@collectionWishlistEmptySubtitle": { + "description": "Wishlist empty state subtitle" + }, + "historyFilterAlbums": "Альбоми", + "extensionCustomUrlHandlingSubtitle": "This extension can handle links from these sites", + "@extensionCustomUrlHandlingSubtitle": { + "description": "Extension detail subtitle for custom URL handling" + }, + "filenameShowAdvancedTagsDescription": "Увімкнути відформатовані теги для доповнення доріжок і шаблонів дати", + "@aboutReportIssue": { + "description": "Link to report bugs" + }, + "@folderOrganizationByPlaylist": { + "description": "Folder option - playlist folders" + }, + "@dateWeeksAgo": { + "description": "Relative date - weeks ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "logEntriesFiltered": "Записи ({count} filtered)", + "@logEntriesFiltered": { + "description": "Log count with filter active", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@lyricsModeDescription": { + "description": "Lyrics mode picker description" + }, + "@setupAppDocumentsFolderSubtitle": { + "description": "Subtitle for documents folder" + }, + "storeAddRepoButton": "Додати репозиторій", + "@storeAddRepoButton": { + "description": "Button to submit a new repository URL" + }, + "@collectionLovedEmptyTitle": { + "description": "Loved empty state title" + }, + "aboutReportIssue": "Повідомити про проблему", + "snackbarFailedToWriteStorage": "Не вдалося перезаписати у сховище", + "@snackbarFailedToWriteStorage": { + "description": "Snackbar when writing metadata back to file fails" + }, + "errorInvalidFolderSelected": "Invalid folder selected", + "allFilesAccessDisabledMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", + "@allFilesAccessDisabledMessage": { + "description": "Snackbar message when user disables all files access" + }, + "downloadMusixmatchLanguageCode": "Код мови", + "@downloadMusixmatchLanguageCode": { + "description": "Label for Musixmatch language input field" + }, + "dialogUnsavedChanges": "У вас є незбережені зміни. Ви хочете їх скасувати?", + "setupChooseFromFiles": "Вибрати з файлів", + "@setupChooseFromFiles": { + "description": "iOS file picker option" + }, + "@collectionFavoriteArtistsEmptySubtitle": { + "description": "Favorite artists empty state subtitle" + }, + "downloadLossy320FormatDesc": "Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.", + "@backupRestoreConfirmButton": { + "description": "Confirm button to proceed with restore" + }, + "@queueEmptyAlbumsSubtitle": { + "description": "Empty state subtitle for album downloads" + }, + "collectionRemovedFromWishlist": "\"{trackName}\" видалено зі списку бажань", + "@collectionRemovedFromWishlist": { + "description": "Snackbar after removing track from wishlist", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "extensionsInstalledSuccess": "Розширення успішно встановлено", + "progressReadingCsv": "Читання CSV-файлу...", + "@progressReadingCsv": { + "description": "Progress indicator - parsing CSV file" + }, + "artistReleases": "Releases", + "@artistReleases": { + "description": "Section header for all artist releases" + }, + "extensionVerificationBrowserTitle": "Verification browser", + "extensionDefaultProvider": "Default Search", + "@optionsDefaultSearchTabSubtitle": { + "description": "Subtitle for the preferred default search tab setting" + }, + "optionsArtistTagModeJoinedSubtitle": "Для максимальної сумісності програвача напишіть одне значення ARTIST, наприклад, «Виконавець A, Виконавець B».", + "downloadLossy320": "Lossy (із втратами) 320 кбіт/с", + "@downloadLossy320": { + "description": "Quality option label for lossy 320kbps" + }, + "queueFlacAction": "Черга FLAC", + "@queueFlacAction": { + "description": "Action/button label for queueing FLAC redownloads for local tracks" + }, + "@setupDownloadLocationIosMessage": { + "description": "iOS-specific folder info" + }, + "@optionsSpotifyWarning": { + "description": "Info about Spotify API requirement" + }, + "trackConvertOriginal": "Original", + "sectionLyricsProviderOptions": "Provider Options", + "nowPlayingTitle": "Now Playing", + "@nowPlayingTitle": { + "description": "Title for the now playing screen" + }, + "@extensionHealthChecksConfigured": { + "description": "Extension service health check count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@cacheClearAll": { + "description": "Button label to clear all caches" + }, + "a11yDeselectTrack": "Deselect track", + "@a11yDeselectTrack": { + "description": "Accessibility label for deselecting a track" + }, + "@lyricsProvidersInfoText": { + "description": "Info tip on lyrics provider priority page" + }, + "queueEmptyHistory": "Немає історії завантажень", + "optionsTitle": "Опції", + "@optionsTitle": { + "description": "Options settings page title" + }, + "dialogClear": "Очистити", + "@dialogClear": { + "description": "Dialog button - clear items" + }, + "downloadFilenameHintExample": "{artist} - {title}", + "@downloadFilenameHintExample": { + "description": "Example placeholder for the download filename format input" + }, + "allFilesAccessDescription": "Увімкніть цю опцію, якщо під час збереження у власні папки виникають помилки запису. Android 13+ за замовчуванням обмежує доступ до певних каталогів.", + "@allFilesAccessDescription": { + "description": "Description explaining when to enable all files access" + }, + "trackConvertConfirmTitle": "Підтвердити конверсію", + "storeCategoryLyrics": "Lyrics", + "@storeCategoryLyrics": { + "description": "Store extension category - lyrics" + }, + "collectionPlaylistDeleted": "Список відтворення видалено", + "metadataMayRateLimit": "Травневе обмеження ставок", + "@metadataMayRateLimit": { + "description": "Spotify provider description" + }, + "@lyricsProvidersDescription": { + "description": "Description on the lyrics provider priority page" + }, + "tooltipLoveAll": "Уподобати всіх", + "downloadDirectory": "Каталог завантажень", + "@downloadDirectory": { + "description": "Setting - download folder" + }, + "@tutorialExtensionsTip2": { + "description": "Tutorial extensions tip 2" + }, + "libraryFolder": "Папка бібліотеки", + "optionsMaxQualityCoverSubtitle": "Завантажити обкладинку з найвищою роздільною здатністю", + "@metadataProviderPriorityTitle": { + "description": "Metadata priority page title" + }, + "@cleanupOrphanedDownloadsResult": { + "description": "Snackbar after orphan cleanup", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "cacheExploreFeedDesc": "Переглянути вміст вкладки (нові випуски, тренди). Оновиться під час наступного відвідування.", + "@cacheExploreFeedDesc": { + "description": "Description of what explore feed cache contains" + }, + "a11yOpenTrackByArtist": "Open track {trackName} by {artistName}", + "@a11yOpenTrackByArtist": { + "description": "Accessibility label for opening a track item", + "placeholders": { + "trackName": { + "type": "String" + }, + "artistName": { + "type": "String" + } + } + }, + "announcementUnableToOpenLink": "Unable to open link. Please try again.", + "collectionNoPlaylistsSubtitle": "Створіть список відтворення, щоб розпочати категоризацію треків", + "@collectionNoPlaylistsSubtitle": { + "description": "Empty state subtitle when user has no playlists" + }, + "libraryFilterSortAlbumDesc": "Альбом (Я-А)", + "@libraryFilterSortAlbumDesc": { + "description": "Sort option - album descending" + }, + "trackConvertBitrate": "Бітрейт", + "@trackConvertBitrate": { + "description": "Label for bitrate selection" + }, + "audioAnalysisFileSize": "Розмір", + "extensionHealthServiceOnline": "Service online", + "@extensionHealthServiceOnline": { + "description": "Tooltip for online extension service" + }, + "logEntries": "Записи ({count})", + "@logEntries": { + "description": "Total log count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackConvertConfirmMessage": "Конвертувати з {sourceFormat} в {targetFormat} із бітрейтом {bitrate}?\n\nОригінальний файл буде видалено після конвертації.", + "@trackConvertConfirmMessage": { + "description": "Confirmation dialog message", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "bitrate": { + "type": "String" + } + } + }, + "@optionsArtistTagModeSplitVorbisSubtitle": { + "description": "Subtitle for split Vorbis artist tag mode" + }, + "folderOrganizationByAlbum": "За альбомом", + "@folderOrganizationByAlbum": { + "description": "Folder option - album folders" + }, + "libraryPlayback": "Playback", + "@storeFilterAll": { + "description": "Store filter - all extensions" + }, + "aboutApp": "Додаток", + "@aboutApp": { + "description": "Section for app info" + }, + "optionsReplayGainSubtitleOff": "Вимкнено: немає тегів нормалізації гучності", + "@optionsReplayGainSubtitleOff": { + "description": "Subtitle when ReplayGain is disabled" + }, + "@storeRepoDialogTitle": { + "description": "Title of the change/remove repository dialog" + }, + "settingsLyricsSubtitle": "Embed, mode, providers, language options", + "@settingsLyricsSubtitle": { + "description": "Subtitle for lyrics settings" + }, + "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", + "storeFilterIntegration": "Інтеграція", + "@storeFilterIntegration": { + "description": "Store filter - integrations" + }, + "@lyricsProvidersAtLeastOne": { + "description": "Snackbar when user tries to disable the last enabled provider" + }, + "@appearanceHistoryViewGrid": { + "description": "Grid layout option" + }, + "trackDownloaded": "Завантажено", + "extensionVerificationHelpMessageManual": "SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.", + "setupDownloadLocationIosMessage": "На iOS завантаження зберігаються в папці «Документи» програми. Ви можете отримати до них доступ через програму «Файли».", + "optionsArtistTagModeDescription": "Виберіть, як будуть записуватися кілька виконавців у вбудовані теги.", + "@optionsArtistTagModeDescription": { + "description": "Bottom-sheet description for artist tag mode setting" + }, + "@queueRetryAllFailed": { + "description": "Button to retry every failed download in the queue", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@trackConvertDitherTriangularHp": { + "description": "Lossless conversion high-pass triangular dither option" + }, + "@extensionVerificationCopyLink": { + "description": "Button to copy the extension verification URL" + }, + "searchSongs": "Пісні", + "@searchSongs": { + "description": "Search result category - songs" + }, + "@appearanceHistoryView": { + "description": "Layout style for history" + }, + "sectionFileSettings": "Налаштування файлу", + "@sectionFileSettings": { + "description": "Settings section header" + }, + "@cancelDownloadTitle": { + "description": "Dialog title when confirming cancellation of an active download" + }, + "@cacheLibraryCover": { + "description": "Cache item title for local library cover art images" + }, + "audioAnalysisSpectralCutoff": "Spectral Cutoff", + "dialogDelete": "Видалити", + "@dialogDelete": { + "description": "Dialog button - delete item" + }, + "tutorialLibraryDesc": "Вся завантажена музика організована на вкладці «Бібліотека».", + "@tutorialLibraryDesc": { + "description": "Tutorial library page description" + }, + "@queueDownloadSpeedStatus": { + "description": "Queue status while downloading with speed", + "placeholders": { + "speed": { + "type": "String" + } + } + }, + "@extensionsHomeFeedOffSubtitle": { + "description": "Extensions page - subtitle for off home feed option" + }, + "snackbarCredentialsSaved": "Облікові дані збережено", + "cacheCleanupResult": "Очищення завершено: {downloadCount} утрачених завантажень, {libraryCount} відсутніх записів бібліотеки", + "@cacheCleanupResult": { + "description": "Snackbar after unused data cleanup", + "placeholders": { + "downloadCount": { + "type": "int" + }, + "libraryCount": { + "type": "int" + } + } + }, + "trackConvertLosslessHint": "Lossless конвертація — без втрати якості", + "@trackConvertLosslessHint": { + "description": "Hint shown when converting between lossless formats" + }, + "collectionRenamePlaylist": "Перейменувати список відтворення", + "@collectionRenamePlaylist": { + "description": "Action to rename playlist" + }, + "@libraryFilterTitle": { + "description": "Filter bottom sheet title" + }, + "@storageModeAppFolder": { + "description": "Storage mode option - app-managed folder" + }, + "logTotalErrors": "Total errors: {count}", + "@logTotalErrors": { + "description": "Total error count in log issue analysis", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupStorageRequired": { + "description": "Title when storage permission needed" + }, + "@snackbarMetadataProviderSaved": { + "description": "Snackbar - metadata provider order saved" + }, + "@selectionBatchConvertConfirmTitle": { + "description": "Confirmation dialog title for batch conversion" + }, + "extensionsHomeFeedAutoSubtitle": "Автоматично вибирати найкращий доступний", + "@extensionsHomeFeedAutoSubtitle": { + "description": "Extensions page - subtitle for auto home feed option" + }, + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "settingsBackupSubtitle": "Move your library, history and settings to a new device", + "@settingsBackupSubtitle": { + "description": "Subtitle for backup and restore settings item" + }, + "recentTypeArtist": "Артист", + "@recentTypeArtist": { + "description": "Recent access item type - artist" + }, + "collectionPlaylistEmptySubtitle": "Тривале натискання + на будь-якій доріжці додасть її сюди", + "artistCompilations": "Збірники", + "@artistCompilations": { + "description": "Section header for compilations" + }, + "snackbarFolderPickerFailed": "Не вдалося відкрити засіб вибору папок: {error}", + "@snackbarFolderPickerFailed": { + "description": "Snackbar shown when folder picker fails to open", + "placeholders": { + "error": { + "type": "String" + } + } + }, + "@optionsDetailedLoggingOn": { + "description": "Status when logging enabled" + }, + "notifChannelLibraryScanName": "Сканування бібліотеки", + "@notifChannelLibraryScanName": { + "description": "Android notification channel name for library scan" + }, + "settingsSaveDownloadHistory": "Save download history", + "@settingsSaveDownloadHistory": { + "description": "Settings switch title for storing completed downloads in history" + }, + "@storeCategoryIntegration": { + "description": "Store extension category - integration" + }, + "a11yOpenItemCount": "Open {title}, {count} {count, plural, =1{item} other{items}}", + "@a11yOpenItemCount": { + "description": "Accessibility label for opening a grouped item with count", + "placeholders": { + "title": { + "type": "String" + }, + "count": { + "type": "int" + } + } + }, + "trackFileInfo": "Інформація про файл", + "@trackFileInfo": { + "description": "Tab title - file information" + }, + "libraryFilterMetadataMissingAlbumArtist": "Відсутній виконавець альбому", + "audioAnalysisNoClipping": "No clipping", + "tutorialSettingsDesc": "Персоналізуйте програму в налаштуваннях відповідно до ваших уподобань.", + "@tutorialSettingsDesc": { + "description": "Tutorial settings page description" + }, + "lyricsModeExternalSubtitle": "Окремий файл .lrc для плеєрів, таких як Samsung Music", + "@lyricsModeExternalSubtitle": { + "description": "Subtitle for external option" + }, + "extensionDefaultProviderSubtitle": "Use the default metadata search", + "@extensionDefaultProviderSubtitle": { + "description": "Subtitle for default provider" + }, + "trackLoadLyrics": "Завантажити текст пісні", + "@trackLoadLyrics": { + "description": "Action - fetch lyrics" + }, + "extensionVerificationHelpTitleWaiting": "Verification still waiting", + "@extensionVerificationHelpTitleWaiting": { + "description": "Dialog title when verification is taking longer than expected" + }, + "libraryFilterReset": "Скинути", + "@libraryFilterReset": { + "description": "Reset all filters button" + }, + "@downloadAlbumArtistMetadataFull": { + "description": "Status label when album-artist folder filtering uses full metadata" + }, + "storeTitle": "Репозиторій розширень", + "@storeTitle": { + "description": "Store screen title" + }, + "libraryCleared": "Бібліотека очищена", + "@libraryCleared": { + "description": "Snackbar after clearing library" + }, + "queueDownloadCompleted": "Download completed", + "@queueDownloadCompleted": { + "description": "Accessibility label for completed download state in queue" + }, + "libraryTitle": "Локальна бібліотека", + "@libraryTitle": { + "description": "Library settings page title" + }, + "downloadedAlbumAllSelected": "Усі треки вибрано", + "@downloadedAlbumAllSelected": { + "description": "Status - all items selected" + }, + "queueAlbumCount": "{count, plural, =1{1 альбом} other{{count} альбомів}}", + "@queueAlbumCount": { + "description": "Album count label with plural support", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "libraryClearConfirmTitle": "Очистити бібліотеку", + "@backupExportSectionTitle": { + "description": "Section title for the export/backup card" + }, + "dialogClearAll": "Очистити все", + "@dialogClearAll": { + "description": "Dialog title - clear all items" + }, + "extensionsAuthor": "від {author}", + "@extensionsAuthor": { + "description": "Extension author credit", + "placeholders": { + "author": { + "type": "String" + } + } + }, + "tutorialExtensionsDesc": "Розширте можливості програми за допомогою розширень спільноти.", + "@tutorialExtensionsDesc": { + "description": "Tutorial extensions page description" + }, + "libraryExternalPlayer": "External player", + "@libraryExternalPlayer": { + "description": "Setting option to use an external music player" + }, + "editMetadataFieldGenre": "Жанр", + "@tutorialLibraryTitle": { + "description": "Tutorial library page title" + }, + "folderOrganizationByPlaylist": "За списком відтворення", + "@optionsSwitchBack": { + "description": "Hint to switch back from extension search" + }, + "queueTrackCount": "{count, plural, =1{1 трек} other{{count} треків}}", + "@searchSortTitle": { + "description": "Bottom sheet title for search sort options" + }, + "editMetadataSelectNone": "None", + "@historyFilterSingles": { + "description": "Filter chip - show singles only" + }, + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "trackSaveCoverArt": "Зберегти обкладинку", + "@trackSaveCoverArt": { + "description": "Menu action - save album cover art as file" + }, + "@downloadAlbumFolderStructure": { + "description": "Setting - album folder organization" + }, + "lyricsProvidersAtLeastOne": "Принаймні один постачальник має залишатися ввімкненим", + "@notifDownloadCompleteCount": { + "description": "Notification title when download is complete, with count", + "placeholders": { + "completed": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, + "setupUseDefault": "Використовувати за замовчуванням", + "@setupUseDefault": { + "description": "Button to use default folder" + }, + "logNoLogsYetSubtitle": "Журнали відображатимуться тут під час використання програми", + "@logNoLogsYetSubtitle": { + "description": "Empty state subtitle" + }, + "@dateToday": { + "description": "Relative date - today" + }, + "trackSaveLyricsProgress": "Збереження тексту пісні...", + "@trackSaveLyricsProgress": { + "description": "Snackbar while saving lyrics to file" + }, + "trackCoverSaved": "Обкладинку збережено до {fileName}", + "@trackCoverSaved": { + "description": "Snackbar after cover art saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "trackReEnrichFieldLyrics": "Тексти пісень", + "@audioAnalysisRescan": { + "description": "Tooltip/label for the button that re-runs the audio analysis, discarding cached results" + }, + "@downloadNeteaseIncludeRomanizationEnabled": { + "description": "Subtitle when Netease romanization is on" + }, + "dialogDisableAndClear": "Turn off and clear", + "extensionHealthChecksConfigured": "{count} {count, plural, =1{check} other{checks}} configured", + "cleanupOrphanedDownloadsSubtitle": "Видалити записи історії для файлів, яких більше не існує", + "@notifLibraryScanProgressWithTotal": { + "description": "Notification body for library scan progress when total is known", + "placeholders": { + "scanned": { + "type": "int" + }, + "total": { + "type": "int" + }, + "percentage": { + "type": "int" + } + } + }, + "@qualityNote": { + "description": "Note about quality availability" + }, + "@extensionDetailsTags": { + "description": "Section title for extension tags" + }, + "notifChannelDownloadName": "Прогрес завантаження", + "@notifChannelDownloadName": { + "description": "Android notification channel name for download progress" + }, + "@albumFolderAlbumOnlySubtitle": { + "description": "Folder structure example" + }, + "@audioAnalysisAnalyzing": { + "description": "Loading text while analyzing audio" + }, + "@settingsDonate": { + "description": "Settings menu item - donate page" + }, + "@collectionPlaylistNameRequired": { + "description": "Validation error for empty playlist name" + }, + "@backupImportSectionDescription": { + "description": "Description for the restore action" + }, + "storeFilterLyrics": "Тексти пісень", + "libraryAutoScan": "Автоматичне сканування", + "@libraryAutoScan": { + "description": "Setting for automatic library scanning" + }, + "safMigrationMessage1": "SpotiFLAC тепер використовує Android Storage Access Framework (SAF) для завантажень. Це виправляє помилки «відмовлено в доступі» на Android 10+.", + "@safMigrationMessage1": { + "description": "First paragraph of SAF migration dialog" + }, + "setupStorageRequired": "Потрібен дозвіл на збереження файлів", + "@notifLibraryScanErrors": { + "description": "Library scan complete suffix - error count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "appearanceHistoryViewGrid": "Сітка", + "trackConvertConverting": "Конвертування аудіо...", + "@trackConvertConverting": { + "description": "Snackbar while converting" + }, + "@setupUseDefaultFolder": { + "description": "Dialog title for default folder" + }, + "optionsArtistTagModeSplitVorbisSubtitle": "Для FLAC та Opus на кожного виконавця додати окремий тег виконавця; MP3 та M4A залишаються об’єднаними.", + "snackbarPlayingNext": "Playing next", + "@snackbarPlayingNext": { + "description": "Snackbar when a track is inserted as the next queue item" + }, + "optionsDefaultSearchTabSubtitle": "Виберіть, яка вкладка відкриється першою для нових результатів пошуку.", + "@editMetadataAutoFillFetch": { + "description": "Button label to fetch online metadata and fill selected fields" + }, + "tutorialSearchDesc": "Існує два простих способи знайти музику, яку ви хочете завантажити.", + "@sectionService": { + "description": "Settings section header" + }, + "notifUpdateProgress": "{received} / {total} МБ • {percentage}%", + "@discographyDownloadSelected": { + "description": "Button - download selected albums" + }, + "cacheClearAllConfirmMessage": "Це очистить усі категорії кешу на цій сторінці. Завантажені музичні файли не будуть видалені.", + "@cacheClearAllConfirmMessage": { + "description": "Dialog message before clearing all caches" + }, + "extensionsHomeFeedProvider": "Постачальник оновлень домашньої стрічки", + "@extensionsHomeFeedProvider": { + "description": "Extensions page - label for home feed provider selector" + }, + "@cacheExploreFeed": { + "description": "Cache item title for explore home feed cache" + }, + "@audioAnalysisDynamicRange": { + "description": "Dynamic range metric label" + }, + "unknownAlbum": "Unknown Album", + "trackCoverCurrent": "Current cover", + "downloadSongLinkRegionDesc": "Region used when resolving track links via SongLink. Choose the country where your streaming services are available.", + "downloadPrimaryArtistOnlyOff": "Primary only: Off", + "dialogDone": "Готово", + "@dialogDone": { + "description": "Dialog button - action completed" + }, + "storeRepoUrlLabel": "URL-адреса репозиторію", + "downloadSelectServiceToEnable": "Select a provider with quality options to enable this option", + "@logIssueRateLimitedSuggestion": { + "description": "Diagnostic badge suggestion for rate limiting" + }, + "libraryScanProgress": "{progress}% від {total} файлів", + "@libraryScanProgress": { + "description": "Scan progress display", + "placeholders": { + "progress": { + "type": "String" + }, + "total": { + "type": "int" + } + } + }, + "collectionLovedEmptyTitle": "Папка \"Улюблені\" порожня", + "tutorialExtensionsTitle": "Розширення", + "@tutorialExtensionsTitle": { + "description": "Tutorial extensions page title" + }, + "searchSortDurationShort": "Тривалість (найкоротша)", + "@searchSortDurationShort": { + "description": "Sort option - shortest duration first" + }, + "trackCopyFilePath": "Копіювати шлях до файлу", + "@trackCopyFilePath": { + "description": "Action - copy file path" + }, + "albumFolderArtistAlbumFlatSubtitle": "Виконавець/Альбом/ та Виконавець/пісня.flac", + "@trackConvertResampler": { + "description": "Section label for lossless conversion resampler options" + }, + "editMetadataFieldTrackNum": "Номер треку", + "@editMetadataFieldTrackNum": { + "description": "Chip label for track number field in auto-fill selector" + }, + "snackbarFailedToUpdate": "Не вдалося оновити розширення", + "@snackbarFailedToUpdate": { + "description": "Snackbar - extension update error" + }, + "notifAlreadyInLibrary": "Вже в бібліотеці", + "@notifAlreadyInLibrary": { + "description": "Notification title when track is already in library" + }, + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "collectionPlaylistNameHint": "Назва списку відтворення", + "extensionVerificationCopyLink": "Copy link", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "setupLanguageTitle": "Choose Language", + "extensionId": "Ідентифікатор", + "@extensionId": { + "description": "Extension detail - unique ID" + }, + "regionCountryBR": "Brazil", + "@updateNewVersionReady": { + "description": "Update subtitle" + }, + "@queueDownloadedFileMissing": { + "description": "Accessibility label when a downloaded file is missing from disk" + }, + "optionsSpotifyDeprecationWarning": "Пошук Spotify буде припинено 3 березня 2026 року через зміни в API Spotify. Будь ласка, перейдіть на Deezer.", + "@optionsSpotifyDeprecationWarning": { + "description": "Warning about Spotify API deprecation" + }, + "@lyricsMode": { + "description": "Setting - how to save lyrics" + }, + "@settingsAppearance": { + "description": "Settings section - visual customization" + }, + "@setupStorageAccessMessageAndroid11": { + "description": "Android 11+ specific explanation" + }, + "@tutorialLibraryTip3": { + "description": "Tutorial library tip 3" + }, + "@downloadAppleQqMultiPersonDisabled": { + "description": "Subtitle when multi-person lyrics is off" + }, + "libraryStorageAccessMessage": "SpotiFLAC потрібен доступ до сховища для сканування вашої музичної бібліотеки. Надайте дозвіл у налаштуваннях.", + "@libraryStorageAccessMessage": { + "description": "Dialog message for storage permission" + }, + "@tutorialLibraryTip1": { + "description": "Tutorial library tip 1" + }, + "dialogRemoveExtensionMessage": "Ви впевнені, що хочете видалити це розширення? Цю дію неможливо скасувати.", + "@dialogRemoveExtensionMessage": { + "description": "Dialog message - uninstall confirmation" + }, + "setupDownloadLocationTitle": "Розташування завантаження", + "@setupDownloadLocationTitle": { + "description": "Download location dialog title" + }, + "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", + "@downloadNetworkCompatibilityModeEnabled": { + "description": "Subtitle when network compatibility mode is on" + }, + "@credentialsDescription": { + "description": "Credentials dialog explanation" + }, + "@audioAnalysisBitDepth": { + "description": "Bit depth metric label" + }, + "trackOptionAddToLoved": "Додати до улюблених", + "@trackOptionAddToLoved": { + "description": "Bottom sheet action label - add track to loved folder" + }, + "cacheAppDirectory": "Каталог кешу додатка", + "@cacheAppDirectory": { + "description": "Cache item title for app cache directory" + }, + "lyricsProviderMusixmatchDesc": "Найбільша база даних текстів пісень (багатомовна)", + "@navStore": { + "description": "Bottom navigation - Extension store tab" + }, + "extensionPostProcessing": "Післяобробка", + "@searchTracks": { + "description": "Search filter label - tracks" + }, + "logCopied": "Журнали скопійовано в буфер обміну", + "@logCopied": { + "description": "Snackbar - logs copied" + }, + "@extensionHealthRequired": { + "description": "Label for a required extension service health check" + }, + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "clickableLookingUpArtist": "Looking up artist...", + "@clickableLookingUpArtist": { + "description": "Snackbar shown while clickable artist metadata is being resolved" + }, + "@extensionVerificationBrowserSubtitleInApp": { + "description": "Subtitle when in-app browser is preferred for extension verification" + }, + "setupUseDefaultFolder": "Використати папку за замовчуванням?", + "tutorialSearchHint": "Paste or search...", + "@logIssueTrackNotFoundLabel": { + "description": "Diagnostic badge label when a track is unavailable" + }, + "@storageModeAppFolderSubtitle": { + "description": "Subtitle for app folder storage mode" + }, + "downloadMusixmatchLanguage": "Мова Musixmatch", + "@downloadMusixmatchLanguage": { + "description": "Setting for Musixmatch lyrics translation language" + }, + "lyricsModeExternal": "Зовнішній файл .lrc", + "@setupSelectFolder": { + "description": "Button to select folder" + }, + "logSearchHint": "Пошук журналів...", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "@settingsSaveDownloadHistorySubtitle": { + "description": "Settings switch subtitle for storing completed downloads in history" + }, + "credentialsClientId": "Ідентифікатор клієнта", + "@albumFolderArtistAlbumFlat": { + "description": "Album folder option with singles directly in artist folder" + }, + "extensionHealthRequired": "required", + "actionCancel": "Скасувати", + "@actionCancel": { + "description": "Action button - cancel operation" + }, + "optionsEmbedMetadataSubtitleOff": "Disabled (advanced): skip all metadata embedding", + "@optionsEmbedMetadataSubtitleOff": { + "description": "Subtitle when metadata embedding is disabled" + }, + "downloadAllowLocalNetworkDisabled": "Local/private addresses are blocked for security", + "@downloadAllowLocalNetworkDisabled": { + "description": "Subtitle when allow local network access is off" + }, + "@extensionsDownloadPrioritySubtitle": { + "description": "Subtitle for download priority" + }, + "downloadSingleFilenameFormat": "Формат імені одного файлу", + "@downloadSingleFilenameFormat": { + "description": "Setting for output filename pattern for singles/EPs" + }, + "cacheSummarySubtitle": "Очищення кешу не призведе до видалення завантажених музичних файлів.", + "@cacheSummarySubtitle": { + "description": "Helper text for cache summary card" + }, + "libraryFilterMetadataIncorrectIsrcFormat": "Incorrect ISRC format", + "libraryFilterMetadataMissingTrackNumber": "Missing track number", + "@libraryFilterMetadataMissingTrackNumber": { + "description": "Filter option - items missing track number" + }, + "backupIncludeSecretsDescription": "Tokens and API keys from extensions will be saved into the backup file. Keep the file private. When off, you re-enter them after restoring.", + "@backupIncludeSecretsDescription": { + "description": "Explanation for the include-credentials toggle" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, + "@extensionServiceStatus": { + "description": "Extension detail section header for service status" + }, + "queueEmptySingles": "Без окремих завантажень", + "@queueEmptySingles": { + "description": "Empty state title when no single track downloads exist" + }, + "@snackbarSelectedPlaylistsEmpty": { + "description": "Snackbar when selected playlists contain no tracks" + }, + "@errorRateLimited": { + "description": "Error title - too many requests" + }, + "setupDownloadInFlac": "Завантажити треки Spotify у форматі FLAC", + "@setupDownloadInFlac": { + "description": "App tagline in setup" + }, + "trackRemoveFromDevice": "Видалити з пристрою", + "@extensionsNoDownloadProvider": { + "description": "Empty state - no download providers" + }, + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "cacheSummaryTitle": "Огляд кешу", + "@cacheSummaryTitle": { + "description": "Heading for cache summary card" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@setupNotificationBackgroundDescription": { + "description": "Detailed notification explanation" + }, + "storeRepoUrlHelper": "наприклад https://github.com/user/extensions-repo", + "@storeRepoUrlHelper": { + "description": "Helper text below the repository URL input field" + }, + "safMigrationTitle": "Потрібне оновлення сховища", + "snackbarMetadataSaved": "Метадані успішно збережено", + "@snackbarMetadataSaved": { + "description": "Snackbar after successfully saving track metadata" + }, + "@backupContentsSettings": { + "description": "Backup contents row label for settings" + }, + "logClearLogsTitle": "Очистити Журнали", + "extensionsCustomSearch": "Користувацький пошук", + "@extensionsCustomSearch": { + "description": "Label for custom search provider" + }, + "@downloadFrom": { + "description": "Label - download source" + }, + "cacheSizeWithFiles": "{size} у {count} файлах", + "actionRemoveCredentials": "Видалити облікові дані", + "@actionRemoveCredentials": { + "description": "Action button - delete Spotify credentials" + }, + "selectionShareNoFiles": "Файлів для спільного доступу не знайдено", + "@selectionShareNoFiles": { + "description": "Snackbar when no selected files exist on disk" + }, + "snackbarAddedTracksToQueue": "Додано {count} треків до черги", + "downloadFilenameInsertTag": "Натисніть, щоб вставити тег:", + "@downloadFilenameInsertTag": { + "description": "Label above filename tag chips" + }, + "collectionRemovedFromFavoriteArtists": "\"{artistName}\" removed from Favorite Artists", + "@collectionRemovedFromFavoriteArtists": { + "description": "Snackbar after removing artist from favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "queueDownloadSpeedStatus": "Downloading - {speed} MB/s", + "backupRestoreConfirmButton": "Restore", + "@libraryCleanupMissingFiles": { + "description": "Button to remove entries for missing files" + }, + "backupCreateFailed": "Failed to create backup", + "notifLibraryScanFailed": "Не вдалося сканувати бібліотеку", + "@notifLibraryScanFailed": { + "description": "Notification title when library scan fails" + }, + "audioAnalysisRescan": "Re-analyze", + "@trackTrackName": { + "description": "Metadata label - track title" + }, + "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", + "@setupPermissionRequired": { + "description": "Generic permission required title", + "placeholders": { + "permissionType": { + "type": "String", + "description": "Type of permission (Storage/Notification)" + } + } + }, + "@nowPlayingNoLyrics": { + "description": "Empty state when the playing file has no embedded lyrics" + }, + "libraryFilesUnit": "{count, plural, =1{file} other{файлів}}", + "@libraryFilesUnit": { + "description": "Unit label for files count during library scanning", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionMetadataProvider": { + "description": "Capability - provides metadata" + }, + "@downloadFilterContributing": { + "description": "Setting to strip contributing artists from Album Artist folder name" + }, + "libraryScanSelectFolderFirst": "Спочатку виберіть папку", + "@sectionDownload": { + "description": "Settings section header" + }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "extensionHealthNotConfigured": "Not configured", + "queueRetryAllFailed": "Retry {count} failed", + "folderOrganizationByPlaylistSubtitle": "Окрема папка для кожного списку відтворення", + "@folderOrganizationByPlaylistSubtitle": { + "description": "Subtitle for playlist folder option" + }, + "lyricsProviderExtensionDesc": "Постачальник розширень", + "@libraryFilterQualityHiRes": { + "description": "Filter option - high resolution audio" + }, + "trackConvertTitle": "Конвертувати аудіо", + "@trackConvertTitle": { + "description": "Title of convert bottom sheet" + }, + "setupSkipForNow": "Пропустити поки що", + "sectionDownload": "Завантажити", + "downloadLossyOpus256Subtitle": "Opus найкращої якості, ~8 МБ на трек", + "@downloadLossyOpus256Subtitle": { + "description": "Subtitle for Opus 256kbps lossy option" + }, + "@trackConvertActionLabelLossless": { + "description": "Convert button label for lossless conversion with quality cap", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "storeRequiresVersion": "Requires v{version}+", + "@storeRequiresVersion": { + "description": "Store compatibility badge for minimum app version", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@collectionRemoved": { + "description": "Snackbar after removing a track from a collection", + "placeholders": { + "trackName": { + "type": "String" + } + } + }, + "metadataProviderPriorityDescription": "Перетягніть, щоб змінити порядок постачальників метаданих. Додаток шукатиме постачальників зверху вниз під час пошуку треків та отримання метаданих.", + "@notifUpdateFailed": { + "description": "Notification title when app update download fails" + }, + "extensionsInfoTip": "Розширення можуть додавати нові метадані та завантажувати постачальників. Встановлюйте розширення лише з перевірених джерел.", + "@extensionsInfoTip": { + "description": "Security warning about extensions" + }, + "@downloadAppleQqMultiPersonEnabled": { + "description": "Subtitle when multi-person lyrics is on" + }, + "libraryFilterMetadataMissingYear": "Відсутній рік", + "extensionsDownloadPriority": "Пріоритет завантаження", + "@extensionsDownloadPriority": { + "description": "Setting - download provider order" + }, + "@downloadAllowLocalNetworkEnabled": { + "description": "Subtitle when allow local network access is on" + }, + "libraryScan": "Сканувати бібліотеку", + "@libraryScan": { + "description": "Button to start library scan" + }, + "editMetadataFieldLabel": "Лейбл", + "@editMetadataFieldLabel": { + "description": "Chip label for label field in auto-fill selector" + }, + "updateDownloadFailed": "Не вдалося завантажити", + "@updateDownloadFailed": { + "description": "Update error title" + }, + "appearanceAmoledDarkSubtitle": "Чисто чорний фон", + "@appearanceAmoledDarkSubtitle": { + "description": "Subtitle for AMOLED dark" + }, + "notifChannelDownloadDesc": "Показує прогрес завантаження треків", + "setupIcloudNotSupported": "iCloud Drive не підтримується. Будь ласка, скористайтеся папкою «Документи» програми.", + "trackLyricsEmbeddedSource": "Embedded", + "@trackLyricsEmbeddedSource": { + "description": "Lyrics source label for embedded lyrics" + }, + "@trackAlbumArtist": { + "description": "Metadata label - album artist" + }, "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", "@extensionsInstallPartialSuccess": { "description": "Message when installing multiple extensions partially succeeds", @@ -4622,155 +4407,99 @@ } } }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", + "@extensionSettingsCount": { + "description": "Count of settings exposed by an extension quality option", "placeholders": { "count": { "type": "int" } } }, - "collectionFavoriteArtistsEmptyTitle": "No favorite artists yet", - "@collectionFavoriteArtistsEmptyTitle": { - "description": "Favorite artists empty state title" + "notifLibraryScanCancelled": "Сканування бібліотеки скасовано", + "@notifLibraryScanCancelled": { + "description": "Notification title when library scan is cancelled by the user" }, - "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", - "@collectionFavoriteArtistsEmptySubtitle": { - "description": "Favorite artists empty state subtitle" + "collectionPlaylistNameRequired": "Потрібно вказати назву списку відтворення", + "libraryCleanupMissingFiles": "Очищення відсутніх файлів", + "storeCategoryUtility": "Utility", + "@storeCategoryUtility": { + "description": "Store extension category - utility" }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" + "searchSortTitle": "Сортувати результати", + "@extensionVerificationBrowserExternal": { + "description": "Chip label for external browser verification mode" }, "audioAnalysisLufs": "LUFS", - "@audioAnalysisLufs": { - "description": "Integrated loudness metric label" + "@setupAllowAccessToManageFiles": { + "description": "Instruction for file access permission" }, - "audioAnalysisTruePeak": "True Peak", - "@audioAnalysisTruePeak": { - "description": "True peak metric label" + "extensionsErrorLoading": "Помилка завантаження розширення", + "@actionPaste": { + "description": "Generic action - paste from clipboard" }, - "audioAnalysisClipping": "Clipping", - "@audioAnalysisClipping": { - "description": "Clipping metric label" + "aboutFeatureRequestSubtitle": "Запропонувати нові функції для програми", + "@aboutFeatureRequestSubtitle": { + "description": "Subtitle for feature request" }, - "audioAnalysisNoClipping": "No clipping", - "@audioAnalysisNoClipping": { - "description": "Displayed when no clipped samples were detected" + "@aboutTitle": { + "description": "About page title" }, - "audioAnalysisSpectralCutoff": "Spectral Cutoff", - "@audioAnalysisSpectralCutoff": { - "description": "Estimated spectral cutoff metric label" + "@downloadNeteaseIncludeTranslation": { + "description": "Setting to include translated lyrics from Netease" }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" + "@actionGo": { + "description": "Generic action button label" }, - "extensionsHomeFeedOff": "Off", - "@extensionsHomeFeedOff": { - "description": "Extensions page - home feed provider option: off" + "regionCountryFR": "France", + "trackConvertResamplerSoxr": "SoXr", + "extensionUpdated": "Оновлено", + "@extensionUpdated": { + "description": "Extension detail - last update" }, - "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", - "@extensionsHomeFeedOffSubtitle": { - "description": "Extensions page - subtitle for off home feed option" + "downloadLossyFormat": "Формат із втратами", + "@downloadLossyFormat": { + "description": "Setting title to pick output format for lossy downloads" }, - "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", + "snackbarAlreadyInLibrary": "\"{trackName}\" вже є у вашій бібліотеці", + "@snackbarAlreadyInLibrary": { + "description": "Snackbar - track already exists in local library", "placeholders": { - "completed": { - "type": "int" - }, - "failed": { - "type": "int" + "trackName": { + "type": "String" } } }, - "notifDownloadsCanceledTitle": "Downloads canceled", - "@notifDownloadsCanceledTitle": { - "description": "Notification title when downloads are canceled by the user" + "libraryExternalPlayerSubtitle": "Recommended for listening, best quality, gapless playback, EQ, and wider format support", + "extensionCustomUrlHandlingShareHint": "Share links from these sites to SpotiFLAC Mobile and this extension will handle them.", + "libraryFilterQuality": "Якість", + "@libraryFilterQuality": { + "description": "Filter section - audio quality" }, - "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", + "editMetadataAutoFillDone": "Заповнено {count} {count, plural, =1{поле} other{полей}} з онлайн-метаданих", + "@editMetadataAutoFillDone": { + "description": "Snackbar confirming how many fields were auto-filled", "placeholders": { "count": { "type": "int" } } }, - "searchTracks": "Tracks", - "@searchTracks": { - "description": "Search filter label - tracks" + "@discographyDownload": { + "description": "Button - download artist discography" }, - "homeSearchHintDefault": "Paste supported URL or search...", - "@homeSearchHintDefault": { - "description": "Default placeholder for the main search field on Home" + "trackReEnrichFieldsTitle": "Поля для оновлення", + "aboutFeatureRequest": "Запит на функцію", + "downloadSingleFilenameFormatDescription": "Шаблон назви файлу для синглів та міні-альбомів. Використовує ті самі теги, що й формат альбому.", + "@downloadSingleFilenameFormatDescription": { + "description": "Subtitle description for single filename format setting" }, - "homeSearchHintProvider": "Search with {providerName}...", - "@homeSearchHintProvider": { - "description": "Placeholder for the main search field when a provider is selected", + "queueClearAllMessage": "Ви впевнені, що хочете очистити всі завантаження?", + "dialogDisableHistoryMessage": "Existing history will be cleared. Downloaded files will not be deleted.", + "extensionLastChecked": "Last checked {time}", + "@extensionLastChecked": { + "description": "Timestamp for the latest extension service health check", "placeholders": { - "providerName": { + "time": { "type": "String" } } @@ -4779,253 +4508,519 @@ "@homeImportCsvTooltip": { "description": "Tooltip for importing a CSV file into Home search" }, - "homeChangeSearchProviderTooltip": "Change search provider", - "@homeChangeSearchProviderTooltip": { - "description": "Tooltip for the Home search provider picker" + "trackConvertResamplerSwr": "SWR", + "@trackConvertResamplerSwr": { + "description": "Lossless conversion default FFmpeg swresample resampler option" }, - "actionPaste": "Paste", - "@actionPaste": { - "description": "Generic action - paste from clipboard" + "@downloadFolderOrganization": { + "description": "Title of the folder organization picker bottom sheet" }, - "searchTracksHint": "Search tracks...", - "@searchTracksHint": { - "description": "Placeholder for the search screen input" - }, - "searchTracksEmptyPrompt": "Search for tracks", - "@searchTracksEmptyPrompt": { - "description": "Empty-state prompt on the search screen" - }, - "tutorialSearchHint": "Paste or search...", - "@tutorialSearchHint": { - "description": "Placeholder shown in the tutorial search demo" - }, - "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" - }, - "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", - "@optionsMaxQualityCoverSubtitleDisabled": { - "description": "Subtitle for max quality cover when metadata embedding is disabled" - }, - "downloadFilenameHintExample": "{artist} - {title}", - "@downloadFilenameHintExample": { - "description": "Example placeholder for the download filename format input" - }, - "trackCoverNoEmbeddedArt": "No embedded album art found", - "@trackCoverNoEmbeddedArt": { - "description": "Message shown when a track file has no embedded cover art" - }, - "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" - }, - "actionStop": "Stop", - "@actionStop": { - "description": "Generic action - stop" - }, - "queueFinalizingDownload": "Finalizing download", - "@queueFinalizingDownload": { - "description": "Accessibility label for a queue item that is finalizing" - }, - "queueDownloadedFileMissing": "Downloaded file missing", - "@queueDownloadedFileMissing": { - "description": "Accessibility label when a downloaded file is missing from disk" - }, - "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", + "dialogClearHistoryTitle": "Очистити історію", "@logClearSearch": { "description": "Tooltip for clearing the log search field" }, - "logIssueIspBlockingLabel": "ISP BLOCKING DETECTED", - "@logIssueIspBlockingLabel": { - "description": "Diagnostic badge label when ISP blocking is detected" + "dialogImport": "Імпорт", + "@dialogImport": { + "description": "Dialog button - import data" }, - "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", - "@logIssueIspBlockingDescription": { - "description": "Diagnostic badge description for ISP blocking" + "@setupChangeFolderTooltip": { + "description": "Tooltip for editing the selected download folder" }, - "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" + "notifLibraryScanErrors": "{count} помилок", + "@downloadNetworkCompatibilityMode": { + "description": "Setting for legacy TLS/network handling" }, + "@metadataSaveFailedFfmpeg": { + "description": "Snackbar error when FFmpeg fails to write metadata" + }, + "dialogUninstallExtension": "Видалити розширення?", + "recentTypePlaylist": "Список відтворення", + "@recentTypePlaylist": { + "description": "Recent access item type - playlist" + }, + "trackDeleteConfirmMessage": "Це назавжди видалить завантажений файл і вилучить його з вашої історії.", + "@logIssueNetworkErrorDescription": { + "description": "Diagnostic badge description for generic network errors" + }, + "appearanceThemeSystem": "Системний", + "@appearanceThemeSystem": { + "description": "Follow system theme" + }, + "albumFolderArtistAlbumSingles": "Виконавець / Альбом + Сингли", + "@aboutTranslators": { + "description": "Section for translators" + }, + "shareSheetNotFound": "Not found", + "@shareSheetNotFound": { + "description": "Cross-service share sheet row subtitle when a service has no match" + }, + "@tutorialDownloadInProgressSemantics": { + "description": "Accessibility label for active download state in tutorial demo" + }, + "editMetadataAutoFillNoneSelected": "Виберіть принаймні одне поле для автоматичного заповнення", + "@editMetadataAutoFillNoneSelected": { + "description": "Snackbar when user taps Fetch without selecting any fields" + }, + "@snackbarViewQueue": { + "description": "Snackbar action - view download queue" + }, + "@optionsUpdateChannelPreview": { + "description": "Include beta/preview updates" + }, + "editMetadataFieldComposer": "Composer", + "@editMetadataFieldComposer": { + "description": "Label for composer field in the edit metadata sheet" + }, + "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "@aboutSachinsenalDesc": { + "description": "Credit description for sachinsenal0x64" + }, + "backupTitle": "Backup & Restore", + "@libraryFilterMetadata": { + "description": "Filter section - metadata completeness" + }, + "setupStorageAccessRequired": "Потрібен доступ до сховища", + "@setupStorageAccessRequired": { + "description": "Title when storage access needed" + }, + "trackMetadataDelete": "Видалити", + "@trackMetadataDelete": { + "description": "Action button - delete track" + }, + "libraryFilterMetadataMissingDiscNumber": "Missing disc number", + "@libraryFilterMetadataMissingDiscNumber": { + "description": "Filter option - items missing disc number" + }, + "snackbarMetadataProviderSaved": "Пріоритет постачальника метаданих збережено", + "setupPermissionRequired": "{permissionType} Потрібен дозвіл", + "backupRestoring": "Restoring backup...", + "@selectionConvertNoConvertible": { + "description": "Snackbar when no selected tracks support conversion" + }, + "extensionHealthDegraded": "Degraded", + "regionCountryKR": "South Korea", + "@regionCountryKR": { + "description": "Country name for SongLink region picker" + }, + "trackLyricsNotInFile": "У цьому файлі не знайдено текстів пісень", + "@trackLyricsNotInFile": { + "description": "Message when no embedded lyrics in audio file" + }, + "optionsSpotifyCredentials": "Облікові дані Spotify", + "@optionsSpotifyCredentials": { + "description": "Spotify API credentials setting" + }, + "@downloadedAlbumTapToSelect": { + "description": "Selection hint" + }, + "downloadArtistNameFilters": "Фільтри імені виконавця", + "@downloadArtistNameFilters": { + "description": "Setting title for artist folder filter options" + }, + "@libraryFilterMetadataMissingArtist": { + "description": "Filter option - items missing artist" + }, + "recentShowAllDownloads": "Показати всі завантаження", + "@appearanceThemeLight": { + "description": "Light theme" + }, + "trackReEnrichFieldTrackInfo": "Номер треку та диска", + "@appearanceThemeDark": { + "description": "Dark theme" + }, + "extensionVerificationLinkCopied": "Verification link copied", + "@extensionVerificationLinkCopied": { + "description": "Snackbar after copying the extension verification URL" + }, + "@extensionsHomeFeedDescription": { + "description": "Extensions page - description for home feed provider picker" + }, + "downloadAlbumArtistMetadataPrimaryOnly": "Album Artist metadata: Primary only", + "@downloadAlbumArtistMetadataPrimaryOnly": { + "description": "Status label when album-artist folder filtering uses primary artist only" + }, + "extensionOauthConnectHint": "Tap Connect to Spotify to fill this field.", + "setupNext": "Далі", + "extensionVerificationBrowserSubtitleInApp": "Open challenges in the in-app browser first", + "libraryAutoScanDaily": "Щоденно", + "@libraryAutoScanDaily": { + "description": "Auto scan once per day" + }, + "@audioAnalysisDescription": { + "description": "Description for audio analysis tap-to-analyze prompt" + }, + "nowPlayingUpNext": "Up next", + "@nowPlayingUpNext": { + "description": "Title for the playback queue sheet" + }, + "logAutoScrollOff": "Auto-scroll OFF", + "trackConvertFailed": "Конвертація не вдалася", + "@trackConvertFailed": { + "description": "Snackbar when conversion fails" + }, + "extensionsUninstall": "Видалити", + "safMigrationSuccess": "Папку завантажень оновлено до режиму SAF", + "optionsClearHistorySubtitle": "Видалити всі завантажені треки з історії", + "@optionsClearHistorySubtitle": { + "description": "Subtitle for clear history" + }, + "trackPlayNext": "Play next", + "extensionsNoHomeFeedExtensions": "Без розширень із домашньою стрічкою", + "optionsUpdateChannelStable": "Тільки стабільні релізи", + "@optionsUpdateChannelStable": { + "description": "Only stable updates" + }, + "@discographyDownloadAllSubtitle": { + "description": "Subtitle showing total tracks and albums", + "placeholders": { + "count": { + "type": "int" + }, + "albumCount": { + "type": "int" + } + } + }, + "searchPlaylists": "Списки відтворення", + "@searchPlaylists": { + "description": "Search result category - playlists" + }, + "downloadNetworkCompatibilityMode": "Network Compatibility Mode", + "settingsAppearance": "Зовнішній вигляд", "logIssueRateLimitedLabel": "RATE LIMITED", "@logIssueRateLimitedLabel": { "description": "Diagnostic badge label when the service rate limits requests" }, - "logIssueRateLimitedDescription": "Too many requests to the service", - "@logIssueRateLimitedDescription": { - "description": "Diagnostic badge description for rate limiting" + "logIssueSummary": "Issue Summary", + "@logIssueSummary": { + "description": "Header for log issue analysis summary" }, - "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", - "@logIssueRateLimitedSuggestion": { - "description": "Diagnostic badge suggestion for rate limiting" + "appName": "SpotiFLAC Mobile", + "storeRepoDialogCurrent": "Поточний репозиторій:", + "@optionsExtensionStoreSubtitle": { + "description": "Subtitle for extension store toggle" }, - "logIssueNetworkErrorLabel": "NETWORK ERROR", - "@logIssueNetworkErrorLabel": { - "description": "Diagnostic badge label for generic network errors" + "@trackLyrics": { + "description": "Tab title - lyrics" }, - "logIssueNetworkErrorDescription": "Connection issues detected", - "@logIssueNetworkErrorDescription": { - "description": "Diagnostic badge description for generic network errors" + "@backupImportButton": { + "description": "Button to pick a backup file to restore" }, - "logIssueNetworkErrorSuggestion": "Check your internet connection", - "@logIssueNetworkErrorSuggestion": { - "description": "Diagnostic badge suggestion for generic network errors" + "@setupFolderChoose": { + "description": "Button to choose folder" }, - "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", - "@logIssueTrackNotFoundLabel": { - "description": "Diagnostic badge label when a track is unavailable" + "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", + "@extensionsDisabled": { + "description": "Extension status - inactive" }, - "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", - "@logIssueTrackNotFoundDescription": { - "description": "Diagnostic badge description when a track is unavailable" + "@regionCountryAU": { + "description": "Country name for SongLink region picker" }, - "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", - "@logIssueTrackNotFoundSuggestion": { - "description": "Diagnostic badge suggestion when a track is unavailable" + "@storeCategoryMetadata": { + "description": "Store extension category - metadata" }, - "clickableLookingUpArtist": "Looking up artist...", - "@clickableLookingUpArtist": { - "description": "Snackbar shown while clickable artist metadata is being resolved" + "libraryFilterApply": "Застосувати", + "@libraryFilterApply": { + "description": "Apply filters button" }, - "clickableInformationUnavailable": "{type} information not available", - "@clickableInformationUnavailable": { - "description": "Snackbar shown when clickable metadata cannot open a destination", + "@libraryFilterSortGenreAsc": { + "description": "Sort option - genre ascending" + }, + "setupAllowAccessToManageFiles": "Будь ласка, увімкніть опцію «Дозволити доступ для керування всіма файлами» на наступному екрані.", + "@dialogSave": { + "description": "Dialog button - save changes" + }, + "trackLyrics": "Тексти пісень", + "extensionSettingNotSet": "Not set", + "@extensionSettingNotSet": { + "description": "Value shown when an extension setting has no value" + }, + "@audioAnalysisClipping": { + "description": "Clipping metric label" + }, + "downloadNeteaseIncludeTranslation": "Netease: Включити переклад", + "@albumFolderArtistAlbumSubtitle": { + "description": "Folder structure example" + }, + "@settingsDonateSubtitle": { + "description": "Subtitle for donate menu item" + }, + "cueSplitSuccess": "Розділено на {count} треків успішно", + "@cueSplitSuccess": { + "description": "Snackbar after successful CUE split", "placeholders": { - "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", + "cueSplitArtist": "Артист: {artist}", + "@cueSplitArtist": { + "description": "Artist name in CUE split sheet", + "placeholders": { + "artist": { + "type": "String" + } + } + }, + "updateSeeReleaseNotes": "See release notes for details.", + "@updateSeeReleaseNotes": { + "description": "Fallback changelog text when release notes cannot be parsed" + }, + "@trackReEnrichFfmpegFailed": { + "description": "Snackbar when FFmpeg embed fails for MP3/Opus" + }, + "collectionWishlist": "Список бажань", + "@collectionWishlist": { + "description": "Custom folder for saved tracks to download later" + }, + "editMetadataAutoFillFetch": "Отримання та заповнення", + "@extensionsHomeFeedAuto": { + "description": "Label for auto-selected search provider" + }, + "providerPriorityDescription": "Перетягніть, щоб змінити порядок постачальників завантажень. Під час завантаження треків програма використовуватиме постачальників зверху вниз.", + "@providerPriorityDescription": { + "description": "Provider priority page description" + }, + "queueEmptySinglesSubtitle": "Завантаження окремих треків з’являться тут", + "downloadLossyOpus128": "Opus 128 кбіт/с", + "downloadUseAlbumArtistForFolders": "Використовувати виконавця альбому для папок", + "@downloadUseAlbumArtistForFolders": { + "description": "Setting - choose whether artist folders use Album Artist or Track Artist" + }, + "@aboutLinks": { + "description": "Section for external links" + }, + "downloadedAlbumDeleteCount": "Видалити {count} {count, plural, =1{трек} other{треків}}", + "updateLater": "Пізніше", + "@logIssueIspBlockingSuggestion": { + "description": "Diagnostic badge suggestion for ISP blocking" + }, + "actionResume": "Відновити", + "optionsDetailedLoggingOff": "Увімкнути для звітів про помилки", + "@searchSortDefault": { + "description": "Sort option - default API order" + }, + "@regionCountryCA": { + "description": "Country name for SongLink region picker" + }, + "@sectionStorageAccess": { + "description": "Section header for storage access settings" + }, + "downloadFilterContributing": "Filter Contributing Artists", + "downloadUseAlbumArtistForFoldersTrackSubtitle": "Folder named after Track Artist tag", + "storeSearch": "Розширення пошуку...", + "@storeSearch": { + "description": "Store search placeholder" + }, + "aboutTelegramChat": "Telegram Спільнота", + "lyricsModeBoth": "Обидва", + "@lyricsModeBoth": { + "description": "Lyrics mode option - embed and external" + }, + "@permissionNotification": { + "description": "Notification permission type label" + }, + "libraryAutoScanSubtitle": "Автоматичне сканування бібліотеки на наявність нових файлів", + "@libraryAutoScanSubtitle": { + "description": "Subtitle for auto scan setting" + }, + "libraryEnableLocalLibrary": "Увімкнути локальну бібліотеку", + "queueFlacFindingProgress": "Пошук FLAC-збігів... ({current}/{total})", + "trackConvertTargetFormat": "Цільовий формат", + "@trackConvertTargetFormat": { + "description": "Label for format selection" + }, + "extensionSettings": "Налаштування", + "@editMetadataAutoFillSearching": { + "description": "Snackbar shown while searching for online metadata" + }, + "trackLyricsTimeout": "Час очікування запиту минув. Спробуйте ще раз пізніше.", + "settingsExtensions": "Розширення", + "@settingsBackup": { + "description": "Settings menu item - backup and restore page" + }, + "librarySourceDownloaded": "Завантажені", + "@librarySourceDownloaded": { + "description": "Badge for tracks downloaded via SpotiFLAC" + }, + "appearanceDynamicColor": "Динамічний колір", + "@appearanceDynamicColor": { + "description": "Material You dynamic colors" + }, + "backupImportButton": "Choose backup file", + "downloadAppleElrcWordSyncDisabled": "Safer line-by-line Apple Music lyrics", + "credentialsTitle": "Облікові дані Spotify", + "@optionsEmbedMetadata": { + "description": "Settings toggle title for writing metadata into downloaded files" + }, + "appearanceTitle": "Зовнішній вигляд", + "downloadNeteaseIncludeRomanizationDisabled": "No romanization", + "@downloadNeteaseIncludeRomanizationDisabled": { + "description": "Subtitle when Netease romanization is off" + }, + "@libraryScanCancelled": { + "description": "Library scan status when a scan was cancelled" + }, + "tracksCount": "{count, plural, =1{1 трек} other{{count} треків}}", + "@snackbarFailedToUpdateNamed": { + "description": "Snackbar when extension update fails in the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + } + } + }, + "@extensionQualityOptions": { + "description": "Capability - quality selection" + }, + "logClearSearch": "Clear search", + "trackSaveLyrics": "Зберегти текст пісні (.lrc)", + "@trackReEnrichSearching": { + "description": "Snackbar while searching metadata from internet for local items" + }, + "@editMetadataAutoFillNoResults": { + "description": "Snackbar when online metadata search returns no results" + }, + "notifDownloadComplete": "Завантаження завершено", + "snackbarAlreadyDownloaded": "\"{trackName}\" вже завантажено", + "@collectionPlaylistCreated": { + "description": "Snackbar after creating playlist" + }, + "folderOrganizationByAlbumSubtitle": "Окрема папка для кожного альбому", + "storeRepoUrlHint": "https://github.com/user/repo", + "trackConvertDitherTriangularHp": "Triangular HP", + "searchTracksEmptyPrompt": "Search for tracks", + "@searchTracksEmptyPrompt": { + "description": "Empty-state prompt on the search screen" + }, + "lyricsModeBothSubtitle": "Вбудувати та зберегти файл .lrc", + "trackReEnrichFieldExtra": "Жанр, Лейбл, Авторське право", + "@trackReEnrichFieldExtra": { + "description": "Checkbox label for extra metadata in re-enrich" + }, + "sectionLyrics": "Тексти пісень", + "@sectionLyrics": { + "description": "Settings section header" + }, + "extensionStrategy": "Стратегія: {strategy}", + "@extensionStrategy": { + "description": "Track matching strategy name", + "placeholders": { + "strategy": { + "type": "String" + } + } + }, + "@downloadNativeWorker": { + "description": "Setting title for Android native download worker" + }, + "optionsArtistTagModeSplitVorbis": "Розділені теги для FLAC/Opus", + "extensionsHomeFeedUse": "Використовувати {extensionName} головну стрічку", + "@cacheAppDirectoryDesc": { + "description": "Description of what app cache directory contains" + }, + "cancelDownloadTitle": "Скасувати завантаження?", + "updateWhatsNew": "Що нового", + "updateNewVersionReady": "Доступна нова версія", + "@extensionVerificationClose": { + "description": "Button to dismiss the extension verification help dialog" + }, + "a11ySelectTrack": "Select track", + "libraryClearSubtitle": "Видалити всі скановані треки", + "@libraryClearSubtitle": { + "description": "Subtitle for clear button" + }, + "@settingsDownloadNetworkSubtitle": { + "description": "Subtitle explaining network preference" + }, + "storeAnyVersion": "Any", + "@storeAnyVersion": { + "description": "Store detail value when any app version is accepted" + }, + "navStore": "Репозиторій", + "backupExportSectionDescription": "Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.", + "libraryScanSettings": "Налаштування сканування", + "@libraryScanSettings": { + "description": "Section header for scan settings" + }, + "trackDuration": "Тривалість", + "@trackDuration": { + "description": "Metadata label - track length" + }, + "searchTracksHint": "Search tracks...", + "@searchTracksHint": { + "description": "Placeholder for the search screen input" + }, + "extensionHealthOffline": "Offline", + "@extensionHealthOffline": { + "description": "Extension service health status - offline" + }, + "editMetadataFieldArtist": "Виконавець", + "@editMetadataFieldArtist": { + "description": "Chip label for artist field in auto-fill selector" + }, + "libraryInLibrary": "У бібліотеці", + "pressBackAgainToExit": "Натисніть кнопку «Назад» ще раз, щоб вийти", + "@pressBackAgainToExit": { + "description": "Exit confirmation message" + }, + "setupNotificationGranted": "Дозвіл на сповіщення надано!", + "@setupNotificationGranted": { + "description": "Success message for notification permission" + }, + "settingsDonate": "Support Development", + "snackbarFailedToUpdateNamed": "Failed to update {extensionName}", + "backupContentsTitle": "Backup contents", + "updateDontRemind": "Не нагадувати", + "@dialogDiscard": { + "description": "Dialog button - discard changes" + }, + "editMetadataAutoFillSearching": "Пошук в Інтернеті...", + "discographyDownloadSelected": "Завантажити вибране", + "trackConvertResampler": "Resampler", + "queueFilteringIndicator": "Фільтрування...", + "@queueFilteringIndicator": { + "description": "Shown while filter results are being computed" + }, + "optionsSwitchBack": "Choose the default search provider to switch back from an extension", + "@dialogDownloadAllTitle": { + "description": "Dialog title for bulk download confirmation" + }, + "cueSplitConfirmMessage": "Розділити \"{album}\" на {count} окремих FLAC-файлів?\n\nФайли будуть збережені в одному каталозі.", + "@downloadCreatePlaylistSourceFolderRedundant": { + "description": "Subtitle when folder organization is already set to playlist" + }, + "regionCountryCA": "Canada", + "cacheTempDirectory": "Тимчасовий каталог", + "@cacheTempDirectory": { + "description": "Cache item title for temporary files directory" + }, + "libraryShowDuplicateIndicator": "Показати індикатор дублікатів", + "@logFilterBySeverity": { + "description": "Filter dialog title" + }, + "homeSearchHintProvider": "Search with {providerName}...", + "@downloadNeteaseIncludeTranslationDisabled": { + "description": "Subtitle when Netease translation is off" + }, + "optionsCheckUpdates": "Перевірити наявність оновлень", + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "recentTypeAlbum": "Альбом", + "providerExtension": "Розширення", + "@providerExtension": { + "description": "Label for extension-provided providers" + }, + "@trackSaveCoverArtSubtitle": { + "description": "Subtitle for save cover art action" + }, + "trackCoverNoSource": "Джерело обкладинки недоступне", + "libraryFilterMetadata": "Метадані", + "albumFolderArtistYearAlbum": "Артист / [Рік] Альбом", + "@albumFolderArtistYearAlbum": { + "description": "Album folder option with year" + }, + "audioAnalysisClipping": "Clipping", "@a11yOpenAlbumByArtistTrackCount": { "description": "Accessibility label for opening an album item with track count", "placeholders": { @@ -5040,9 +5035,24 @@ } } }, - "a11yTrackByArtist": "{trackName} by {artistName}", - "@a11yTrackByArtist": { - "description": "Accessibility label for a queue or list track item", + "backupExtensionsRestoreFailed": "{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the store.", + "@backupExtensionsRestoreFailed": { + "description": "Snackbar/hint when some extensions failed to reinstall during restore", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "channelStable": "Стабільний", + "@channelStable": { + "description": "Update channel - stable releases" + }, + "tutorialSettingsTip3": "Налаштуйте тему та зовнішній вигляд програми", + "setupAppDocumentsFolderSubtitle": "Рекомендація – доступно через додаток Файли", + "a11yPlayTrackByArtist": "Play {trackName} by {artistName}", + "@a11yPlayTrackByArtist": { + "description": "Accessibility label for playing a local library track", "placeholders": { "trackName": { "type": "String" @@ -5052,6 +5062,320 @@ } } }, + "dialogRemove": "Видалити", + "extensionVerificationClose": "Close", + "bulkDownloadPlaylistsButton": "Завантажити {count} {count, plural, =1{плейлист} other{плейлистів}}", + "@bulkDownloadPlaylistsButton": { + "description": "Button label for bulk downloading selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "optionsAutoFallbackSubtitle": "Спробувати інші сервіси, якщо завантаження не вдається", + "@optionsAutoFallbackSubtitle": { + "description": "Subtitle for auto fallback" + }, + "extensionPatternsCount": "{count} шаблон(ів)", + "@libraryFilterLocal": { + "description": "Filter chip - show only local library items" + }, + "errorUrlNotRecognizedMessage": "Це посилання не підтримується. Переконайтеся, що URL-адреса правильна та встановлено сумісне розширення.", + "@errorUrlNotRecognizedMessage": { + "description": "Error message - URL not recognized explanation" + }, + "@extensionVerificationBrowserSubtitleExternal": { + "description": "Subtitle when external browser is preferred for extension verification" + }, + "optionsArtistTagMode": "Режим тегу виконавця", + "libraryFilterMetadataComplete": "Повні метадані", + "@libraryFilterMetadataComplete": { + "description": "Filter option - items with complete metadata" + }, + "@extensionsVersion": { + "description": "Extension version display", + "placeholders": { + "version": { + "type": "String" + } + } + }, + "@downloadNetworkAnySubtitle": { + "description": "Subtitle for any-network option in picker" + }, + "optionsReplayGainSubtitleOn": "Сканування гучності та вбудовування тегів нормалізації звуку (EBU R128)", + "libraryScanning": "Сканування...", + "@libraryScanning": { + "description": "Status during scan" + }, + "cacheRefresh": "Оновити", + "@actionShuffle": { + "description": "Tooltip for shuffle playback action" + }, + "optionsEmbedLyricsSubtitle": "Save synced lyrics alongside your downloaded tracks", + "@optionsEmbedLyricsSubtitle": { + "description": "Subtitle for embed lyrics" + }, + "queueEmptyAlbumsSubtitle": "Завантажте кілька треків з альбому, щоб переглянути їх тут", + "extensionEnterValue": "Enter value", + "@settingsDownloadNetworkAny": { + "description": "Network option - use any connection" + }, + "collectionLoved": "Вподобані", + "@collectionLoved": { + "description": "Custom folder for favorite tracks" + }, + "storeAddRepoTitle": "Додати репозиторій розширень", + "@storeAddRepoTitle": { + "description": "Store setup screen - heading when no repo is configured" + }, + "cueSplitSubtitle": "Розділення CUE+FLAC на окремі треки", + "@cueSplitSubtitle": { + "description": "Subtitle for CUE split menu item" + }, + "collectionNoPlaylistsYet": "Поки що немає списків відтворення", + "@collectionNoPlaylistsYet": { + "description": "Empty state title when user has no playlists" + }, + "libraryCleanupMissingFilesSubtitle": "Видалити записи для файлів, яких більше не існує", + "@libraryCleanupMissingFilesSubtitle": { + "description": "Subtitle for cleanup button" + }, + "folderOrganizationByArtist": "За виконавцем", + "@folderOrganizationByArtist": { + "description": "Folder option - artist folders" + }, + "aboutTranslators": "Перекладачі", + "notifAlreadyInLibraryCount": "Вже в бібліотеці ({completed}/{total})", + "editMetadataFieldTitle": "Назва", + "@editMetadataFieldTitle": { + "description": "Chip label for title field in auto-fill selector" + }, + "errorLoadArtist": "Не вдалося завантажити артиста", + "@errorLoadArtist": { + "description": "Error state shown when artist fails to load" + }, + "qualityNote": "Фактична якість залежить від наявності треку в сервісі", + "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", + "@downloadFilenameDescription": { + "description": "Description shown in filename format editor" + }, + "@notifDownloadsFinishedBody": { + "description": "Notification body when queue finishes with failures", + "placeholders": { + "completed": { + "type": "int" + }, + "failed": { + "type": "int" + } + } + }, + "@libraryFolderNotExist": { + "description": "Error when folder doesn't exist" + }, + "sortAlphaDesc": "Я-А", + "@sortAlphaDesc": { + "description": "Sort option - alphabetical descending" + }, + "@playlistsCount": { + "description": "Playlist count display", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@loadingSharedLink": { + "description": "Status when opening shared URL" + }, + "extensionServiceHealth": "Service health", + "@extensionServiceHealth": { + "description": "Extension capability label for service health checks" + }, + "@collectionDeletePlaylistsMessage": { + "description": "Confirmation message for deleting selected playlists", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupStorageDescription": "SpotiFLAC потребує дозволу на збереження, щоб зберегти завантажені музичні файли.", + "tutorialReadyMessage": "Готово! Почніть завантажувати свою улюблену музику прямо зараз.", + "tutorialLibraryTip3": "Перемикання між списком та сіткою для кращого перегляду", + "selectionDeletePlaylistsCount": "Delete {count} {count, plural, =1{playlist} other{playlists}}", + "appearanceThemeLight": "Світлий", + "queueEmptyHistorySubtitle": "Завантажені треки з’являться тут", + "@queueEmptyHistorySubtitle": { + "description": "Empty state subtitle for download history" + }, + "backupRestoreFailed": "Failed to restore backup", + "@backupRestoreFailed": { + "description": "Snackbar when restore fails" + }, + "queueFlacQueuedWithSkipped": "Додано {addedCount} треків до черги, пропущено {skippedCount}", + "@queueFlacQueuedWithSkipped": { + "description": "Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped", + "placeholders": { + "addedCount": { + "type": "int" + }, + "skippedCount": { + "type": "int" + } + } + }, + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "@downloadedAlbumDownloadedCount": { + "description": "Downloaded tracks count badge", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "setupFolderChoose": "Виберати папку для завантаження", + "dialogDownloadAllTitle": "Завантажити все", + "providerPriorityInfo": "Якщо трек недоступний у першого провайдера, додаток автоматично спробує наступного.", + "@providerPriorityInfo": { + "description": "Info tip about fallback behavior" + }, + "@dialogDiscardChanges": { + "description": "Dialog title - unsaved changes warning" + }, + "discographyNoAlbums": "Немає доступних альбомів", + "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", + "cacheNoData": "Кешованих даних немає", + "@cacheNoData": { + "description": "Label when cache category has no data" + }, + "tutorialStartDownloadSemantics": "Start download", + "@tutorialStartDownloadSemantics": { + "description": "Accessibility label for idle download button in tutorial demo" + }, + "logIssueIspBlockingSuggestion": "Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8", + "aboutTitle": "Про нас", + "@cueSplitButton": { + "description": "Button text to start CUE splitting" + }, + "appearanceHistoryView": "Історія переглядів", + "audioAnalysisSampleRate": "Частота дискретизації", + "@settingsCache": { + "description": "Settings menu item - cache management" + }, + "@optionsMaxQualityCoverSubtitleDisabled": { + "description": "Subtitle for max quality cover when metadata embedding is disabled" + }, + "lyricsProvidersInfoText": "Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.", + "cacheTrackLookup": "Відстеження кешу пошуку", + "extensionsHomeFeedOffSubtitle": "Do not show the home feed on the main screen", + "@downloadUsePrimaryArtistOnly": { + "description": "Setting - strip featured artists from folder name" + }, + "@regionCountryIN": { + "description": "Country name for SongLink region picker" + }, + "@libraryFilterQualityLossy": { + "description": "Filter option - lossy compressed audio" + }, + "extensionRefreshStatus": "Refresh status", + "notifAllDownloadsComplete": "Усі завантаження завершено", + "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", + "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", + "@editMetadataFieldDateHint": { + "description": "Hint text for the edit metadata date field" + }, + "trackMetadataShare": "Поділитися", + "@trackMetadataShare": { + "description": "Action button - share track" + }, + "discographyDownloadAllSubtitle": "{count} треків з {albumCount} релізів", + "settingsDonateSubtitle": "Buy the developer a coffee", + "libraryFilterDownloaded": "Завантажені", + "downloadNetworkAnySubtitle": "Use WiFi or mobile data", + "@cueSplitNoAudioFile": { + "description": "Error when CUE audio file is missing" + }, + "notifLibraryScanStopped": "Сканування зупинено до завершення.", + "@settingsMetadata": { + "description": "Settings menu item - metadata settings" + }, + "snackbarFailedToInstallNamed": "Failed to install {extensionName}", + "trackCopyLyrics": "Скопіювати тексти пісень", + "@trackCopyLyrics": { + "description": "Action - copy lyrics to clipboard" + }, + "regionCountryAU": "Australia", + "downloadAlbumFolderStructure": "Структура папок альбому", + "downloadMusixmatchAuto": "Авто", + "actionDismiss": "Dismiss", + "storeFilterAll": "Усі", + "extensionsDisabled": "Вимкнені", + "@logClearLogs": { + "description": "Clear button tooltip" + }, + "dialogDownloadAllMessage": "Завантажити {count} треків?", + "@optionsEmbedLyrics": { + "description": "Embed lyrics in audio files" + }, + "tutorialLibraryTitle": "Ваша бібліотека", + "optionsCheckUpdatesSubtitle": "Повідомити, коли буде доступна нова версія", + "@optionsCheckUpdatesSubtitle": { + "description": "Subtitle for update check" + }, + "collectionPlaylist": "Список відтворення", + "@collectionPlaylist": { + "description": "Single playlist label" + }, + "dateMonthsAgo": "{count} місяців тому", + "@dateMonthsAgo": { + "description": "Relative date - months ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@extensionRemoveButton": { + "description": "Button to uninstall extension" + }, + "providerBuiltIn": "Legacy", + "@providerBuiltIn": { + "description": "Legacy label retained for old generated localization compatibility" + }, + "collectionPlaylistRenamed": "Список відтворення перейменовано", + "collectionCreatePlaylist": "Створити плейлист", + "homeGoToAlbum": "Перейти до альбому", + "@homeGoToAlbum": { + "description": "Context menu item to navigate to the album page" + }, + "folderOrganizationByArtistSubtitle": "Окрема папка для кожного виконавця", + "@optionsClearHistory": { + "description": "Delete all download history" + }, + "@searchAlbums": { + "description": "Search result category - albums" + }, + "@sectionDebug": { + "description": "Settings section header" + }, + "extensionsVersion": "Версія {version}", + "@navHome": { + "description": "Bottom navigation - Home tab" + }, + "@editMetadataFieldDate": { + "description": "Chip label for date field in auto-fill selector" + }, + "downloadUsePrimaryArtistOnly": "Тільки основний виконавець для папок", + "tutorialExtensionsTip2": "Додавайте нових постачальників послуг завантаження або джерела пошуку", + "@setupStorageGranted": { + "description": "Success message for storage permission" + }, + "tutorialWelcomeTitle": "Ласкаво просимо до SpotiFLAC!", "a11ySelectAlbum": "Select album {albumName}", "@a11ySelectAlbum": { "description": "Accessibility label for selecting an album", @@ -5061,89 +5385,679 @@ } } }, - "a11yOpenAlbum": "Open album {albumName}", - "@a11yOpenAlbum": { - "description": "Accessibility label for opening an album", + "aboutMobileSource": "Мобільний вихідний код", + "@aboutMobileSource": { + "description": "Link to mobile GitHub repo" + }, + "@extensionCustomUrlHandling": { + "description": "Extension detail section title for custom URL handling" + }, + "@downloadMusixmatchLanguageAuto": { + "description": "Subtitle when no language is set" + }, + "@cancelDownloadKeep": { + "description": "Dialog button - keep the active download (do not cancel)" + }, + "libraryFilterSource": "Джерело", + "@libraryFilterSource": { + "description": "Filter section - source type" + }, + "sectionStorageAccess": "Доступ до сховища", + "logFilterBySeverity": "Фільтрувати журнали за рівнем серйозності", + "libraryFolderNotExist": "Вибрана папка не існує", + "optionsEmbedMetadataSubtitleOn": "Write metadata, cover art, and embedded lyrics to files", + "albumFolderArtistAlbum": "Артист / Альбом", + "@albumFolderArtistAlbum": { + "description": "Album folder option" + }, + "allFilesAccessDeniedMessage": "У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.", + "@allFilesAccessDeniedMessage": { + "description": "Message when permission is permanently denied" + }, + "editMetadataSelectEmpty": "Порожні (без мета даних)", + "settingsLocalLibrarySubtitle": "Сканування музики та виявлення дублікатів", + "@settingsAutoExportFailed": { + "description": "Setting toggle for auto-export" + }, + "optionsUseExtensionProviders": "Використати постачальників розширень", + "cacheCleanupUnusedSubtitle": "Видалити історію утрачених завантажень файлів та відсутні записи бібліотеки", + "@tutorialSettingsTitle": { + "description": "Tutorial settings page title" + }, + "libraryFilterMetadataMissingGenre": "Відсутній жанр", + "@appearanceSelectAccentColor": { + "description": "Accessibility label for picking an accent color", "placeholders": { - "albumName": { + "hex": { "type": "String" } } }, - "editMetadataFieldDateHint": "YYYY-MM-DD or YYYY", - "@editMetadataFieldDateHint": { - "description": "Hint text for the edit metadata date field" + "setupFolderDescription": "Виберіть папку, де буде збережено завантажену музику.", + "extensionDetailsTags": "Tags", + "unknownArtist": "Unknown Artist", + "trackFetchOnlineLyrics": "Отримати з Інтернету", + "snackbarNoActionDefined": "Для цієї кнопки не визначено жодної дії", + "@snackbarNoActionDefined": { + "description": "Snackbar when an extension button has no action configured" }, + "downloadAllCount": "Завантажити все ({count})", + "@downloadAllCount": { + "description": "Download all button with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "downloadedAlbumDiscHeader": "Диск {discNumber}", + "@backupInvalidFile": { + "description": "Snackbar when the chosen file is not a valid backup" + }, + "actionSaveCredentials": "Зберегти облікові дані", + "@extensionHooksAvailable": { + "description": "Post-processing hooks count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@logIssueTrackNotFoundSuggestion": { + "description": "Diagnostic badge suggestion when a track is unavailable" + }, + "@snackbarFileNotFound": { + "description": "Snackbar - file doesn't exist" + }, + "extensionHealthOnline": "Online", + "@extensionHealthOnline": { + "description": "Extension service health status - online" + }, + "settingsSaveDownloadHistorySubtitle": "Keep completed downloads in history and library views", + "trackOptionRemoveFromWishlist": "Видалити зі списку бажань", + "extensionsFallbackTitle": "Резервні розширення", + "@extensionsFallbackTitle": { + "description": "Setting and page title for choosing which download extensions can be used during fallback" + }, + "metadataSaveFailedFfmpeg": "Не вдалося зберегти метадані через FFmpeg", + "@albumFolderAlbumOnly": { + "description": "Album folder option" + }, + "@albumFolderYearAlbumSubtitle": { + "description": "Folder structure example" + }, + "downloadedAlbumDeleteSelected": "Видалити вибране", + "selectionSelectPlaylistsToDelete": "Вибрати списки відтворення для видалення", + "@selectionSelectPlaylistsToDelete": { + "description": "Hint shown when no playlists are selected for deletion" + }, + "storeAddRepoDescription": "Введіть URL-адресу репозиторію GitHub, яка містить файл registry.json, для перегляду та встановлення розширень.", + "appearanceThemeDark": "Темний", + "downloadedAlbumTapToSelect": "Натисніть на треки, щоб вибрати", + "@collectionAddedToFavoriteArtists": { + "description": "Snackbar after adding artist to favorite artists", + "placeholders": { + "artistName": { + "type": "String" + } + } + }, + "@backupRestored": { + "description": "Snackbar after a successful restore" + }, + "nowPlayingLibraryEmpty": "Your library is empty", + "@nowPlayingLibraryEmpty": { + "description": "Snackbar when shuffle library is requested but library has no tracks" + }, + "editMetadataAutoFillNoResults": "Відповідних метаданих в Інтернеті не знайдено", + "updateDownloading": "Завантаження...", + "trackLyricsSource": "Source: {source}", + "logFilterLevel": "Рівень", + "logNoLogsYet": "Журналів поки що немає", + "cacheSizeOnly": "{size}", + "@cacheSizeOnly": { + "description": "Cache size only", + "placeholders": { + "size": { + "type": "String" + } + } + }, + "trackOpenInService": "Open in {serviceName}", + "@trackOpenInService": { + "description": "Button label to open a track in a named music service", + "placeholders": { + "serviceName": { + "type": "String" + } + } + }, + "@cacheLibraryCoverDesc": { + "description": "Description of what library cover cache contains" + }, + "libraryClearConfirmMessage": "Це видалить усі скановані треки з вашої бібліотеки. Ваші фактичні музичні файли не будуть видалені.", + "@dialogImportPlaylistMessage": { + "description": "Dialog message - import playlist confirmation", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "extensionsHomeFeedAuto": "Авто", + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, + "dateToday": "Сьогодні", + "a11yOpenItem": "Open {itemType} {name}", + "@a11yOpenItem": { + "description": "Accessibility label for opening a generic item", + "placeholders": { + "itemType": { + "type": "String" + }, + "name": { + "type": "String" + } + } + }, + "audioAnalysisBitDepth": "Глибина бітів", "editMetadataFieldTrackTotal": "Track Total", "@editMetadataFieldTrackTotal": { "description": "Label for total tracks field in the edit metadata sheet" }, - "editMetadataFieldDiscTotal": "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" - }, - "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" - }, - "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", + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", + "optionsSpotifyWarning": "Spotify вимагає ваших власних облікових даних API. Отримайте їх безкоштовно на сайті developer.spotify.com", + "@notifDownloadingUpdate": { + "description": "Notification title while downloading an app update", "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": { + "version": { "type": "String" } } }, + "@csvImportTracks": { + "description": "Label shown in quality picker for CSV import", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackEditMetadata": "Редагувати метадані", + "discographyDownloadAll": "Завантажити все", + "@discographyDownloadAll": { + "description": "Option - download entire discography" + }, + "@editMetadataFieldAlbum": { + "description": "Chip label for album field in auto-fill selector" + }, + "albumFolderArtistAlbumSubtitle": "Альбоми/Ім'я артиста/Назва альбому/", + "extensionHealthServiceUnknown": "Service status unknown", + "navHome": "Головна", + "queueDownloadStarting": "Starting...", + "@dialogRemoveExtension": { + "description": "Dialog title - uninstall extension" + }, + "notifLibraryScanProgressNoTotal": "{scanned} файлів скановано • {percentage}%", + "@appearanceAmoledDark": { + "description": "Theme option - pure black" + }, + "qualityHiResFlac": "FLAC високої роздільної здатності", + "selectionSelected": "Вибрано {count}", + "extensionDetailsInformation": "Information", + "@extensionDetailsInformation": { + "description": "Section title for extension metadata information" + }, + "discographyDownload": "Завантажити дискографію", + "editMetadataFieldCopyright": "Авторське право", + "@setupOpenSettings": { + "description": "Button to open system settings" + }, + "libraryFilterSort": "Сортувати", + "cacheLibraryCoverDesc": "Обкладинку витягнуто з локальних музичних файлів. Буде повторно витягнуто під час наступного сканування.", + "dialogRemoveExtension": "Видалити розширення", + "backupExportSectionTitle": "Create backup", + "downloadEmbedLyricsDisabled": "Enable metadata embedding first", + "openInOtherServices": "Open in Other Services", + "actionSelectAll": "Вибрати все", + "settingsDownloadNetworkSubtitle": "Вибрати мережу для завантажень. Якщо встановлено значення «Тільки Wi-Fi», завантаження призупиняться через мобільні дані.", + "downloadFolderOrganization": "Організація папок", + "tutorialWelcomeTip2": "Get FLAC quality audio from installed download extensions", + "@tutorialWelcomeTip2": { + "description": "Tutorial welcome tip 2" + }, + "@optionsUseExtensionProvidersOn": { + "description": "Status when extension providers enabled" + }, + "selectionAllSelected": "Усі треки вибрано", + "@selectionAllSelected": { + "description": "Status - all items selected" + }, + "settingsLogsSubtitle": "Перегляд журналів програми для налагодження", + "albumFolderYearAlbumSubtitle": "Альбоми/[2005] Назва Альбому/", + "cancelDownloadKeep": "Зберегти", + "optionsDetailedLoggingOn": "Ведеться детальний журнал", + "safMigrationMessage2": "Будь ласка, виберіть папку завантажень ще раз, щоб перейти до нової системи зберігання.", + "@storeChangeRepoTooltip": { + "description": "Tooltip for the change-repository icon button in the app bar" + }, + "regionCountryJP": "Japan", + "notifUpdateFailed": "Не вдалося оновити", + "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", + "@trackLyricsSaved": { + "description": "Snackbar after lyrics saved", + "placeholders": { + "fileName": { + "type": "String" + } + } + }, + "downloadLocationSubtitle": "Choose where to save your downloaded tracks", + "trackConvertActionLabelLossless": "{sourceFormat} → {targetFormat} ({quality})", + "lyricsProvidersDisabledSection": "Вимкнено ({count})", + "@dateDaysAgo": { + "description": "Relative date - days ago", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "librarySourceLocal": "Локальні", + "backupContentsExtensions": "{count, plural, =1{1 extension} other{{count} extensions}}", + "sectionService": "Сервіс", + "lyricsProviderQqMusicDesc": "QQ Music (добре для китайських пісень, через проксі)", + "@lyricsProviderQqMusicDesc": { + "description": "Description for QQ Music provider" + }, + "cacheCleanupUnusedDesc": "Видалити історію втрачених завантажень та записи бібліотеки для відсутніх файлів.", + "selectionTapPlaylistsToSelect": "Торкніться списків відтворення, щоб вибрати", + "notifUpdateFailedBody": "Не вдалося завантажити оновлення. Спробуйте пізніше.", + "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", + "artistPopular": "Популярні", + "extensionRemoveButton": "Видалити розширення", + "allFilesAccessEnabledSubtitle": "Можна записувати в будь-яку папку", + "@allFilesAccessEnabledSubtitle": { + "description": "Subtitle when all files access is enabled" + }, + "extensionsSearchProvider": "Постачальник пошуку", + "tutorialWelcomeDesc": "Давайте дізнаємося, як завантажувати улюблену музику в якості без втрат. Цей короткий посібник покаже вам основи.", + "selectionBatchConvertConfirmTitle": "Пакетне конвертування", + "extensionMetadataProvider": "Постачальник метаданих", + "queueDownloadedFileMissing": "Downloaded file missing", + "logClearLogs": "Очистити журнали", + "@downloadAppleQqMultiPerson": { + "description": "Setting for word-by-word multi-person lyrics from Apple Music and QQ Music" + }, + "tutorialWelcomeTip1": "Завантажуйте музику зі Spotify, Deezer або вставляйте будь-яку підтримувану URL-адресу", + "@tutorialWelcomeTip1": { + "description": "Tutorial welcome tip 1" + }, + "logIssueRateLimitedSuggestion": "Wait a few minutes before trying again", + "downloadAllowLocalNetworkEnabled": "Requests to local/private addresses are allowed (for local proxy or custom DNS)", + "@regionCountryUS": { + "description": "Country name for SongLink region picker" + }, + "trackArtist": "Артист", + "extensionCustomUrlHandling": "Custom URL Handling", + "appearanceDynamicColorSubtitle": "Використати кольори зі своїх шпалер", + "@appearanceDynamicColorSubtitle": { + "description": "Subtitle for dynamic color" + }, + "searchSortDefault": "За замовчуванням", + "@downloadFallbackExtensions": { + "description": "Settings item for configuring fallback extension providers" + }, + "albumFolderStructureDescription": "Choose how album folders are structured", + "@albumFolderStructureDescription": { + "description": "Album folder structure picker description" + }, + "libraryBuiltInPreviewPlayerSubtitle": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@libraryBuiltInPreviewPlayerSubtitle": { + "description": "Subtitle for built-in preview player option" + }, + "storageModeAppFolder": "App Folder (Recommended)", + "collectionPlaylistCreated": "Список відтворення створено", + "@actionPause": { + "description": "Action button - pause download" + }, + "trackSaveCoverArtSubtitle": "Зберегти обкладинку альбому як файл .jpg", + "actionPaste": "Paste", + "extensionSettingsCount": "{count} {count, plural, =1{setting} other{settings}}", + "downloadNativeWorker": "Native download worker", + "releaseTypeEp": "EP", + "@releaseTypeEp": { + "description": "Badge label for EP releases" + }, + "snackbarExtensionInstalledEnable": "{extensionName} installed. Enable it in Settings > Extensions", + "cacheRefreshStats": "Оновити статистику", + "collectionPlaylistChangeCover": "Змінити зображення обкладинки", + "@collectionPlaylistChangeCover": { + "description": "Bottom sheet action to pick a custom cover image for a playlist" + }, + "optionsClearHistory": "Очистити історію завантажень", + "trackGenre": "Жанр", + "snackbarSelectedPlaylistsEmpty": "Вибрані списки відтворення не містять треків", + "collectionAddedTracksToPlaylist": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}", + "downloadNeteaseIncludeRomanization": "Netease: Включити романізацію", + "libraryFilterMetadataMissingArtist": "Missing artist", + "extensionsNoCustomSearch": "Без розширень із користувацьким пошуком", + "@extensionsTitle": { + "description": "Extensions page title" + }, + "extensionDownloadProvider": "Постачальник завантажень", + "@extensionDownloadProvider": { + "description": "Capability - provides downloads" + }, + "lyricsMode": "Режим тексту пісні", + "aboutReportIssueSubtitle": "Повідомити про будь-які проблеми, з якими ви зіткнулися", + "@downloadSeparateSinglesFolder": { + "description": "Setting - separate folder for singles" + }, + "appearanceAmoledDark": "Темний AMOLED", + "logIssueNetworkErrorDescription": "Connection issues detected", + "folderOrganizationByArtistAlbumSubtitle": "Вкладені папки для виконавця та альбому", + "@libraryForceFullScanSubtitle": { + "description": "Subtitle for force full scan button" + }, + "setupGrantPermission": "Надати дозвіл", + "lyricsProvidersDescription": "Увімкнення, вимкнення та зміна порядку джерел текстів пісень. Постачальники перевірятимуть зверху вниз, доки не буде знайдено текст пісні.", + "@trackConvertFormatSubtitle": { + "description": "Subtitle for convert format menu item" + }, + "dateDaysAgo": "{count} днів тому", + "extensionsHomeFeedDescription": "Виберіть, яке розширення відображатиме домашню стрічку на головному екрані", + "downloadLossyMp3Subtitle": "Найкраща сумісність, ~10 МБ на доріжку", + "@downloadLossyMp3Subtitle": { + "description": "Subtitle for MP3 320kbps lossy option" + }, + "nowPlayingDetails": "Details", + "collectionWishlistEmptyTitle": "Список бажань порожній", + "downloadAppleQqMultiPersonEnabled": "Speaker labels included for duets and group tracks", + "@optionsMaxQualityCover": { + "description": "Download highest quality album art" + }, + "@snackbarExtensionUpdatedVersion": { + "description": "Snackbar after updating an extension from the repo tab", + "placeholders": { + "extensionName": { + "type": "String" + }, + "version": { + "type": "String" + } + } + }, + "extensionHealthServiceDegraded": "Service degraded", + "optionsUseExtensionProvidersOn": "Extension providers are enabled", + "selectionConvertNoConvertible": "Трансформованих треків не вибрано", + "snackbarCredentialsCleared": "Облікові дані очищено", + "setupStorageGranted": "Дозвіл на зберігання надано!", + "downloadAllowLocalNetwork": "Allow Local Network Access", + "optionsMaxQualityCoverSubtitleDisabled": "Disabled when metadata embedding is off", + "nowPlayingNoLyrics": "No lyrics in this file", + "selectionDeleteTracksCount": "Delete {count} {count, plural, =1{track} other{tracks}}", + "@selectionDeleteTracksCount": { + "description": "Button label for deleting selected tracks", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "@libraryForceFullScan": { + "description": "Button to force a complete rescan of library" + }, + "notifLibraryScanExcluded": "{count} виключені", + "@aboutPaxsenixSubtitle": { + "description": "Subtitle for Paxsenix special thanks entry on the about page" + }, + "setupChangeFolderTooltip": "Change folder", + "logIssueIspBlockingDescription": "Your ISP may be blocking access to download services", + "@logIssueIspBlockingDescription": { + "description": "Diagnostic badge description for ISP blocking" + }, + "libraryClear": "Очистити бібліотеку", + "collectionRemoveFromPlaylist": "Видалити зі списку відтворення", + "@collectionRemoveFromPlaylist": { + "description": "Tooltip for removing track from playlist" + }, + "backupIncludeSecrets": "Include extension credentials", + "notifDownloadsFinishedBody": "{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}", + "storeCategoryMetadata": "Metadata", + "@trackLyricsEmbedded": { + "description": "Snackbar - lyrics saved to file" + }, + "editMetadataFieldDiscTotal": "Disc Total", + "tutorialLibraryTip1": "Перегляд стану завантаження та черги на вкладці «Бібліотека»", + "playlistsCount": "{count, plural, =1{1 плейлист} other{{count} плейлистів}}", + "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", + "@downloadFallbackExtensionsSubtitle": { + "description": "Subtitle for fallback extensions item" + }, + "libraryFilterLocal": "Локальні", + "tutorialDownloadInProgressSemantics": "Download in progress", + "searchSortDurationLong": "Тривалість (найдовша)", + "@appearanceLanguage": { + "description": "Language setting title" + }, + "libraryAbout": "Про локальну бібліотеку", + "@libraryAbout": { + "description": "Section header for about info" + }, + "cueSplitNoAudioFile": "Аудіофайл для цього аркуша CUE не знайдено", + "notifUpdateReadyBody": "SpotiFLAC Mobile v{version} downloaded. Tap to install.", + "appearanceSelectAccentColor": "Select accent color {hex}", + "@homeAlbumInfoUnavailable": { + "description": "Snackbar when album info cannot be loaded" + }, + "trackReplayGain": "Rescan ReplayGain", + "downloadSeparateSinglesFolder": "Окрема папка для синглів", + "trackAlbumArtist": "Виконавець альбому", + "qualityFlacLossless": "FLAC без втрат", + "@extensionVerificationHelpMessageWaiting": { + "description": "Dialog message when verification may need manual browser help" + }, + "tutorialSettingsTitle": "Налаштуйте свій досвід", + "extensionActionFailed": "Action failed", + "@storeEmptyNoResults": { + "description": "Message when search/filter returns no results" + }, + "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", + "downloadFallbackExtensionsSubtitle": "Choose which extensions can be used as fallback", + "notifChannelLibraryScanDesc": "Показує перебіг сканування локальної бібліотеки", + "storeExtensionsCount": "{count} {count, plural, =1{extension} other{extensions}}", + "trackCoverNoEmbeddedArt": "No embedded album art found", + "@trackCoverNoEmbeddedArt": { + "description": "Message shown when a track file has no embedded cover art" + }, + "snackbarExtensionUpdatedVersion": "{extensionName} updated to v{version}", + "collectionRemoved": "\"{trackName}\" видалено", + "setupStorageAccessMessageAndroid11": "Для збереження файлів у вибрану папку завантажень для Android 11+ потрібен дозвіл «Доступ до всіх файлів».", + "notifDownloadsFinished": "Завантаження завершено ({completed} завершено, {failed} не вдалося)", + "notifLibraryScanProgressWithTotal": "{scanned}/{total} файлів • {percentage}%", + "optionsPrimaryProvider": "Основний постачальник", + "@optionsPrimaryProvider": { + "description": "Main search provider setting" + }, + "logIssueTrackNotFoundSuggestion": "The track may not be available in lossless quality", + "collectionAddedToLoved": "\"{trackName}\" додано до списку улюблених", + "albumFolderArtistAlbumFlat": "Виконавець / Альбом (сингли без альбомів)", + "homeAlbumInfoUnavailable": "Інформація про альбом недоступна", + "settingsLyrics": "Lyrics", + "extensionVerificationBrowserExternal": "External", + "regionCountryIN": "India", + "extensionHealthUnknown": "Unknown", + "backupContentsWishlist": "{count} wishlist {count, plural, =1{track} other{tracks}}", + "settingsAutoExportFailed": "Автоматичний експорт невдалих завантажень", + "logFilterSection": "Фільтр", + "dialogDiscardChanges": "Відхилити зміни?", + "@qualityHiResFlacSubtitle": { + "description": "Technical spec for hi-res" + }, + "searchTracks": "Tracks", + "searchAlbums": "Альбоми", + "trackConvertFormat": "Конвертувати формат", + "metadataProviderPriorityTitle": "Пріоритет метаданих", + "libraryFolderHint": "Натисніть, щоб вибрати папку", + "downloadedAlbumDeleteMessage": "Видалити {count} {count, plural, =1{трек} other{треків}} з цього альбому?\n\nЦе також призведе до видалення файлів зі сховища.", + "@downloadedAlbumDeleteMessage": { + "description": "Delete confirmation with count", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "trackAlbum": "Альбом", + "updateAvailable": "Доступне оновлення", + "optionsEmbedLyrics": "Вбудований текст пісні", + "trackReEnrichProgress": "Повторне збагачення метаданих...", + "@trackReEnrichProgress": { + "description": "Snackbar while re-enriching metadata" + }, + "audioAnalysisPeak": "Пік", + "@audioAnalysisPeak": { + "description": "Peak amplitude metric label" + }, + "optionsExtensionStoreSubtitle": "Показати вкладку «Репозиторій» у навігації", + "settingsTitle": "Налаштування", + "@settingsAbout": { + "description": "Settings section - app info" + }, + "cacheExploreFeed": "Огляд кешу стрічки", + "@dialogDownloadPlaylistsMessage": { + "description": "Dialog message for bulk playlist download confirmation", + "placeholders": { + "trackCount": { + "type": "int" + }, + "playlistCount": { + "type": "int" + } + } + }, + "downloadedAlbumSelectedCount": "Вибрано {count}", + "downloadAskQualitySubtitle": "Показувати вікно вибору якості для кожного завантаження", + "filenameShowAdvancedTags": "Показати розширені теги", + "@filenameShowAdvancedTags": { + "description": "Toggle label for showing advanced filename tags" + }, + "@editMetadataFieldComment": { + "description": "Label for comment field in the edit metadata sheet" + }, + "downloadFallbackExtensions": "Fallback Extensions", + "downloadAlbumArtistMetadataFull": "Album Artist metadata: Full", + "cacheLibraryCover": "Кеш бібліотеки обкладинок", + "actionShuffle": "Shuffle", + "backupCreated": "Backup created", + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "snackbarFillAllFields": "Будь ласка, заповніть усі поля", + "actionCreate": "Створити", + "snackbarAddedToQueueGeneric": "Added to queue", + "downloadedAlbumDownloadedCount": "{count} завантажено", + "snackbarLoadingCueSheet": "Завантаження аркуша CUE...", + "@trackCoverClearSelected": { + "description": "Tooltip for clearing the newly selected cover art" + }, + "aboutOriginalCreator": "Творець оригінального SpotiFLAC", + "a11yTrackByArtist": "{trackName} by {artistName}", + "audioAnalysisDynamicRange": "Динамічний діапазон", + "homeChangeSearchProviderTooltip": "Change search provider", + "loadingSharedLink": "Завантаження спільного посилання...", + "lyricsModeEmbedSubtitle": "Тексти пісень зберігаються в метаданих FLAC", + "setupNotificationBackgroundDescription": "Отримуйте сповіщення про прогрес та завершення завантаження. Це допомагає відстежувати завантаження, коли програма працює у фоновому режимі.", + "snackbarViewQueue": "Переглянути чергу", + "@audioAnalysisDuration": { + "description": "Duration metric label" + }, + "downloadSeparateSinglesDisabled": "Singles and albums saved in the same folder", + "backupRestored": "Backup restored successfully", + "trackConvertConfirmMessageLosslessCapped": "Convert from {sourceFormat} to {targetFormat} ({quality})?\n\nThe output stays in a lossless codec, but bit depth/sample rate will be capped. Original file will be deleted after conversion.", + "@trackConvertConfirmMessageLosslessCapped": { + "description": "Confirmation dialog message for capped lossless conversion of a single file", + "placeholders": { + "sourceFormat": { + "type": "String" + }, + "targetFormat": { + "type": "String" + }, + "quality": { + "type": "String" + } + } + }, + "discographySelectAlbumsSubtitle": "Виберіть конкретні альбоми або сингли", + "@discographySelectAlbumsSubtitle": { + "description": "Subtitle for select albums option" + }, + "backupImportSectionDescription": "Pick a backup file to restore your data. This replaces the current settings, history and library on this device.", + "errorUrlFetchFailed": "Не вдалося завантажити вміст за цим посиланням. Спробуйте ще раз.", + "lyricsProviderLyricsPlusDesc": "Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)", + "dialogSave": "Зберегти", + "trackReEnrichSearching": "Пошук метаданих в Інтернеті...", + "regionCountryUS": "United States", + "audioAnalysisDescription": "Перевірити якість без втрат за допомогою спектрального аналізу", + "downloadFilenameFormat": "Формат імені файлу", + "cueSplitTitle": "Розділений аркуш CUE", + "settingsAppSubtitle": "Updates, data, extension repo, debug", + "@settingsAppSubtitle": { + "description": "Subtitle for app settings" + }, + "@setupPermissionRequiredMessage": { + "description": "Generic permission required message", + "placeholders": { + "permissionType": { + "type": "String" + } + } + }, + "errorMissingExtensionSource": "Не вдається завантажити {item}: відсутній вихідний код розширення", + "albumFolderAlbumOnlySubtitle": "Альбоми/Назва Альбому/", + "errorLoadPlaylist": "Не вдалося завантажити список відтворення", + "logIssueTrackNotFoundLabel": "TRACK NOT FOUND", + "extensionVerificationHelpTitleManual": "Open verification manually", + "dialogDiscard": "Відхилити", + "storageModeSaf": "Custom Folder (SAF)", + "errorRateLimited": "Обмежений тариф", + "downloadSelectQuality": "Вибрати якість", + "dialogDownloadPlaylistsMessage": "Завантажити {trackCount} {trackCount, plural, =1{трек} other{треків}} з {playlistCount} {playlistCount, plural, =1{плейлист} other{плейлистів}}?", + "collectionFoldersTitle": "Мої папки", + "credentialsClientSecret": "Секретний код клієнта", + "progressFetchingMetadata": "Отримання метаданих... {current}/{total}", + "settingsDownloadNetworkAny": "Wi-Fi + мобільний інтернет", + "audioAnalysisDuration": "Тривалість", + "audioAnalysisAnalyzing": "Аналіз аудіо...", + "credentialsDescription": "Введіть свій ідентифікатор клієнта та секретний код, щоб використовувати власну квоту програми Spotify.", + "extensionVerificationHelpMessageWaiting": "If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.", + "editMetadataFieldDiscNum": "Номер диска", + "@editMetadataFieldDiscNum": { + "description": "Chip label for disc number field in auto-fill selector" + }, + "@noTracksFoundForAlbum": { + "description": "Empty state message when an album has no tracks" + }, + "previewPlay": "Play preview", + "setupPermissionRequiredMessage": "{permissionType} Для найкращого досвіду потрібен дозвіл. Ви можете змінити це пізніше в налаштуваннях.", + "aboutVersion": "Версія", + "qualityHiResFlacSubtitle": "24-біт / до 96 кГц", + "audioAnalysisSamples": "Семпли", + "libraryFilterQualityHiRes": "Висока роздільна здатність (24 біти)", + "sectionMetadataProviders": "Providers", + "@sectionMetadataProviders": { + "description": "Settings section header for metadata providers" + }, + "trackCopyright": "Авторське право", + "libraryForceFullScanSubtitle": "Пересканувати всі файли, ігноруючи кеш", + "trackCopiedToClipboard": "Скопійовано в буфер обміну", + "optionsEmbedMetadata": "Embed Metadata", "collectionAddedTracksToPlaylistWithExisting": "Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)", "@collectionAddedTracksToPlaylistWithExisting": { "description": "Snackbar after adding multiple tracks to a playlist when some were already present", @@ -5159,383 +6073,136 @@ } } }, - "itemCount": "{count} {count, plural, =1{item} other{items}}", - "@itemCount": { - "description": "Generic item count label", + "storeCategoryIntegration": "Integration", + "storeClearFilters": "Очистити фільтри", + "navSettings": "Налаштування", + "@homeRecent": { + "description": "Section header for recent searches" + }, + "sectionApp": "Додаток", + "@sectionLanguage": { + "description": "Settings section header for language" + }, + "downloadFilterContributingDisabled": "Full Album Artist string used", + "trackConvertFormatSubtitle": "Convert to AAC/M4A, MP3, Opus, ALAC, or FLAC", + "albumFolderArtistAlbumSinglesSubtitle": "Виконавець/Альбом/ та Виконавець/Сингли/", + "collectionDeletePlaylistsMessage": "Delete {count} {count, plural, =1{playlist} other{playlists}}?", + "lyricsProvidersSaved": "Пріоритет постачальника текстів пісень збережено", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "trackTrackName": "Назва треку", + "homeRecent": "Нещодавні", + "recentEmpty": "Поки що немає нещодавніх записів", + "cacheClearAll": "Очистити весь кеш", + "trackReEnrichFieldReleaseInfo": "Дата та ISRC", + "regionCountryMX": "Mexico", + "a11yOpenAlbumByArtistTrackCount": "Open album {albumName} by {artistName}, {trackCount} tracks", + "editMetadataFieldAlbum": "Альбом", + "settingsAbout": "Про додаток", + "libraryFilterTitle": "Фільтри", + "cleanupOrphanedDownloadsResult": "Видалено {count} утрачених записів з історії", + "extensionHooksAvailable": "{count} доступних хуків", + "backupContentsSettings": "App settings", + "trackLyricsEmbedded": "Текст пісні успішно вбудовано в пісню", + "optionsUpdateChannelPreview": "Отримати попередні релізи", + "collectionAddedToFavoriteArtists": "\"{artistName}\" added to Favorite Artists", + "libraryForceFullScan": "Примусове повне сканування", + "snackbarProviderPrioritySaved": "Пріоритет постачальника збережено", + "collectionFavoriteArtistsEmptySubtitle": "Tap the heart on an artist page to keep them here", + "libraryBuiltInPlayerInfo": "The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.", + "extensionServiceStatus": "Service Status", + "dateWeeksAgo": "{count} тижнів тому", + "historyFilterSingles": "Сингли", + "tutorialSettingsTip2": "Встановіть параметри якості звуку та формату за замовчуванням", + "trackLyricsSaved": "Текст пісні збережено в {fileName}", + "cacheClearAllConfirmTitle": "Очистити увесь кеш?", + "noTracksFoundForAlbum": "Для цього альбому не знайдено жодних треків", + "sectionLanguage": "Мова", + "@logIssueTrackNotFoundDescription": { + "description": "Diagnostic badge description when a track is unavailable" + }, + "setupSelectFolder": "Вибрати папку", + "dateYesterday": "Вчора", + "collectionAddToPlaylist": "Додати до списку відтворення", + "snackbarUnsupportedAudioFormat": "Непідтримуваний аудіоформат", + "libraryScanCancelled": "Scan cancelled", + "appearanceLanguage": "Мова програми", + "extensionsTitle": "Розширення", + "dialogImportPlaylistMessage": "Знайдено {count} треків у CSV. Додати їх до черги завантаження?", + "permissionNotification": "Notification", + "notifUpdateReady": "Оновлення готове", + "lyricsModeDescription": "Виберіть, як тексти пісень зберігатимуться разом із завантаженнями пісень.", + "downloadFrom": "Завантажити з", + "collectionWishlistEmptySubtitle": "Натисніть + на треках, щоб зберегти те, що ви хочете завантажити пізніше", + "cueSplitSplitting": "Розділення аркуша CUE... ({current}/{total})", + "optionsMaxQualityCover": "Максимальна якість обкладинки", + "trackOptionAddToWishlist": "Додати до списку бажань", + "settingsBackup": "Backup & Restore", + "aboutPaxsenixSubtitle": "Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius", + "notifDownloadCompleteCount": "Завантаження завершено ({completed}/{total})", + "extensionsNoDownloadProvider": "Без розширень із постачальником завантажень", + "libraryFilterSortGenreAsc": "Жанр (А-Я)", + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "collectionPlaylistRemoveCover": "Видалити зображення обкладинки", + "storeEmptyNoResults": "Розширень не знайдено", + "logIssueTrackNotFoundDescription": "Some tracks could not be found on download services", + "editMetadataFieldComment": "Comment", + "settingsMetadata": "Metadata", + "settingsCache": "Сховище та Кеш", + "providerPriorityFallbackExtensionsHint": "Тут перелічені лише ввімкнені розширення з можливістю завантаження через постачальника послуг.", + "libraryFilterAll": "Усі", + "notifDownloadingUpdate": "Downloading SpotiFLAC Mobile v{version}", + "extensionsProviderPrioritySection": "Пріоритет постачальника", + "storeChangeRepoTooltip": "Змінити репозиторій", + "snackbarFailedToInstall": "Не вдалося встановити розширення", + "libraryScanSubtitle": "Сканувати для аудіофайлів", + "snackbarExtensionInstalled": "Розширення {extensionName} встановлено.", + "setupOpenSettings": "Відкрити налаштування", + "extensionsInstalledSection": "Встановлені розширення", + "aboutLinks": "Посилання", + "trackCoverClearSelected": "Clear selected cover", + "libraryAutoScanWeekly": "Щотижнево", + "downloadMusixmatchLanguageAuto": "Auto (original language)", + "optionsDefaultSearchTab": "Вкладка пошуку за замовчуванням", + "downloadPrimaryArtistOnlyOn": "Primary only: On", + "folderOrganizationDescription": "Упорядкувати завантажені файли в папки", + "@folderOrganizationDescription": { + "description": "Folder organization sheet description" + }, + "lyricsModeEmbed": "Вбудувати у файл", + "trackReEnrichFfmpegFailed": "Не вдалося вбудувати метадані FFmpeg", + "@extensionsSearchProviderDescription": { + "description": "Search provider setting description" + }, + "libraryFilterQualityLossy": "Із втратами (lossy)", + "actionPause": "Пауза", + "csvImportTracks": "{count} треків з CSV", + "@extensionsSearchWith": { + "description": "Extensions page - subtitle for default metadata search provider option", "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...", - "@queueDownloadStarting": { - "description": "Queue status before download progress is available" - }, - "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": { + "providerName": { "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": "Beta Android service worker for extension downloads", - "@downloadNativeWorkerSubtitle": { - "description": "Setting subtitle for Android native download worker" - }, - "badgeBeta": "BETA", - "@badgeBeta": { - "description": "Badge label for beta features" - }, - "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" - }, - "errorCouldNotKeepFolderAccess": "Could not keep access to the selected folder", - "@errorCouldNotKeepFolderAccess": { - "description": "Error when persistent folder access cannot be saved" - }, - "storeAnyVersion": "Any", - "@storeAnyVersion": { - "description": "Store detail value when any app version is accepted" - }, - "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": {} - } - } + "sectionDebug": "Налагодження", + "editMetadataFieldDate": "Дата", + "timeHoursAgo": "{count, plural, =1{1 hour ago} other{{count} годин тому}}", + "sectionPerformance": "Продуктивність", + "extensionsSearchWith": "Пошук за допомогою{providerName}", + "extensionsDownloadPrioritySubtitle": "Встановити порядок завантаження", + "cacheAppDirectoryDesc": "HTTP-відповіді, дані WebView та інші тимчасові дані додатків.", + "sectionData": "Дані", + "notifFinalizingTrack": "Фіналізація {trackName}", + "snackbarFileNotFound": "Файл не знайдено", + "extensionQualityOptions": "Варіанти якості", + "extensionVerificationBrowserSubtitleExternal": "Open challenges in the default browser first", + "backupInvalidFile": "This file is not a valid SpotiFLAC backup", + "storeRepoDialogTitle": "Репозиторій розширень", + "extensionsSearchProviderDescription": "Виберіть, який сервіс використовувати для пошуку треків", + "albumFolderAlbumOnly": "Тільки альбом", + "nowPlayingOpenInExternalPlayer": "Open in external player", + "cueSplitButton": "Розділити на треки" } diff --git a/lib/l10n/arb/app_zh_CN.arb b/lib/l10n/arb/app_zh_CN.arb index b2da9e25..831e7f9b 100644 --- a/lib/l10n/arb/app_zh_CN.arb +++ b/lib/l10n/arb/app_zh_CN.arb @@ -1,7 +1,7 @@ { "@@locale": "zh_CN", "@@last_modified": "2026-04-28", - "appName": "SpotiFLAC Mobile", + "appName": "SpotiFLAC 移动版", "@appName": { "description": "App name - DO NOT TRANSLATE" }, @@ -29,6 +29,14 @@ "@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": "支持:歌曲、专辑、播放列表、艺人网址", "@homeSupports": { "description": "Info text about supported URL types" @@ -166,15 +174,7 @@ "@optionsDefaultSearchTabSubtitle": { "description": "Subtitle for the preferred default search tab setting" }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, - "optionsSwitchBack": "Choose the default search provider to switch back from an extension", + "optionsSwitchBack": "选择要从扩展中返回的默认搜索服务器", "@optionsSwitchBack": { "description": "Hint to switch back from extension search" }, @@ -190,11 +190,11 @@ "@optionsUseExtensionProviders": { "description": "Legacy setting label for extension download providers" }, - "optionsUseExtensionProvidersOn": "Extension providers are enabled", + "optionsUseExtensionProvidersOn": "扩展提供商已启用", "@optionsUseExtensionProvidersOn": { "description": "Status when extension providers enabled" }, - "optionsUseExtensionProvidersOff": "Extension providers are required", + "optionsUseExtensionProvidersOff": "需要扩展提供商", "@optionsUseExtensionProvidersOff": { "description": "Legacy status when extension providers would be disabled" }, @@ -214,7 +214,7 @@ "@optionsMaxQualityCoverSubtitle": { "description": "Subtitle for max quality cover" }, - "optionsReplayGain": "ReplayGain", + "optionsReplayGain": "回放增益", "@optionsReplayGain": { "description": "Title for ReplayGain setting toggle" }, @@ -226,35 +226,93 @@ "@optionsReplayGainSubtitleOff": { "description": "Subtitle when ReplayGain is disabled" }, + "trackReplayGain": "重新扫描ReplayGain ", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainSubtitle": "分析响度并写入ReplayGain标签", + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "trackReplayGainScanning": "正在分析声音……", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain标签已添加", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "添加ReplayGain标签失败", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchConfirmTitle": "添加ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "replayGainBatchConfirmMessage": "要分析响度并向 {count} 首歌曲写入 ReplayGain 标签吗?", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchAnalyzing": "正在分析ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "replayGainBatchSuccess": "已为 {success}/{total} 首歌曲添加 ReplayGain", + "@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": "Choose how multiple artists are written into embedded tags.", + "optionsArtistTagModeDescription": "选择将多位艺人写入嵌入标签的方式", "@optionsArtistTagModeDescription": { "description": "Bottom-sheet description for artist tag mode setting" }, - "optionsArtistTagModeJoined": "Single joined value", + "optionsArtistTagModeJoined": "合并为单个值", "@optionsArtistTagModeJoined": { "description": "Artist tag mode option that joins multiple artists into one value" }, - "optionsArtistTagModeJoinedSubtitle": "Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.", + "optionsArtistTagModeJoinedSubtitle": "写一个ARTIST 值,如“艺术家A,艺人B”,以实现最大兼容性。", "@optionsArtistTagModeJoinedSubtitle": { "description": "Subtitle for joined artist tag mode" }, - "optionsArtistTagModeSplitVorbis": "Split tags for FLAC/Opus", + "optionsArtistTagModeSplitVorbis": "用于 FLAC/Opus 的拆分标签", "@optionsArtistTagModeSplitVorbis": { "description": "Artist tag mode option that writes repeated ARTIST tags for Vorbis formats" }, - "optionsArtistTagModeSplitVorbisSubtitle": "Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.", + "optionsArtistTagModeSplitVorbisSubtitle": "为 FLAC 和 Opus 的每位艺人各写入一个艺人标签;MP3 和 M4A 保持合并", "@optionsArtistTagModeSplitVorbisSubtitle": { "description": "Subtitle for split Vorbis artist tag mode" }, - "optionsExtensionStore": "Extension Repo", + "optionsExtensionStore": "扩展仓库", "@optionsExtensionStore": { "description": "Show/hide store tab" }, - "optionsExtensionStoreSubtitle": "Show Repo tab in navigation", + "optionsExtensionStoreSubtitle": "在导航中显示仓库标签页", "@optionsExtensionStoreSubtitle": { "description": "Subtitle for extension store toggle" }, @@ -357,7 +415,7 @@ "@extensionsUninstall": { "description": "Uninstall extension button" }, - "storeTitle": "Extension Repo", + "storeTitle": "扩展仓库地址", "@storeTitle": { "description": "Store screen title" }, @@ -417,7 +475,7 @@ "@aboutPCSource": { "description": "Link to PC GitHub repo" }, - "aboutKeepAndroidOpen": "Keep Android Open", + "aboutKeepAndroidOpen": "Keep Android Open(保持安卓开放)", "@aboutKeepAndroidOpen": { "description": "Link to Keep Android Open campaign website" }, @@ -429,31 +487,31 @@ "@aboutReportIssueSubtitle": { "description": "Subtitle for report issue" }, - "aboutFeatureRequest": "Feature request", + "aboutFeatureRequest": "功能建议", "@aboutFeatureRequest": { "description": "Link to suggest features" }, - "aboutFeatureRequestSubtitle": "Suggest new features for the app", + "aboutFeatureRequestSubtitle": "为应用建议新功能", "@aboutFeatureRequestSubtitle": { "description": "Subtitle for feature request" }, - "aboutTelegramChannel": "Telegram Channel", + "aboutTelegramChannel": "Telegram 频道", "@aboutTelegramChannel": { "description": "Link to Telegram channel" }, - "aboutTelegramChannelSubtitle": "Announcements and updates", + "aboutTelegramChannelSubtitle": "公告和更新", "@aboutTelegramChannelSubtitle": { "description": "Subtitle for Telegram channel" }, - "aboutTelegramChat": "Telegram Community", + "aboutTelegramChat": "Telegram 社区", "@aboutTelegramChat": { "description": "Link to Telegram chat group" }, - "aboutTelegramChatSubtitle": "Chat with other users", + "aboutTelegramChatSubtitle": "与其他用户聊天", "@aboutTelegramChatSubtitle": { "description": "Subtitle for Telegram chat" }, - "aboutSocial": "Social", + "aboutSocial": "社交", "@aboutSocial": { "description": "Section for social links" }, @@ -461,43 +519,43 @@ "@aboutApp": { "description": "Section for app info" }, - "aboutVersion": "Version", + "aboutVersion": "版本", "@aboutVersion": { "description": "Version info label" }, - "aboutBinimumDesc": "The creator of QQDL & HiFi API. This project helped shape lossless download support.", + "aboutBinimumDesc": "QQDL 和 HiFi API 的创建者。本项目帮助完善了无损下载支持。", "@aboutBinimumDesc": { "description": "Credit description for binimum" }, - "aboutSachinsenalDesc": "The original HiFi project creator. A foundation for lossless-source integration.", + "aboutSachinsenalDesc": "原 HiFi 项目创建者,为无损来源集成奠定了基础。", "@aboutSachinsenalDesc": { "description": "Credit description for sachinsenal0x64" }, - "aboutSjdonadoDesc": "Creator of I Don't Have Spotify (IDHS). The fallback link resolver that saves the day!", + "aboutSjdonadoDesc": "I Don't Have Spotify (IDHS) 的创建者。备用链接解析器很有帮助!", "@aboutSjdonadoDesc": { "description": "Credit description for sjdonado" }, - "aboutAppDescription": "Search music metadata, manage extensions, and organize your library.", + "aboutAppDescription": "搜索音乐元数据、管理扩展并整理你的乐库。", "@aboutAppDescription": { "description": "App description in header card" }, - "artistAlbums": "Albums", + "artistAlbums": "专辑", "@artistAlbums": { "description": "Section header for artist albums" }, - "artistSingles": "Singles & EPs", + "artistSingles": "单曲 & EP", "@artistSingles": { "description": "Section header for singles/EPs" }, - "artistCompilations": "Compilations", + "artistCompilations": "合辑", "@artistCompilations": { "description": "Section header for compilations" }, - "artistPopular": "Popular", + "artistPopular": "热门", "@artistPopular": { "description": "Section header for popular/top tracks" }, - "artistMonthlyListeners": "{count} monthly listeners", + "artistMonthlyListeners": "{count} 位月听众", "@artistMonthlyListeners": { "description": "Monthly listener count display", "placeholders": { @@ -507,47 +565,47 @@ } } }, - "trackMetadataService": "Service", + "trackMetadataService": "服务商", "@trackMetadataService": { "description": "Metadata field - download service used" }, - "trackMetadataPlay": "Play", + "trackMetadataPlay": "播放", "@trackMetadataPlay": { "description": "Action button - play track" }, - "trackMetadataShare": "Share", + "trackMetadataShare": "分享", "@trackMetadataShare": { "description": "Action button - share track" }, - "trackMetadataDelete": "Delete", + "trackMetadataDelete": "删除", "@trackMetadataDelete": { "description": "Action button - delete track" }, - "setupGrantPermission": "Grant Permission", + "setupGrantPermission": "授予权限", "@setupGrantPermission": { "description": "Button to request permission" }, - "setupSkip": "Skip for now", + "setupSkip": "暂时跳过", "@setupSkip": { "description": "Skip current step button" }, - "setupStorageAccessRequired": "Storage Access Required", + "setupStorageAccessRequired": "需要存储访问权限", "@setupStorageAccessRequired": { "description": "Title when storage access needed" }, - "setupStorageAccessMessageAndroid11": "Android 11+ requires \"All files access\" permission to save files to your chosen download folder.", + "setupStorageAccessMessageAndroid11": "Android 11+ 需要“所有文件访问权限”才能将文件保存到你选择的下载文件夹。", "@setupStorageAccessMessageAndroid11": { "description": "Android 11+ specific explanation" }, - "setupOpenSettings": "Open Settings", + "setupOpenSettings": "打开设置", "@setupOpenSettings": { "description": "Button to open system settings" }, - "setupPermissionDeniedMessage": "Permission denied. Please grant all permissions to continue.", + "setupPermissionDeniedMessage": "权限被拒绝。请授予所有权限以继续。", "@setupPermissionDeniedMessage": { "description": "Error when permission denied" }, - "setupPermissionRequired": "{permissionType} Permission Required", + "setupPermissionRequired": "需要 {permissionType} 权限", "@setupPermissionRequired": { "description": "Generic permission required title", "placeholders": { @@ -557,7 +615,7 @@ } } }, - "setupPermissionRequiredMessage": "{permissionType} permission is required for the best experience. You can change this later in Settings.", + "setupPermissionRequiredMessage": "为了获得最佳体验,需要 {permissionType} 权限。你可以稍后在设置中更改。", "@setupPermissionRequiredMessage": { "description": "Generic permission required message", "placeholders": { @@ -566,67 +624,67 @@ } } }, - "setupUseDefaultFolder": "Use Default Folder?", + "setupUseDefaultFolder": "使用默认文件夹?", "@setupUseDefaultFolder": { "description": "Dialog title for default folder" }, - "setupNoFolderSelected": "No folder selected. Would you like to use the default Music folder?", + "setupNoFolderSelected": "未选择文件夹。要使用默认音乐文件夹吗?", "@setupNoFolderSelected": { "description": "Prompt when no folder selected" }, - "setupUseDefault": "Use Default", + "setupUseDefault": "使用默认", "@setupUseDefault": { "description": "Button to use default folder" }, - "setupDownloadLocationTitle": "Download Location", + "setupDownloadLocationTitle": "下载位置", "@setupDownloadLocationTitle": { "description": "Download location dialog title" }, - "setupDownloadLocationIosMessage": "On iOS, downloads are saved to the app's Documents folder. You can access them via the Files app.", + "setupDownloadLocationIosMessage": "在 iOS 上,下载内容会保存到应用的 Documents 文件夹。你可以通过“文件”应用访问。", "@setupDownloadLocationIosMessage": { "description": "iOS-specific folder info" }, - "setupAppDocumentsFolder": "App Documents Folder", + "setupAppDocumentsFolder": "应用程序文档文件夹", "@setupAppDocumentsFolder": { "description": "iOS documents folder option" }, - "setupAppDocumentsFolderSubtitle": "Recommended - accessible via Files app", + "setupAppDocumentsFolderSubtitle": "推荐 - 可通过“文件”应用访问", "@setupAppDocumentsFolderSubtitle": { "description": "Subtitle for documents folder" }, - "setupChooseFromFiles": "Choose from Files", + "setupChooseFromFiles": "从“文件”中选择", "@setupChooseFromFiles": { "description": "iOS file picker option" }, - "setupChooseFromFilesSubtitle": "Select iCloud or other location", + "setupChooseFromFilesSubtitle": "选择 iCloud 或其他位置", "@setupChooseFromFilesSubtitle": { "description": "Subtitle for file picker" }, - "setupIosEmptyFolderWarning": "iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.", + "setupIosEmptyFolderWarning": "iOS 限制:无法选择空文件夹。请选择至少包含一个文件的文件夹。", "@setupIosEmptyFolderWarning": { "description": "iOS folder selection warning" }, - "setupIcloudNotSupported": "iCloud Drive is not supported. Please use the app Documents folder.", + "setupIcloudNotSupported": "不支持 iCloud Drive。请使用应用 Documents 文件夹。", "@setupIcloudNotSupported": { "description": "Error when user selects iCloud Drive on iOS" }, - "setupDownloadInFlac": "Download Spotify tracks in FLAC", + "setupDownloadInFlac": "以 FLAC 下载 Spotify 曲目", "@setupDownloadInFlac": { "description": "App tagline in setup" }, - "setupStorageGranted": "Storage Permission Granted!", + "setupStorageGranted": "已授予存储权限!", "@setupStorageGranted": { "description": "Success message for storage permission" }, - "setupStorageRequired": "Storage Permission Required", + "setupStorageRequired": "需要存储权限", "@setupStorageRequired": { "description": "Title when storage permission needed" }, - "setupStorageDescription": "SpotiFLAC needs storage permission to save your downloaded music files.", + "setupStorageDescription": "SpotiFLAC 需要存储权限来保存下载的音乐文件。", "@setupStorageDescription": { "description": "Explanation for storage permission" }, - "setupNotificationGranted": "Notification Permission Granted!", + "setupNotificationGranted": "已授予通知权限!", "@setupNotificationGranted": { "description": "Success message for notification permission" }, @@ -650,95 +708,119 @@ "@setupEnableNotifications": { "description": "Button to enable notifications" }, - "setupNotificationBackgroundDescription": "Get notified about download progress and completion. This helps you track downloads when the app is in background.", + "setupNotificationBackgroundDescription": "接收下载进度和完成通知,方便你在应用后台时跟踪下载。", "@setupNotificationBackgroundDescription": { "description": "Detailed notification explanation" }, - "setupSkipForNow": "Skip for now", + "setupSkipForNow": "暂时跳过", "@setupSkipForNow": { "description": "Skip button text" }, - "setupNext": "Next", + "setupNext": "下一步", "@setupNext": { "description": "Next button text" }, - "setupGetStarted": "Get Started", + "setupGetStarted": "开始使用", "@setupGetStarted": { "description": "Final setup button" }, - "setupAllowAccessToManageFiles": "Please enable \"Allow access to manage all files\" in the next screen.", + "setupAllowAccessToManageFiles": "请在下一个屏幕中启用“允许管理所有文件”。", "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, - "dialogCancel": "Cancel", + "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": "Save", + "dialogSave": "保存", "@dialogSave": { "description": "Dialog button - save changes" }, - "dialogDelete": "Delete", + "dialogDelete": "删除", "@dialogDelete": { "description": "Dialog button - delete item" }, - "dialogRetry": "Retry", + "dialogRetry": "重试", "@dialogRetry": { "description": "Dialog button - retry action" }, - "dialogClear": "Clear", + "dialogClear": "清空", "@dialogClear": { "description": "Dialog button - clear items" }, - "dialogDone": "Done", + "dialogDone": "完成", "@dialogDone": { "description": "Dialog button - action completed" }, - "dialogImport": "Import", + "dialogImport": "导入", "@dialogImport": { "description": "Dialog button - import data" }, - "dialogDownload": "Download", + "dialogDownload": "下载", "@dialogDownload": { "description": "Confirm button in Download All dialog" }, - "dialogDiscard": "Discard", + "previewPlay": "Play preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, + "dialogDiscard": "放弃", "@dialogDiscard": { "description": "Dialog button - discard changes" }, - "dialogRemove": "Remove", + "dialogRemove": "移除", "@dialogRemove": { "description": "Dialog button - remove item" }, - "dialogUninstall": "Uninstall", + "dialogUninstall": "卸载", "@dialogUninstall": { "description": "Dialog button - uninstall extension" }, - "dialogDiscardChanges": "Discard Changes?", + "dialogDiscardChanges": "放弃更改?", "@dialogDiscardChanges": { "description": "Dialog title - unsaved changes warning" }, - "dialogUnsavedChanges": "You have unsaved changes. Do you want to discard them?", + "dialogUnsavedChanges": "您有未保存的更改,要放弃它们吗?", "@dialogUnsavedChanges": { "description": "Dialog message - unsaved changes" }, - "dialogClearAll": "Clear All", + "dialogClearAll": "全部清除", "@dialogClearAll": { "description": "Dialog title - clear all items" }, - "dialogRemoveExtension": "Remove Extension", + "dialogRemoveExtension": "移除扩展", "@dialogRemoveExtension": { "description": "Dialog title - uninstall extension" }, - "dialogRemoveExtensionMessage": "Are you sure you want to remove this extension? This cannot be undone.", + "dialogRemoveExtensionMessage": "确定要移除此扩展吗?此操作无法撤销。", "@dialogRemoveExtensionMessage": { "description": "Dialog message - uninstall confirmation" }, - "dialogUninstallExtension": "Uninstall Extension?", + "dialogUninstallExtension": "卸载扩展?", "@dialogUninstallExtension": { "description": "Dialog title - uninstall extension" }, - "dialogUninstallExtensionMessage": "Are you sure you want to remove {extensionName}?", + "dialogUninstallExtensionMessage": "确定要移除 {extensionName} 吗?", "@dialogUninstallExtensionMessage": { "description": "Dialog message - uninstall specific extension", "placeholders": { @@ -747,19 +829,19 @@ } } }, - "dialogClearHistoryTitle": "Clear History", + "dialogClearHistoryTitle": "清除历史", "@dialogClearHistoryTitle": { "description": "Dialog title - clear download history" }, - "dialogClearHistoryMessage": "Are you sure you want to clear all download history? This cannot be undone.", + "dialogClearHistoryMessage": "您确定要清除所有下载记录吗?此操作无法撤销!", "@dialogClearHistoryMessage": { "description": "Dialog message - clear history confirmation" }, - "dialogDeleteSelectedTitle": "Delete Selected", + "dialogDeleteSelectedTitle": "删除所选项", "@dialogDeleteSelectedTitle": { "description": "Dialog title - delete selected items" }, - "dialogDeleteSelectedMessage": "Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.", + "dialogDeleteSelectedMessage": "确定要从历史记录中删除 {count} {count, plural, =1{首歌曲} other{首歌曲}}吗?\n\n这也会从存储中删除文件。", "@dialogDeleteSelectedMessage": { "description": "Dialog message - delete selected tracks", "placeholders": { @@ -768,12 +850,12 @@ } } }, - "dialogImportPlaylistTitle": "Import Playlist", + "dialogImportPlaylistTitle": "导入播放列表", "@dialogImportPlaylistTitle": { "description": "Dialog title - import CSV playlist" }, - "dialogImportPlaylistMessage": "Found {count} tracks in CSV. Add them to download queue?", - "csvImportTracks": "{count} tracks from CSV", + "dialogImportPlaylistMessage": "在 CSV 中找到 {count} 首歌曲。要将它们加入下载队列吗?", + "csvImportTracks": "CSV 中的 {count} 首歌曲", "@csvImportTracks": { "description": "Label shown in quality picker for CSV import", "placeholders": { @@ -790,7 +872,7 @@ } } }, - "snackbarAddedToQueue": "Added \"{trackName}\" to queue", + "snackbarAddedToQueue": "已将“{trackName}”加入队列", "@snackbarAddedToQueue": { "description": "Snackbar - track added to download queue", "placeholders": { @@ -799,7 +881,7 @@ } } }, - "snackbarAddedTracksToQueue": "Added {count} tracks to queue", + "snackbarAddedTracksToQueue": "已将 {count} 首歌曲加入队列", "@snackbarAddedTracksToQueue": { "description": "Snackbar - multiple tracks added to queue", "placeholders": { @@ -808,7 +890,7 @@ } } }, - "snackbarAlreadyDownloaded": "\"{trackName}\" already downloaded", + "snackbarAlreadyDownloaded": "“{trackName}”已下载", "@snackbarAlreadyDownloaded": { "description": "Snackbar - track already exists", "placeholders": { @@ -817,7 +899,7 @@ } } }, - "snackbarAlreadyInLibrary": "\"{trackName}\" already exists in your library", + "snackbarAlreadyInLibrary": "“{trackName}”已存在于你的乐库中", "@snackbarAlreadyInLibrary": { "description": "Snackbar - track already exists in local library", "placeholders": { @@ -826,19 +908,19 @@ } } }, - "snackbarHistoryCleared": "History cleared", + "snackbarHistoryCleared": "历史记录已清除", "@snackbarHistoryCleared": { "description": "Snackbar - history deleted" }, - "snackbarCredentialsSaved": "Credentials saved", + "snackbarCredentialsSaved": "凭据已保存", "@snackbarCredentialsSaved": { "description": "Snackbar - Spotify credentials saved" }, - "snackbarCredentialsCleared": "Credentials cleared", + "snackbarCredentialsCleared": "凭据已清除", "@snackbarCredentialsCleared": { "description": "Snackbar - Spotify credentials removed" }, - "snackbarDeletedTracks": "Deleted {count} {count, plural, =1{track} other{tracks}}", + "snackbarDeletedTracks": "已删除 {count} {count, plural, =1{首歌曲} other{首歌曲}}", "@snackbarDeletedTracks": { "description": "Snackbar - tracks deleted", "placeholders": { @@ -847,7 +929,7 @@ } } }, - "snackbarCannotOpenFile": "Cannot open file: {error}", + "snackbarCannotOpenFile": "无法打开文件:{error}", "@snackbarCannotOpenFile": { "description": "Snackbar - file open error", "placeholders": { @@ -856,11 +938,11 @@ } } }, - "snackbarFillAllFields": "Please fill all fields", + "snackbarFillAllFields": "请填写所有字段", "@snackbarFillAllFields": { "description": "Snackbar - validation error" }, - "snackbarViewQueue": "View Queue", + "snackbarViewQueue": "查看队列", "@snackbarViewQueue": { "description": "Snackbar action - view download queue" }, @@ -928,6 +1010,10 @@ "@errorNoTracksFound": { "description": "Error - search returned no results" }, + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, "errorUrlNotRecognized": "Link not recognized", "@errorUrlNotRecognized": { "description": "Error title - URL not handled by any extension or service" @@ -1554,6 +1640,15 @@ "@trackCopyLyrics": { "description": "Action - copy lyrics to clipboard" }, + "trackLyricsSource": "Source: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, "trackLyricsNotAvailable": "Lyrics not available for this track", "@trackLyricsNotAvailable": { "description": "Message when lyrics not found" @@ -1844,6 +1939,30 @@ "@extensionsInstalledSuccess": { "description": "Success message after install" }, + "extensionsInstalledCount": "{count} extensions installed successfully", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", + "@extensionsInstallPartialSuccess": { + "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": "Download Priority", "@extensionsDownloadPriority": { "description": "Setting - download provider order" @@ -1938,15 +2057,23 @@ }, "downloadLossyMp3": "MP3 320kbps", "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" + "description": "Lossy format option - MP3 320kbps" }, "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", "@downloadLossyMp3Subtitle": { "description": "Subtitle for MP3 320kbps lossy option" }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, "downloadLossyOpus256": "Opus 256kbps", "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" + "description": "Lossy format option - Opus 256kbps" }, "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", "@downloadLossyOpus256Subtitle": { @@ -1954,7 +2081,7 @@ }, "downloadLossyOpus128": "Opus 128kbps", "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" + "description": "Lossy format option - Opus 128kbps" }, "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", "@downloadLossyOpus128Subtitle": { @@ -3285,6 +3412,10 @@ "@collectionLoved": { "description": "Custom folder for favorite tracks" }, + "collectionFavoriteArtists": "Favorite Artists", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, "collectionPlaylists": "Playlists", "@collectionPlaylists": { "description": "Custom user playlists folder" @@ -3318,6 +3449,15 @@ } } }, + "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", @@ -3389,6 +3529,14 @@ "@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" @@ -3450,6 +3598,24 @@ } } }, + "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" @@ -3466,6 +3632,14 @@ "@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" @@ -3569,15 +3743,15 @@ }, "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" + "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 naming" + "description": "Subtitle when track artist is used for folder names" }, "lyricsProvidersTitle": "Lyrics Provider Priority", "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "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": { @@ -3637,6 +3811,10 @@ "@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" @@ -3659,12 +3837,175 @@ }, "settingsDonate": "Support Development", "@settingsDonate": { - "description": "Settings menu item - donate" + "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" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "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" + }, + "backupRestoring": "Restoring backup...", + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "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" + }, + "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 store.", + "@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" @@ -3751,11 +4092,11 @@ }, "downloadLocationSubtitle": "Choose where to save your downloaded tracks", "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "description": "Subtitle shown in the download location picker sheet" }, "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "description": "Storage mode option - app-managed folder" }, "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", "@storageModeAppFolderSubtitle": { @@ -3763,7 +4104,7 @@ }, "storageModeSaf": "Custom Folder (SAF)", "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "description": "Storage mode option - Storage Access Framework" }, "storageModeSafSubtitle": "Pick any folder, including SD card", "@storageModeSafSubtitle": { @@ -3771,7 +4112,7 @@ }, "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "description": "Description shown in filename format editor" }, "downloadFilenameInsertTag": "Tap to insert tag:", "@downloadFilenameInsertTag": { @@ -3779,11 +4120,11 @@ }, "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "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 disabled" + "description": "Subtitle when separate singles folder is off" }, "downloadArtistNameFilters": "Artist Name Filters", "@downloadArtistNameFilters": { @@ -3791,135 +4132,159 @@ }, "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" + "description": "Setting to create a subfolder per playlist source" }, "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" + "description": "Subtitle when playlist folder is enabled" }, "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" + "description": "Subtitle when playlist folder is disabled" }, "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" + "description": "Subtitle when folder organization is already set to playlist" }, "downloadSongLinkRegion": "SongLink Region", "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" + "description": "Setting for SongLink region used during fallback resolution" }, "downloadNetworkCompatibilityMode": "Network Compatibility Mode", "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" + "description": "Setting for legacy TLS/network handling" }, "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" + "description": "Subtitle when network compatibility mode is on" }, "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" + "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": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" + "description": "Subtitle when quality picker is disabled due to extension service" }, "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" + "description": "Legacy info shown when a provider does not expose quality options" }, "downloadEmbedLyricsDisabled": "Enable metadata embedding first", "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" }, "downloadNeteaseIncludeTranslation": "Netease: Include Translation", "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" + "description": "Setting to include translated lyrics from Netease" }, "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" + "description": "Subtitle when Netease translation is on" }, "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" + "description": "Subtitle when Netease translation is off" }, "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" + "description": "Setting to include romanized lyrics from Netease" }, "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" + "description": "Subtitle when Netease romanization is on" }, "downloadNeteaseIncludeRomanizationDisabled": "No romanization", "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" + "description": "Subtitle when Netease romanization is off" }, "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" + "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 word-by-word is enabled" + "description": "Subtitle when multi-person lyrics is on" }, "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" + "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 title for Musixmatch language preference" + "description": "Setting for Musixmatch lyrics translation language" }, "downloadMusixmatchLanguageAuto": "Auto (original language)", "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" + "description": "Subtitle when no language is set" }, "downloadFilterContributing": "Filter Contributing Artists", "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" + "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 enabled" + "description": "Subtitle when contributing artist filter is on" }, "downloadFilterContributingDisabled": "Full Album Artist string used", "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" + "description": "Subtitle when contributing artist filter is off" }, "downloadProvidersNoneEnabled": "No providers enabled", "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" + "description": "Shown when no lyrics providers are active" }, "downloadMusixmatchLanguageCode": "Language code", "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" + "description": "Label for Musixmatch language input field" }, "downloadMusixmatchLanguageHint": "e.g. en, de, ja", "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" + "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 the Musixmatch language picker" + "description": "Description in Musixmatch language picker" }, "downloadMusixmatchAuto": "Auto", "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" + "description": "Button to clear Musixmatch language (use auto)" }, "downloadNetworkAnySubtitle": "Use WiFi or mobile data", "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" + "description": "Subtitle for any-network option in picker" }, "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" + "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 the SongLink region picker" + "description": "Description in SongLink region picker" }, "snackbarUnsupportedAudioFormat": "Unsupported audio format", "@snackbarUnsupportedAudioFormat": { @@ -4143,6 +4508,18 @@ "@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" @@ -4175,6 +4552,30 @@ "@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" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, "audioAnalysisSamples": "Samples", "@audioAnalysisSamples": { "description": "Total samples metric label" @@ -4206,12 +4607,20 @@ }, "extensionsHomeFeedAuto": "Auto", "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" + "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", @@ -4374,6 +4783,31 @@ } } }, + "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" @@ -4493,271 +4927,6 @@ "@notifUpdateFailedBody": { "description": "Notification body when app update download fails" }, - "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" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "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" - }, - "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" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "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" - } - } - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "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" - }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "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" - }, - "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" - } - } - }, "searchTracks": "Tracks", "@searchTracks": { "description": "Search filter label - tracks" @@ -5070,6 +5239,86 @@ } } }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "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" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "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" @@ -5537,5 +5786,423 @@ "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": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@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" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "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" + }, + "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" } -} +} \ No newline at end of file diff --git a/lib/l10n/arb/app_zh_TW.arb b/lib/l10n/arb/app_zh_TW.arb index 3e357377..d293cd0f 100644 --- a/lib/l10n/arb/app_zh_TW.arb +++ b/lib/l10n/arb/app_zh_TW.arb @@ -29,6 +29,14 @@ "@homeSubtitle": { "description": "Subtitle shown below search box" }, + "homeEmptyTitle": "No search providers yet", + "@homeEmptyTitle": { + "description": "Title shown on home when no providers are available yet" + }, + "homeEmptySubtitle": "Install an extension to continue.", + "@homeEmptySubtitle": { + "description": "Subtitle shown on home when no providers are available yet" + }, "homeSupports": "Supports: Track, Album, Playlist, Artist URLs", "@homeSupports": { "description": "Info text about supported URL types" @@ -166,14 +174,6 @@ "@optionsDefaultSearchTabSubtitle": { "description": "Subtitle for the preferred default search tab setting" }, - "optionsDefaultSearchTabAlbums": "Albums", - "@optionsDefaultSearchTabAlbums": { - "description": "Default search tab option - Albums tab" - }, - "optionsDefaultSearchTabTracks": "Tracks", - "@optionsDefaultSearchTabTracks": { - "description": "Default search tab option - Tracks tab" - }, "optionsSwitchBack": "Choose the default search provider to switch back from an extension", "@optionsSwitchBack": { "description": "Hint to switch back from extension search" @@ -226,6 +226,64 @@ "@optionsReplayGainSubtitleOff": { "description": "Subtitle when ReplayGain is disabled" }, + "trackReplayGain": "Rescan ReplayGain", + "@trackReplayGain": { + "description": "Three-dot menu option to scan loudness and write ReplayGain tags" + }, + "trackReplayGainSubtitle": "Analyze loudness and write ReplayGain tags", + "@trackReplayGainSubtitle": { + "description": "Subtitle for the rescan ReplayGain menu option" + }, + "trackReplayGainScanning": "Analyzing loudness...", + "@trackReplayGainScanning": { + "description": "Snackbar/progress message while scanning ReplayGain for a single track" + }, + "trackReplayGainSuccess": "ReplayGain tags added", + "@trackReplayGainSuccess": { + "description": "Snackbar message after ReplayGain tags written for a single track" + }, + "trackReplayGainFailed": "Failed to add ReplayGain tags", + "@trackReplayGainFailed": { + "description": "Snackbar message when ReplayGain scan/write fails" + }, + "selectionReplayGainCount": "ReplayGain ({count})", + "@selectionReplayGainCount": { + "description": "Batch selection action button label for ReplayGain", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchConfirmTitle": "Add ReplayGain", + "@replayGainBatchConfirmTitle": { + "description": "Title of the batch ReplayGain confirmation dialog" + }, + "replayGainBatchConfirmMessage": "Analyze loudness and write ReplayGain tags to {count} track(s)?", + "@replayGainBatchConfirmMessage": { + "description": "Message of the batch ReplayGain confirmation dialog", + "placeholders": { + "count": { + "type": "int" + } + } + }, + "replayGainBatchAnalyzing": "Analyzing ReplayGain...", + "@replayGainBatchAnalyzing": { + "description": "Progress dialog title while batch scanning ReplayGain" + }, + "replayGainBatchSuccess": "ReplayGain added to {success} of {total} tracks", + "@replayGainBatchSuccess": { + "description": "Snackbar after batch ReplayGain completes", + "placeholders": { + "success": { + "type": "int" + }, + "total": { + "type": "int" + } + } + }, "optionsArtistTagMode": "Artist Tag Mode", "@optionsArtistTagMode": { "description": "Setting title for how artist metadata is written into files" @@ -670,6 +728,18 @@ "@setupAllowAccessToManageFiles": { "description": "Instruction for file access permission" }, + "setupLanguageTitle": "Choose Language", + "@setupLanguageTitle": { + "description": "Title for the language selection step in setup" + }, + "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", + "@setupLanguageDescription": { + "description": "Description for the language selection step in setup" + }, + "setupLanguageSystemDefault": "System Default", + "@setupLanguageSystemDefault": { + "description": "Option to use the system language" + }, "dialogCancel": "Cancel", "@dialogCancel": { "description": "Dialog button - cancel action" @@ -702,6 +772,18 @@ "@dialogDownload": { "description": "Confirm button in Download All dialog" }, + "previewPlay": "Play preview", + "@previewPlay": { + "description": "Tooltip for the button that plays a short track preview snippet" + }, + "previewStop": "Stop preview", + "@previewStop": { + "description": "Tooltip for the button that stops the playing track preview snippet" + }, + "previewUnavailable": "Preview unavailable", + "@previewUnavailable": { + "description": "Snackbar shown when a track preview snippet cannot be played" + }, "dialogDiscard": "Discard", "@dialogDiscard": { "description": "Dialog button - discard changes" @@ -928,6 +1010,10 @@ "@errorNoTracksFound": { "description": "Error - search returned no results" }, + "searchEmptyResultSubtitle": "Try another keyword", + "@searchEmptyResultSubtitle": { + "description": "Subtitle shown under the empty search result state on the home screen" + }, "errorUrlNotRecognized": "Link not recognized", "@errorUrlNotRecognized": { "description": "Error title - URL not handled by any extension or service" @@ -1554,6 +1640,15 @@ "@trackCopyLyrics": { "description": "Action - copy lyrics to clipboard" }, + "trackLyricsSource": "Source: {source}", + "@trackLyricsSource": { + "description": "Label showing the lyrics source/provider", + "placeholders": { + "source": { + "type": "String" + } + } + }, "trackLyricsNotAvailable": "Lyrics not available for this track", "@trackLyricsNotAvailable": { "description": "Message when lyrics not found" @@ -1844,6 +1939,30 @@ "@extensionsInstalledSuccess": { "description": "Success message after install" }, + "extensionsInstalledCount": "{count} extensions installed successfully", + "@extensionsInstalledCount": { + "description": "Success message after installing multiple extensions", + "placeholders": { + "count": { + "type": "int", + "description": "Number of installed extensions" + } + } + }, + "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", + "@extensionsInstallPartialSuccess": { + "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": "Download Priority", "@extensionsDownloadPriority": { "description": "Setting - download provider order" @@ -1938,15 +2057,23 @@ }, "downloadLossyMp3": "MP3 320kbps", "@downloadLossyMp3": { - "description": "lossy format option - MP3 320kbps" + "description": "Lossy format option - MP3 320kbps" }, "downloadLossyMp3Subtitle": "Best compatibility, ~10MB per track", "@downloadLossyMp3Subtitle": { "description": "Subtitle for MP3 320kbps lossy option" }, + "downloadLossyAac": "AAC/M4A 320kbps", + "@downloadLossyAac": { + "description": "Lossy format option - AAC in M4A container at 320kbps" + }, + "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", + "@downloadLossyAacSubtitle": { + "description": "Subtitle for AAC/M4A 320kbps lossy option" + }, "downloadLossyOpus256": "Opus 256kbps", "@downloadLossyOpus256": { - "description": "lossy format option - Opus 256kbps" + "description": "Lossy format option - Opus 256kbps" }, "downloadLossyOpus256Subtitle": "Best quality Opus, ~8MB per track", "@downloadLossyOpus256Subtitle": { @@ -1954,7 +2081,7 @@ }, "downloadLossyOpus128": "Opus 128kbps", "@downloadLossyOpus128": { - "description": "lossy format option - Opus 128kbps" + "description": "Lossy format option - Opus 128kbps" }, "downloadLossyOpus128Subtitle": "Smallest size, ~4MB per track", "@downloadLossyOpus128Subtitle": { @@ -3285,6 +3412,10 @@ "@collectionLoved": { "description": "Custom folder for favorite tracks" }, + "collectionFavoriteArtists": "Favorite Artists", + "@collectionFavoriteArtists": { + "description": "Custom folder for favorite artists" + }, "collectionPlaylists": "Playlists", "@collectionPlaylists": { "description": "Custom user playlists folder" @@ -3318,6 +3449,15 @@ } } }, + "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", @@ -3389,6 +3529,14 @@ "@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" @@ -3450,6 +3598,24 @@ } } }, + "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" @@ -3466,6 +3632,14 @@ "@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" @@ -3569,15 +3743,15 @@ }, "downloadUseAlbumArtistForFoldersAlbumSubtitle": "Folder named after Album Artist tag", "@downloadUseAlbumArtistForFoldersAlbumSubtitle": { - "description": "Subtitle when Album Artist is used for folder naming" + "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 naming" + "description": "Subtitle when track artist is used for folder names" }, "lyricsProvidersTitle": "Lyrics Provider Priority", "@lyricsProvidersTitle": { - "description": "Title for the lyrics provider priority page" + "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": { @@ -3637,6 +3811,10 @@ "@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" @@ -3659,12 +3837,175 @@ }, "settingsDonate": "Support Development", "@settingsDonate": { - "description": "Settings menu item - donate" + "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" + }, + "backupCreating": "Creating backup...", + "@backupCreating": { + "description": "Progress text while a backup is being created" + }, + "backupCreated": "Backup created", + "@backupCreated": { + "description": "Snackbar after a backup file is created" + }, + "backupCreateFailed": "Failed to create backup", + "@backupCreateFailed": { + "description": "Snackbar when backup creation fails" + }, + "backupEmpty": "There is nothing to back up yet", + "@backupEmpty": { + "description": "Snackbar when there is no data to back up" + }, + "backupRestoreConfirmTitle": "Restore this backup?", + "@backupRestoreConfirmTitle": { + "description": "Confirmation dialog title before restoring a backup" + }, + "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" + }, + "backupRestoring": "Restoring backup...", + "@backupRestoring": { + "description": "Progress text while restoring a backup" + }, + "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" + }, + "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 store.", + "@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" @@ -3751,11 +4092,11 @@ }, "downloadLocationSubtitle": "Choose where to save your downloaded tracks", "@downloadLocationSubtitle": { - "description": "Subtitle text in Android download location bottom sheet" + "description": "Subtitle shown in the download location picker sheet" }, "storageModeAppFolder": "App Folder (Recommended)", "@storageModeAppFolder": { - "description": "Storage mode option - use legacy app folder" + "description": "Storage mode option - app-managed folder" }, "storageModeAppFolderSubtitle": "Saves to Music/SpotiFLAC by default", "@storageModeAppFolderSubtitle": { @@ -3763,7 +4104,7 @@ }, "storageModeSaf": "Custom Folder (SAF)", "@storageModeSaf": { - "description": "Storage mode option - use Android SAF picker" + "description": "Storage mode option - Storage Access Framework" }, "storageModeSafSubtitle": "Pick any folder, including SD card", "@storageModeSafSubtitle": { @@ -3771,7 +4112,7 @@ }, "downloadFilenameDescription": "Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.", "@downloadFilenameDescription": { - "description": "Description text in filename format bottom sheet" + "description": "Description shown in filename format editor" }, "downloadFilenameInsertTag": "Tap to insert tag:", "@downloadFilenameInsertTag": { @@ -3779,11 +4120,11 @@ }, "downloadSeparateSinglesEnabled": "Singles and EPs saved in a separate folder", "@downloadSeparateSinglesEnabled": { - "description": "Subtitle when separate singles folder is enabled" + "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 disabled" + "description": "Subtitle when separate singles folder is off" }, "downloadArtistNameFilters": "Artist Name Filters", "@downloadArtistNameFilters": { @@ -3791,135 +4132,159 @@ }, "downloadCreatePlaylistSourceFolder": "Playlist Source Folder", "@downloadCreatePlaylistSourceFolder": { - "description": "Setting title for adding a playlist folder prefix before the normal organization structure" + "description": "Setting to create a subfolder per playlist source" }, "downloadCreatePlaylistSourceFolderEnabled": "A subfolder is created for each playlist", "@downloadCreatePlaylistSourceFolderEnabled": { - "description": "Subtitle when playlist source folder prefix is enabled" + "description": "Subtitle when playlist folder is enabled" }, "downloadCreatePlaylistSourceFolderDisabled": "All tracks saved directly to download folder", "@downloadCreatePlaylistSourceFolderDisabled": { - "description": "Subtitle when playlist source folder prefix is disabled" + "description": "Subtitle when playlist folder is disabled" }, "downloadCreatePlaylistSourceFolderRedundant": "Handled by folder organization setting", "@downloadCreatePlaylistSourceFolderRedundant": { - "description": "Subtitle when playlist folder prefix setting is redundant because folder organization is already by playlist" + "description": "Subtitle when folder organization is already set to playlist" }, "downloadSongLinkRegion": "SongLink Region", "@downloadSongLinkRegion": { - "description": "Setting title for SongLink country region" + "description": "Setting for SongLink region used during fallback resolution" }, "downloadNetworkCompatibilityMode": "Network Compatibility Mode", "@downloadNetworkCompatibilityMode": { - "description": "Setting title for network compatibility toggle" + "description": "Setting for legacy TLS/network handling" }, "downloadNetworkCompatibilityModeEnabled": "Using legacy TLS settings for older networks", "@downloadNetworkCompatibilityModeEnabled": { - "description": "Subtitle when network compatibility mode is enabled" + "description": "Subtitle when network compatibility mode is on" }, "downloadNetworkCompatibilityModeDisabled": "Using standard network settings", "@downloadNetworkCompatibilityModeDisabled": { - "description": "Subtitle when network compatibility mode is disabled" + "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": "Hint shown instead of Ask-quality subtitle when selected provider has no quality options" + "description": "Subtitle when quality picker is disabled due to extension service" }, "downloadSelectTidalQobuz": "Select a provider with quality options to choose audio quality", "@downloadSelectTidalQobuz": { - "description": "Info hint when non-Tidal/Qobuz service is selected" + "description": "Legacy info shown when a provider does not expose quality options" }, "downloadEmbedLyricsDisabled": "Enable metadata embedding first", "@downloadEmbedLyricsDisabled": { - "description": "Subtitle for Embed Lyrics when Embed Metadata is disabled" + "description": "Subtitle when lyrics embedding is blocked by metadata toggle" }, "downloadNeteaseIncludeTranslation": "Netease: Include Translation", "@downloadNeteaseIncludeTranslation": { - "description": "Toggle title for including Netease translated lyrics" + "description": "Setting to include translated lyrics from Netease" }, "downloadNeteaseIncludeTranslationEnabled": "Chinese translation lines included", "@downloadNeteaseIncludeTranslationEnabled": { - "description": "Subtitle when Netease translation is enabled" + "description": "Subtitle when Netease translation is on" }, "downloadNeteaseIncludeTranslationDisabled": "Original lyrics only", "@downloadNeteaseIncludeTranslationDisabled": { - "description": "Subtitle when Netease translation is disabled" + "description": "Subtitle when Netease translation is off" }, "downloadNeteaseIncludeRomanization": "Netease: Include Romanization", "@downloadNeteaseIncludeRomanization": { - "description": "Toggle title for including Netease romanized lyrics" + "description": "Setting to include romanized lyrics from Netease" }, "downloadNeteaseIncludeRomanizationEnabled": "Romanization lines included", "@downloadNeteaseIncludeRomanizationEnabled": { - "description": "Subtitle when Netease romanization is enabled" + "description": "Subtitle when Netease romanization is on" }, "downloadNeteaseIncludeRomanizationDisabled": "No romanization", "@downloadNeteaseIncludeRomanizationDisabled": { - "description": "Subtitle when Netease romanization is disabled" + "description": "Subtitle when Netease romanization is off" }, "downloadAppleQqMultiPerson": "Apple / QQ: Multi-Person Lyrics", "@downloadAppleQqMultiPerson": { - "description": "Toggle title for Apple/QQ multi-person word-by-word lyrics" + "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 word-by-word is enabled" + "description": "Subtitle when multi-person lyrics is on" }, "downloadAppleQqMultiPersonDisabled": "Standard lyrics without speaker labels", "@downloadAppleQqMultiPersonDisabled": { - "description": "Subtitle when multi-person word-by-word is disabled" + "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 title for Musixmatch language preference" + "description": "Setting for Musixmatch lyrics translation language" }, "downloadMusixmatchLanguageAuto": "Auto (original language)", "@downloadMusixmatchLanguageAuto": { - "description": "Option label when Musixmatch uses original language" + "description": "Subtitle when no language is set" }, "downloadFilterContributing": "Filter Contributing Artists", "@downloadFilterContributing": { - "description": "Toggle title for filtering contributing artists in Album Artist metadata" + "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 enabled" + "description": "Subtitle when contributing artist filter is on" }, "downloadFilterContributingDisabled": "Full Album Artist string used", "@downloadFilterContributingDisabled": { - "description": "Subtitle when contributing artist filter is disabled" + "description": "Subtitle when contributing artist filter is off" }, "downloadProvidersNoneEnabled": "No providers enabled", "@downloadProvidersNoneEnabled": { - "description": "Subtitle for lyrics providers setting when no providers are enabled" + "description": "Shown when no lyrics providers are active" }, "downloadMusixmatchLanguageCode": "Language code", "@downloadMusixmatchLanguageCode": { - "description": "Label for the Musixmatch language code text field" + "description": "Label for Musixmatch language input field" }, "downloadMusixmatchLanguageHint": "e.g. en, de, ja", "@downloadMusixmatchLanguageHint": { - "description": "Hint text for the Musixmatch language code field" + "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 the Musixmatch language picker" + "description": "Description in Musixmatch language picker" }, "downloadMusixmatchAuto": "Auto", "@downloadMusixmatchAuto": { - "description": "Button to reset Musixmatch language to automatic" + "description": "Button to clear Musixmatch language (use auto)" }, "downloadNetworkAnySubtitle": "Use WiFi or mobile data", "@downloadNetworkAnySubtitle": { - "description": "Subtitle for 'Any' network mode option" + "description": "Subtitle for any-network option in picker" }, "downloadNetworkWifiOnlySubtitle": "Downloads pause when on mobile data", "@downloadNetworkWifiOnlySubtitle": { - "description": "Subtitle for 'WiFi only' network mode option" + "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 the SongLink region picker" + "description": "Description in SongLink region picker" }, "snackbarUnsupportedAudioFormat": "Unsupported audio format", "@snackbarUnsupportedAudioFormat": { @@ -4143,6 +4508,18 @@ "@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" @@ -4175,6 +4552,30 @@ "@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" + }, + "audioAnalysisChannelStats": "Per-channel Stats", + "@audioAnalysisChannelStats": { + "description": "Per-channel audio analysis section label" + }, "audioAnalysisSamples": "Samples", "@audioAnalysisSamples": { "description": "Total samples metric label" @@ -4206,12 +4607,20 @@ }, "extensionsHomeFeedAuto": "Auto", "@extensionsHomeFeedAuto": { - "description": "Extensions page - home feed provider option: auto" + "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", @@ -4374,6 +4783,31 @@ } } }, + "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" @@ -4493,271 +4927,6 @@ "@notifUpdateFailedBody": { "description": "Notification body when app update download fails" }, - "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" - }, - "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", - "@downloadDeduplicationDisabled": { - "description": "Subtitle when deduplication is off" - }, - "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" - }, - "homeEmptyTitle": "No search providers yet", - "@homeEmptyTitle": { - "description": "Title shown on home when no providers are available yet" - }, - "homeEmptySubtitle": "Install an extension to continue.", - "@homeEmptySubtitle": { - "description": "Subtitle shown on home when no providers are available yet" - }, - "setupLanguageTitle": "Choose Language", - "@setupLanguageTitle": { - "description": "Title for the language selection step in setup" - }, - "setupLanguageDescription": "Select your preferred language for the app. You can change this later in Settings.", - "@setupLanguageDescription": { - "description": "Description for the language selection step in setup" - }, - "setupLanguageSystemDefault": "System Default", - "@setupLanguageSystemDefault": { - "description": "Option to use the system language" - }, - "searchEmptyResultSubtitle": "Try another keyword", - "@searchEmptyResultSubtitle": { - "description": "Subtitle shown under the empty search result state on the home screen" - }, - "trackLyricsSource": "Source: {source}", - "@trackLyricsSource": { - "description": "Label showing the lyrics source/provider", - "placeholders": { - "source": { - "type": "String" - } - } - }, - "extensionsInstalledCount": "{count} extensions installed successfully", - "@extensionsInstalledCount": { - "description": "Success message after installing multiple extensions", - "placeholders": { - "count": { - "type": "int", - "description": "Number of installed extensions" - } - } - }, - "extensionsInstallPartialSuccess": "Installed {installed} of {attempted} extensions", - "@extensionsInstallPartialSuccess": { - "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" - } - } - }, - "downloadLossyAac": "AAC/M4A 320kbps", - "@downloadLossyAac": { - "description": "lossy format option - AAC in M4A container at 320kbps" - }, - "downloadLossyAacSubtitle": "Best mobile compatibility, M4A container", - "@downloadLossyAacSubtitle": { - "description": "Subtitle for AAC/M4A 320kbps lossy option" - }, - "collectionFavoriteArtists": "Favorite Artists", - "@collectionFavoriteArtists": { - "description": "Custom folder for favorite artists" - }, - "collectionArtistCount": "{count, plural, =1{1 artist} other{{count} artists}}", - "@collectionArtistCount": { - "description": "Artist count label for favorite artists", - "placeholders": { - "count": { - "type": "int" - } - } - }, - "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" - }, - "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" - } - } - }, - "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" - }, - "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" - }, - "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" - }, - "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" - }, - "audioAnalysisChannelStats": "Per-channel Stats", - "@audioAnalysisChannelStats": { - "description": "Per-channel audio analysis section label" - }, - "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" - }, - "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" - } - } - }, "searchTracks": "Tracks", "@searchTracks": { "description": "Search filter label - tracks" @@ -5070,6 +5239,86 @@ } } }, + "optionsDefaultSearchTabAlbums": "Albums", + "@optionsDefaultSearchTabAlbums": { + "description": "Default search tab option - Albums tab" + }, + "optionsDefaultSearchTabTracks": "Tracks", + "@optionsDefaultSearchTabTracks": { + "description": "Default search tab option - Tracks tab" + }, + "settingsFiles": "Files & Folders", + "@settingsFiles": { + "description": "Settings menu item - file and folder settings" + }, + "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" + }, + "downloadDeduplicationDisabled": "All tracks will be downloaded regardless of history", + "@downloadDeduplicationDisabled": { + "description": "Subtitle when deduplication is off" + }, + "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" @@ -5537,5 +5786,423 @@ "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": "Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening", + "@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" + }, + "nowPlayingDetails": "Details", + "@nowPlayingDetails": { + "description": "Menu item and section title for track metadata details" + }, + "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" + }, + "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" } -} +} \ No newline at end of file