SpotiFLAC-Mobile/lib/l10n/app_localizations_tr.dart
zarzet 4974284760 fix(l10n): consolidate Crowdin locale files and fix ICU plural warnings
- Replace app_es-ES.arb, app_pt-PT.arb, app_tr-TR.arb (hyphen format)
  with properly named app_es_ES.arb, app_pt_PT.arb, app_tr.arb
- Fix @@locale values to match Flutter filename convention (underscore)
- Fix ICU plural syntax: remove redundant 'one {}' before '=1{...}'
  in es_ES, pt_PT, tr translations
- Regenerate l10n output files
2026-03-25 16:12:37 +07:00

2971 lines
73 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ignore: unused_import
import 'package:intl/intl.dart' as intl;
import 'app_localizations.dart';
// ignore_for_file: type=lint
/// The translations for Turkish (`tr`).
class AppLocalizationsTr extends AppLocalizations {
AppLocalizationsTr([String locale = 'tr']) : super(locale);
@override
String get appName => 'SpotiFLAC';
@override
String get navHome => 'Ara';
@override
String get navLibrary => 'Library';
@override
String get navSettings => 'Ayarlar';
@override
String get navStore => 'Dükkan';
@override
String get homeTitle => 'Ara';
@override
String get homeSubtitle => 'Spotify linki yapıştır veya isimle arat';
@override
String get homeSupports =>
'Desteklenen linkler: Şarkı, Albüm, Çalma Listesi, Sanatçı linkleri';
@override
String get homeRecent => 'En son';
@override
String get historyFilterAll => 'Tümü';
@override
String get historyFilterAlbums => 'Albümler';
@override
String get historyFilterSingles => 'Single\'lar';
@override
String get historySearchHint => 'Arama geçmişi...';
@override
String get settingsTitle => 'Ayarlar';
@override
String get settingsDownload => 'İndirme';
@override
String get settingsAppearance => 'Görünüm';
@override
String get settingsOptions => 'Seçenekler';
@override
String get settingsExtensions => 'Eklentiler';
@override
String get settingsAbout => 'Hakkında';
@override
String get downloadTitle => 'İndirme';
@override
String get downloadAskQualitySubtitle =>
'Her indirmeden önce kalite seçim ekranını göster';
@override
String get downloadFilenameFormat => 'Dosya adı formatı';
@override
String get downloadFolderOrganization => 'Dosya Organizasyonu';
@override
String get appearanceTitle => 'Görünüm';
@override
String get appearanceThemeSystem => 'Sistem';
@override
String get appearanceThemeLight => 'ık';
@override
String get appearanceThemeDark => 'Koyu';
@override
String get appearanceDynamicColor => 'Dinamik Renk';
@override
String get appearanceDynamicColorSubtitle =>
'Duvar kağıdının renklerini kullan';
@override
String get appearanceHistoryView => 'Geçmiş Düzeni';
@override
String get appearanceHistoryViewList => 'Liste';
@override
String get appearanceHistoryViewGrid => 'Izgara';
@override
String get optionsTitle => 'Seçenekler';
@override
String get optionsPrimaryProvider => 'Ana Kaynek';
@override
String get optionsPrimaryProviderSubtitle =>
'Şarkı ismi aratılırken kullanılan kaynak.';
@override
String optionsUsingExtension(String extensionName) {
return 'Kullanılan eklenti: $extensionName';
}
@override
String get optionsSwitchBack =>
'Dahili kaynaklara dönmek için Deezer veya Spotify\'a tıkla';
@override
String get optionsAutoFallback => 'Diğerlerini dene';
@override
String get optionsAutoFallbackSubtitle =>
'İndirme başarısız olursa diğer hizmetleri dene';
@override
String get optionsUseExtensionProviders => 'Eklenti sağlayıcılarını kullan';
@override
String get optionsUseExtensionProvidersOn => 'Eklentiler ilk denenecek';
@override
String get optionsUseExtensionProvidersOff =>
'Sadece dahili sağlayıcıları kullan';
@override
String get optionsEmbedLyrics => 'Şarkı Sözlerini Göm';
@override
String get optionsEmbedLyricsSubtitle =>
'Senkronize şarkı sözlerini FLAC dosyalarına göm';
@override
String get optionsMaxQualityCover => 'En Yüksek Kapak Kalitesi';
@override
String get optionsMaxQualityCoverSubtitle =>
'En yüksek kalitedeki albüm kapaklarını indir';
@override
String get optionsConcurrentDownloads => 'Eş Zamanlı İndirmeler';
@override
String get optionsConcurrentSequential => 'Sıralı (Birer birer)';
@override
String optionsConcurrentParallel(int count) {
return 'Aynı anda $count indirme';
}
@override
String get optionsConcurrentWarning =>
'Aynı anda birden fazla indirme sınırlamaya takılabilir';
@override
String get optionsExtensionStore => 'Eklenti Dükkanı';
@override
String get optionsExtensionStoreSubtitle => 'Dükkan sekmesini altta göster';
@override
String get optionsCheckUpdates => 'Güncelleştirmeleri Denetle';
@override
String get optionsCheckUpdatesSubtitle => 'Yeni sürüm çıktığında bildir';
@override
String get optionsUpdateChannel => 'Güncelleme Kanalı';
@override
String get optionsUpdateChannelStable => 'Sadece stabil sürümler';
@override
String get optionsUpdateChannelPreview => 'Önizleme sürümlerini al';
@override
String get optionsUpdateChannelWarning =>
'Önizleme sürümleri hatalar veya tamamlanmamış özellikler içerebilir';
@override
String get optionsClearHistory => 'İndirme Geçmişini Temizle';
@override
String get optionsClearHistorySubtitle =>
'İndirilen bütün şarkıları geçmişten temizle';
@override
String get optionsDetailedLogging => 'Detaylı Günlükleme';
@override
String get optionsDetailedLoggingOn => 'Detaylı günlük kayıt ediliyor';
@override
String get optionsDetailedLoggingOff => 'Hata bildirmek için aç';
@override
String get optionsSpotifyCredentials => 'Spotify Kimlik Bilgileri';
@override
String optionsSpotifyCredentialsConfigured(String clientId) {
return 'Client ID: $clientId...';
}
@override
String get optionsSpotifyCredentialsRequired =>
'Zorunlu - değiştirmek için tıkla';
@override
String get optionsSpotifyWarning =>
'Spotify\'ın senin API kimlik bilgilerine ihtiyacı var. Onları developer.spotify.com\'dan alabilirsin';
@override
String get optionsSpotifyDeprecationWarning =>
'Spotify search will be deprecated on March 3, 2026 due to Spotify API changes. Please switch to Deezer.';
@override
String get extensionsTitle => 'Eklentiler';
@override
String get extensionsDisabled => 'Devre Dışı';
@override
String extensionsVersion(String version) {
return 'Versiyon $version';
}
@override
String extensionsAuthor(String author) {
return '$author tarafından';
}
@override
String get extensionsUninstall => 'Kaldır';
@override
String get storeTitle => 'Eklenti Dükkanı';
@override
String get storeSearch => 'Eklenti ara...';
@override
String get storeInstall => 'Kur';
@override
String get storeInstalled => 'Kuruldu';
@override
String get storeUpdate => 'Güncelle';
@override
String get aboutTitle => 'Hakkında';
@override
String get aboutContributors => 'Katkıda Bulunanlar';
@override
String get aboutMobileDeveloper => 'Mobil versiyon geliştiricisi';
@override
String get aboutOriginalCreator => 'Orijinal SpotiFLAC\'ın kurucusu';
@override
String get aboutLogoArtist =>
'Uygulama logomuzu yaratmış yetenekli sanatçımız!';
@override
String get aboutTranslators => 'Çevirmenler';
@override
String get aboutSpecialThanks => 'Özel teşekkür';
@override
String get aboutLinks => 'Linkler';
@override
String get aboutMobileSource => 'Mobil kaynak kodu';
@override
String get aboutPCSource => 'PC kaynak kodu';
@override
String get aboutReportIssue => 'Sorun bildir';
@override
String get aboutReportIssueSubtitle =>
'Karşılaştığın herhangi bir problemi bildir';
@override
String get aboutFeatureRequest => 'Özellik isteği';
@override
String get aboutFeatureRequestSubtitle =>
'Uygulama için yeni özellikler isteyin';
@override
String get aboutTelegramChannel => 'Telegram Kanalı';
@override
String get aboutTelegramChannelSubtitle => 'Duyurular ve güncellemeler';
@override
String get aboutTelegramChat => 'Telegram Grubu';
@override
String get aboutTelegramChatSubtitle => 'Diğer kullanıcılarla sohbet et';
@override
String get aboutSocial => 'Sosyal ağlar';
@override
String get aboutApp => 'Uygulama';
@override
String get aboutVersion => 'Versiyon';
@override
String get aboutBinimumDesc =>
'QQDL ve HiFi API\'ın kurucusu. Bu API olmadan, Tidal indirmeleri olmazdı!';
@override
String get aboutSachinsenalDesc =>
'Orijinal HiFi projesi kurucusu. Tidal entegrasyonun temeli!';
@override
String get aboutSjdonadoDesc =>
'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!';
@override
String get aboutDabMusic => 'DAB Music';
@override
String get aboutDabMusicDesc =>
'En iyi Qobuz streaming API\'ı. Yüksek kalite indirmeler bunun sayesinde!';
@override
String get aboutSpotiSaver => 'SpotiSaver';
@override
String get aboutSpotiSaverDesc =>
'Tidal Hi-Res FLAC streaming endpoints. A key piece of the lossless puzzle!';
@override
String get aboutAppDescription =>
'Download Spotify tracks in lossless quality from Tidal and Qobuz.';
@override
String get artistAlbums => 'Albümler';
@override
String get artistSingles => 'Single\'lar ve EP\'ler';
@override
String get artistCompilations => 'Derlemeler';
@override
String get artistPopular => 'Popüler';
@override
String artistMonthlyListeners(String count) {
return 'Aylık $count dinleyici';
}
@override
String get trackMetadataService => 'Hizmet';
@override
String get trackMetadataPlay => 'Oynat';
@override
String get trackMetadataShare => 'Paylaş';
@override
String get trackMetadataDelete => 'Sil';
@override
String get setupGrantPermission => 'İzin Ver';
@override
String get setupSkip => 'Şimdilik atla';
@override
String get setupStorageAccessRequired => 'Depolama Erişimi Gerekli';
@override
String get 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.';
@override
String get setupOpenSettings => 'Ayarları';
@override
String get setupPermissionDeniedMessage =>
'İzin reddedildi. Devam etmek için lütfen bütün izinleri verin.';
@override
String setupPermissionRequired(String permissionType) {
return '$permissionType İzni Zorunlu';
}
@override
String setupPermissionRequiredMessage(String permissionType) {
return 'En iyi deneyim için $permissionType izni zorunludur. Bunu ayarlardan daha sonra değiştirebilirsiniz.';
}
@override
String get setupUseDefaultFolder => 'Varsayılan Klasörü Kullan?';
@override
String get setupNoFolderSelected =>
'Klasör seçilmedi. Varsayılan \"Music\" klasörünü kullanmak ister misiniz?';
@override
String get setupUseDefault => 'Varsayılanı Kullan';
@override
String get setupDownloadLocationTitle => 'İndirme Konumu';
@override
String get setupDownloadLocationIosMessage =>
'iOS\'ta indirilenler uygulamanın \"Documents\" dosyasına kaydedilir. Onlara Dosyalar uygulamasından erişebilirsiniz.';
@override
String get setupAppDocumentsFolder => 'App Documents Folder';
@override
String get setupAppDocumentsFolderSubtitle =>
'Tavsiye edilen - Dosyalar uygulamasından erişilebilir';
@override
String get setupChooseFromFiles => 'Dosyalar\'dan Seç';
@override
String get setupChooseFromFilesSubtitle => 'iCloud veya başka konum seç';
@override
String get setupIosEmptyFolderWarning =>
'iOS\'un sınırlaması: Boş klasörler seçilemiyor. İçinde en az bir dosya bulunan bir klasör seçin.';
@override
String get setupIcloudNotSupported =>
'iCloud Drive is not supported. Please use the app Documents folder.';
@override
String get setupDownloadInFlac => 'Spotify şarkılarını FLAC olarak indirin';
@override
String get setupStorageGranted => 'Depolama İzni Verildi!';
@override
String get setupStorageRequired => 'Depolama İzni Gerekli';
@override
String get setupStorageDescription =>
'SpotiFLAC\'ın şarkılarınızı kaydetmek için depolama iznine ihtiyacı var.';
@override
String get setupNotificationGranted => 'Bildirim İzni Verildi!';
@override
String get setupNotificationEnable => 'Bildirimleri Etkinleştir';
@override
String get setupFolderChoose => 'İndirilecek Klasörü Seç';
@override
String get setupFolderDescription =>
'İndirdiğin şarkıların kaydedileceği klasörü seç.';
@override
String get setupSelectFolder => 'Klasör Seç';
@override
String get setupEnableNotifications => 'Bildirimleri Etkinleştir';
@override
String get setupNotificationBackgroundDescription =>
'İndirmelerin durumu hakkında bildirim al. Bunu açmak uygulama arka plandayken indirmelerinizi takip etmenizi sağlar.';
@override
String get setupSkipForNow => 'Şimdilik atla';
@override
String get setupNext => 'Sıradaki';
@override
String get setupGetStarted => 'Başla';
@override
String get setupAllowAccessToManageFiles =>
'Lütfen bir sonraki ekranda \"Bütün dosyalara eriş\" iznini sağlayın.';
@override
String get dialogCancel => 'İptal';
@override
String get dialogSave => 'Kaydet';
@override
String get dialogDelete => 'Sil';
@override
String get dialogRetry => 'Yeniden dene';
@override
String get dialogClear => 'Temizle';
@override
String get dialogDone => 'Tamamlandı';
@override
String get dialogImport => 'İçe aktar';
@override
String get dialogDownload => 'Download';
@override
String get dialogDiscard => 'Vazgeç';
@override
String get dialogRemove => 'Kaldır';
@override
String get dialogUninstall => 'Kaldır';
@override
String get dialogDiscardChanges => 'Değişiklikleri İptal Et?';
@override
String get dialogUnsavedChanges =>
'Kaydedilmeyen değişiklikler mevcut. Bu değişiklikleri iptal etmek istiyor musunuz?';
@override
String get dialogClearAll => 'Tümünü Temizle';
@override
String get dialogRemoveExtension => 'Eklentiyi Kaldır';
@override
String get dialogRemoveExtensionMessage =>
'Bu eklentiyi kaldırmak istediğine emin misin? Bu işlem geri alınamaz.';
@override
String get dialogUninstallExtension => 'Eklentiyi Kaldır?';
@override
String dialogUninstallExtensionMessage(String extensionName) {
return '$extensionName eklentisini kaldırmak istediğine emin misin?';
}
@override
String get dialogClearHistoryTitle => 'Geçmişi Temizle';
@override
String get dialogClearHistoryMessage =>
'Tüm indirme geçmişini temizlemek istediğinizden emin misiniz? Bu işlem geri alınamaz.';
@override
String get dialogDeleteSelectedTitle => 'Seçileni Sil';
@override
String dialogDeleteSelectedMessage(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'şarkıyı',
one: 'şarkıyı',
);
return '$count $_temp0 geçmişten silmeye emin misiniz?\n\nBu işlem seçilenleri cihazınızdan da silecektir.';
}
@override
String get dialogImportPlaylistTitle => 'Çalma listesini içe aktar';
@override
String dialogImportPlaylistMessage(int count) {
return 'CSV\'de $count şarkı bulundu. İndirme kuyruğuna ekle?';
}
@override
String csvImportTracks(int count) {
return 'CSV\'den $count şarkı';
}
@override
String snackbarAddedToQueue(String trackName) {
return '\"$trackName\" kuyruğa eklendi';
}
@override
String snackbarAddedTracksToQueue(int count) {
return '$count şarkı kuyruğa eklendi';
}
@override
String snackbarAlreadyDownloaded(String trackName) {
return '\"$trackName\" zaten indirilmiş';
}
@override
String snackbarAlreadyInLibrary(String trackName) {
return '\"$trackName\" already exists in your library';
}
@override
String get snackbarHistoryCleared => 'Geçmiş temizlendi';
@override
String get snackbarCredentialsSaved => 'Kimlik bilgileri kaydedildi';
@override
String get snackbarCredentialsCleared => 'Kimlik bilgileri temizlendi';
@override
String snackbarDeletedTracks(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'şarkı',
one: 'şarkı',
);
return '$count $_temp0 silindi';
}
@override
String snackbarCannotOpenFile(String error) {
return 'Dosya açılamadı: $error';
}
@override
String get snackbarFillAllFields => 'Lütfen tüm alanları doldurun';
@override
String get snackbarViewQueue => 'Kuyruğu Görüntüle';
@override
String snackbarUrlCopied(String platform) {
return '$platform Bağlantı panoya kopyalandı';
}
@override
String get snackbarFileNotFound => 'Dosya bulunamadı';
@override
String get snackbarSelectExtFile => 'Lütfen .spotiflac-ext dosyasını seçin';
@override
String get snackbarProviderPrioritySaved => 'Provider priority saved';
@override
String get snackbarMetadataProviderSaved =>
'Metadata provider priority saved';
@override
String snackbarExtensionInstalled(String extensionName) {
return '$extensionName yüklendi.';
}
@override
String snackbarExtensionUpdated(String extensionName) {
return '$extensionName güncellendi.';
}
@override
String get snackbarFailedToInstall => 'Eklenti yüklenirken hata oluştu';
@override
String get snackbarFailedToUpdate => 'Eklenti güncellenirken hata oluştu';
@override
String get errorRateLimited => 'ırı istek gönderildi';
@override
String get errorRateLimitedMessage =>
'Çok fazla istek. Lütfen arama yapmadan önce biraz bekleyin.';
@override
String get errorNoTracksFound => 'Parça bulunamadı';
@override
String get errorUrlNotRecognized => 'Link not recognized';
@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 '$item yüklenemedi: Eksik eklenti kaynağı';
}
@override
String get actionPause => 'Duraklat';
@override
String get actionResume => 'Devam et';
@override
String get actionCancel => 'Vazgeç';
@override
String get actionSelectAll => 'Tümünü Seç';
@override
String get actionDeselect => 'Seçimi kaldır';
@override
String get actionRemoveCredentials => 'Özellikleri kaldır';
@override
String get actionSaveCredentials => 'Özellikleri kaydet';
@override
String selectionSelected(int count) {
return '$count seçildi';
}
@override
String get selectionAllSelected => 'Tüm parçalar seçildi';
@override
String get selectionSelectToDelete => 'Silinecek parçaları seçin';
@override
String progressFetchingMetadata(int current, int total) {
return 'Meta verileri alınıyor... $current/$total';
}
@override
String get progressReadingCsv => 'CSV okunuyor...';
@override
String get searchSongs => 'Şarkılar';
@override
String get searchArtists => 'Sanatçılar';
@override
String get searchAlbums => 'Albümler';
@override
String get searchPlaylists => 'Çalma Listeleri';
@override
String get tooltipPlay => 'Oynat';
@override
String get filenameFormat => 'Dosya adı formatı';
@override
String get filenameShowAdvancedTags => 'Show advanced tags';
@override
String get filenameShowAdvancedTagsDescription =>
'Enable formatted tags for track padding and date patterns';
@override
String get folderOrganizationNone => 'Organizasyon yok';
@override
String get folderOrganizationByPlaylist => 'By Playlist';
@override
String get folderOrganizationByPlaylistSubtitle =>
'Separate folder for each playlist';
@override
String get folderOrganizationByArtist => 'Sanatçıya Göre';
@override
String get folderOrganizationByAlbum => 'Albüme Göre';
@override
String get folderOrganizationByArtistAlbum => 'Sanatçı/Albüm';
@override
String get folderOrganizationDescription =>
'İndirilenleri klasörlerle organize et';
@override
String get folderOrganizationNoneSubtitle =>
'Her şey indirilen dosyasına kaydedilecek';
@override
String get folderOrganizationByArtistSubtitle =>
'Her sanatçı için ayrı klasör';
@override
String get folderOrganizationByAlbumSubtitle => 'Her albüm için ayrı klasör';
@override
String get folderOrganizationByArtistAlbumSubtitle =>
'Sanatçı klasörlerinin içinde Albüm klasörleri';
@override
String get updateAvailable => 'Güncelleme Mevcut';
@override
String get updateLater => 'Daha Sonra';
@override
String get updateStartingDownload => 'İndirme başlıyor...';
@override
String get updateDownloadFailed => 'İndirme başarısız';
@override
String get updateFailedMessage => 'Güncelleme indirilemedi';
@override
String get updateNewVersionReady => 'Yeni bir sürüm hazır';
@override
String get updateCurrent => 'Şimdiki';
@override
String get updateNew => 'Yeni';
@override
String get updateDownloading => 'İndiriliyor...';
@override
String get updateWhatsNew => 'Yenilikler';
@override
String get updateDownloadInstall => 'İndir & Yükle';
@override
String get updateDontRemind => 'Bir daha sorma';
@override
String get providerPriorityTitle => 'İndirme hizmetleri öncelik sırası';
@override
String get providerPriorityDescription =>
'İndirme hizmetlerini sıralamak için kaydır. Uygulama şarkı indirirken hizmetleri yukarıdan aşağıya doğru deneyecektir.';
@override
String get providerPriorityInfo =>
'Eğer bir şarkı ilk hizmette mevcut değilse uygulama otomatik olarak bir sonrakini deneyecektir.';
@override
String get providerBuiltIn => 'Dahili';
@override
String get providerExtension => 'Eklenti';
@override
String get metadataProviderPriorityTitle => 'Metadata Priority';
@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.';
@override
String get metadataNoRateLimits => 'No rate limits';
@override
String get metadataMayRateLimit => 'May rate limit';
@override
String get logTitle => 'Kayıtlar';
@override
String get logCopied => 'Kayıtlar panoya kopyalandı';
@override
String get logSearchHint => 'Kayıtları Ara...';
@override
String get logFilterLevel => 'Seviye';
@override
String get logFilterSection => 'Filtre';
@override
String get logShareLogs => 'Kayıtları paylaş';
@override
String get logClearLogs => 'Kayıtları temizle';
@override
String get logClearLogsTitle => 'Kayıtları temizle';
@override
String get logClearLogsMessage =>
'Tüm kayıtları temizlemek istediğinize emin misiniz?';
@override
String get logFilterBySeverity => 'Filter logs by severity';
@override
String get logNoLogsYet => 'No logs yet';
@override
String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app';
@override
String logEntriesFiltered(int count) {
return 'Entries ($count filtered)';
}
@override
String logEntries(int count) {
return 'Entries ($count)';
}
@override
String get credentialsTitle => 'Spotify Credentials';
@override
String get credentialsDescription =>
'Enter your Client ID and Secret to use your own Spotify application quota.';
@override
String get credentialsClientId => 'Client ID';
@override
String get credentialsClientIdHint => 'Paste Client ID';
@override
String get credentialsClientSecret => 'Client Secret';
@override
String get credentialsClientSecretHint => 'Paste Client Secret';
@override
String get channelStable => 'Stable';
@override
String get channelPreview => 'Preview';
@override
String get sectionSearchSource => 'Search Source';
@override
String get sectionDownload => 'Download';
@override
String get sectionPerformance => 'Performance';
@override
String get sectionApp => 'App';
@override
String get sectionData => 'Data';
@override
String get sectionDebug => 'Debug';
@override
String get sectionService => 'Service';
@override
String get sectionAudioQuality => 'Audio Quality';
@override
String get sectionFileSettings => 'File Settings';
@override
String get sectionLyrics => 'Lyrics';
@override
String get lyricsMode => 'Lyrics Mode';
@override
String get lyricsModeDescription =>
'Choose how lyrics are saved with your downloads';
@override
String get lyricsModeEmbed => 'Embed in file';
@override
String get lyricsModeEmbedSubtitle => 'Lyrics stored inside FLAC metadata';
@override
String get lyricsModeExternal => 'External .lrc file';
@override
String get lyricsModeExternalSubtitle =>
'Separate .lrc file for players like Samsung Music';
@override
String get lyricsModeBoth => 'Both';
@override
String get lyricsModeBothSubtitle => 'Embed and save .lrc file';
@override
String get sectionColor => 'Color';
@override
String get sectionTheme => 'Theme';
@override
String get sectionLayout => 'Layout';
@override
String get sectionLanguage => 'Language';
@override
String get appearanceLanguage => 'App Language';
@override
String get settingsAppearanceSubtitle => 'Theme, colors, display';
@override
String get settingsDownloadSubtitle => 'Service, quality, filename format';
@override
String get settingsOptionsSubtitle => 'Fallback, lyrics, cover art, updates';
@override
String get settingsExtensionsSubtitle => 'Manage download providers';
@override
String get settingsLogsSubtitle => 'View app logs for debugging';
@override
String get loadingSharedLink => 'Loading shared link...';
@override
String get pressBackAgainToExit => 'Press back again to exit';
@override
String downloadAllCount(int count) {
return 'Download All ($count)';
}
@override
String tracksCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count tracks',
one: '1 track',
);
return '$_temp0';
}
@override
String get trackCopyFilePath => 'Copy file path';
@override
String get trackRemoveFromDevice => 'Remove from device';
@override
String get trackLoadLyrics => 'Load Lyrics';
@override
String get trackMetadata => 'Metadata';
@override
String get trackFileInfo => 'File Info';
@override
String get trackLyrics => 'Lyrics';
@override
String get trackFileNotFound => 'File not found';
@override
String get trackOpenInDeezer => 'Open in Deezer';
@override
String get trackOpenInSpotify => 'Open in Spotify';
@override
String get trackTrackName => 'Track name';
@override
String get trackArtist => 'Artist';
@override
String get trackAlbumArtist => 'Album artist';
@override
String get trackAlbum => 'Album';
@override
String get trackTrackNumber => 'Track number';
@override
String get trackDiscNumber => 'Disc number';
@override
String get trackDuration => 'Duration';
@override
String get trackAudioQuality => 'Audio quality';
@override
String get trackReleaseDate => 'Release date';
@override
String get trackGenre => 'Genre';
@override
String get trackLabel => 'Label';
@override
String get trackCopyright => 'Copyright';
@override
String get trackDownloaded => 'Downloaded';
@override
String get trackCopyLyrics => 'Copy lyrics';
@override
String get trackLyricsNotAvailable => 'Lyrics not available for this track';
@override
String get trackLyricsTimeout => 'Request timed out. Try again later.';
@override
String get trackLyricsLoadFailed => 'Failed to load lyrics';
@override
String get trackEmbedLyrics => 'Embed Lyrics';
@override
String get trackLyricsEmbedded => 'Lyrics embedded successfully';
@override
String get trackInstrumental => 'Instrumental track';
@override
String get trackCopiedToClipboard => 'Copied to clipboard';
@override
String get trackDeleteConfirmTitle => 'Remove from device?';
@override
String get trackDeleteConfirmMessage =>
'This will permanently delete the downloaded file and remove it from your history.';
@override
String get dateToday => 'Today';
@override
String get dateYesterday => 'Yesterday';
@override
String dateDaysAgo(int count) {
return '$count days ago';
}
@override
String dateWeeksAgo(int count) {
return '$count weeks ago';
}
@override
String dateMonthsAgo(int count) {
return '$count months ago';
}
@override
String get storeFilterAll => 'All';
@override
String get storeFilterMetadata => 'Metadata';
@override
String get storeFilterDownload => 'Download';
@override
String get storeFilterUtility => 'Utility';
@override
String get storeFilterLyrics => 'Lyrics';
@override
String get storeFilterIntegration => 'Integration';
@override
String get storeClearFilters => 'Clear filters';
@override
String get storeAddRepoTitle => 'Add Extension Repository';
@override
String get storeAddRepoDescription =>
'Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.';
@override
String get storeRepoUrlLabel => 'Repository URL';
@override
String get storeRepoUrlHint => 'https://github.com/user/repo';
@override
String get storeRepoUrlHelper =>
'e.g. https://github.com/user/extensions-repo';
@override
String get storeAddRepoButton => 'Add Repository';
@override
String get storeChangeRepoTooltip => 'Change repository';
@override
String get storeRepoDialogTitle => 'Extension Repository';
@override
String get storeRepoDialogCurrent => 'Current repository:';
@override
String get storeNewRepoUrlLabel => 'New Repository URL';
@override
String get storeLoadError => 'Failed to load store';
@override
String get storeEmptyNoExtensions => 'No extensions available';
@override
String get storeEmptyNoResults => 'No extensions found';
@override
String get extensionDefaultProvider => 'Default (Deezer/Spotify)';
@override
String get extensionDefaultProviderSubtitle => 'Use built-in search';
@override
String get extensionAuthor => 'Author';
@override
String get extensionId => 'ID';
@override
String get extensionError => 'Error';
@override
String get extensionCapabilities => 'Capabilities';
@override
String get extensionMetadataProvider => 'Metadata Provider';
@override
String get extensionDownloadProvider => 'Download Provider';
@override
String get extensionLyricsProvider => 'Lyrics Provider';
@override
String get extensionUrlHandler => 'URL Handler';
@override
String get extensionQualityOptions => 'Quality Options';
@override
String get extensionPostProcessingHooks => 'Post-Processing Hooks';
@override
String get extensionPermissions => 'Permissions';
@override
String get extensionSettings => 'Settings';
@override
String get extensionRemoveButton => 'Remove Extension';
@override
String get extensionUpdated => 'Updated';
@override
String get extensionMinAppVersion => 'Min App Version';
@override
String get extensionCustomTrackMatching => 'Custom Track Matching';
@override
String get extensionPostProcessing => 'Post-Processing';
@override
String extensionHooksAvailable(int count) {
return '$count hook(s) available';
}
@override
String extensionPatternsCount(int count) {
return '$count pattern(s)';
}
@override
String extensionStrategy(String strategy) {
return 'Strategy: $strategy';
}
@override
String get extensionsProviderPrioritySection => 'Provider Priority';
@override
String get extensionsInstalledSection => 'Installed Extensions';
@override
String get extensionsNoExtensions => 'No extensions installed';
@override
String get extensionsNoExtensionsSubtitle =>
'Install .spotiflac-ext files to add new providers';
@override
String get extensionsInstallButton => 'Install Extension';
@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';
@override
String get extensionsDownloadPriority => 'Download Priority';
@override
String get extensionsDownloadPrioritySubtitle => 'Set download service order';
@override
String get extensionsNoDownloadProvider =>
'No extensions with download provider';
@override
String get extensionsMetadataPriority => 'Metadata Priority';
@override
String get extensionsMetadataPrioritySubtitle =>
'Set search & metadata source order';
@override
String get extensionsNoMetadataProvider =>
'No extensions with metadata provider';
@override
String get extensionsSearchProvider => 'Search Provider';
@override
String get extensionsNoCustomSearch => 'No extensions with custom search';
@override
String get extensionsSearchProviderDescription =>
'Choose which service to use for searching tracks';
@override
String get extensionsCustomSearch => 'Custom search';
@override
String get extensionsErrorLoading => 'Error loading extension';
@override
String get qualityFlacLossless => 'FLAC Lossless';
@override
String get qualityFlacLosslessSubtitle => '16-bit / 44.1kHz';
@override
String get qualityHiResFlac => 'Hi-Res FLAC';
@override
String get qualityHiResFlacSubtitle => '24-bit / up to 96kHz';
@override
String get qualityHiResFlacMax => 'Hi-Res FLAC Max';
@override
String get qualityHiResFlacMaxSubtitle => '24-bit / up to 192kHz';
@override
String get downloadLossy320 => 'Lossy 320kbps';
@override
String get downloadLossyFormat => 'Lossy Format';
@override
String get downloadLossy320Format => 'Lossy 320kbps Format';
@override
String get downloadLossy320FormatDesc =>
'Choose the output format for Tidal 320kbps lossy downloads. The original AAC stream will be converted to your selected format.';
@override
String get downloadLossyMp3 => 'MP3 320kbps';
@override
String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track';
@override
String get downloadLossyOpus256 => 'Opus 256kbps';
@override
String get downloadLossyOpus256Subtitle =>
'Best quality Opus, ~8MB per track';
@override
String get downloadLossyOpus128 => 'Opus 128kbps';
@override
String get downloadLossyOpus128Subtitle => 'Smallest size, ~4MB per track';
@override
String get qualityNote =>
'Actual quality depends on track availability from the service';
@override
String get youtubeQualityNote =>
'YouTube provides lossy audio only. Not part of lossless fallback.';
@override
String get youtubeOpusBitrateTitle => 'YouTube Opus Bitrate';
@override
String get youtubeMp3BitrateTitle => 'YouTube MP3 Bitrate';
@override
String get downloadAskBeforeDownload => 'Ask Before Download';
@override
String get downloadDirectory => 'Download Directory';
@override
String get downloadSeparateSinglesFolder => 'Separate Singles Folder';
@override
String get downloadAlbumFolderStructure => 'Album Folder Structure';
@override
String get downloadUseAlbumArtistForFolders => 'Use Album Artist for folders';
@override
String get downloadUsePrimaryArtistOnly => 'Primary artist only for folders';
@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';
@override
String get downloadFrom => 'Download From';
@override
String get appearanceAmoledDark => 'AMOLED Dark';
@override
String get appearanceAmoledDarkSubtitle => 'Pure black background';
@override
String get queueClearAll => 'Clear All';
@override
String get queueClearAllMessage =>
'Are you sure you want to clear all downloads?';
@override
String get settingsAutoExportFailed => 'Auto-export failed downloads';
@override
String get settingsAutoExportFailedSubtitle =>
'Save failed downloads to TXT file automatically';
@override
String get settingsDownloadNetwork => 'Download Network';
@override
String get settingsDownloadNetworkAny => 'WiFi + Mobile Data';
@override
String get settingsDownloadNetworkWifiOnly => 'WiFi Only';
@override
String get settingsDownloadNetworkSubtitle =>
'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.';
@override
String get albumFolderArtistAlbum => 'Artist / Album';
@override
String get albumFolderArtistAlbumSubtitle => 'Albums/Artist Name/Album Name/';
@override
String get albumFolderArtistYearAlbum => 'Artist / [Year] Album';
@override
String get albumFolderArtistYearAlbumSubtitle =>
'Albums/Artist Name/[2005] Album Name/';
@override
String get albumFolderAlbumOnly => 'Album Only';
@override
String get albumFolderAlbumOnlySubtitle => 'Albums/Album Name/';
@override
String get albumFolderYearAlbum => '[Year] Album';
@override
String get albumFolderYearAlbumSubtitle => 'Albums/[2005] Album Name/';
@override
String get albumFolderArtistAlbumSingles => 'Artist / Album + Singles';
@override
String get albumFolderArtistAlbumSinglesSubtitle =>
'Artist/Album/ and Artist/Singles/';
@override
String get downloadedAlbumDeleteSelected => 'Delete Selected';
@override
String downloadedAlbumDeleteMessage(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Delete $count $_temp0 from this album?\n\nThis will also delete the files from storage.';
}
@override
String downloadedAlbumSelectedCount(int count) {
return '$count selected';
}
@override
String get downloadedAlbumAllSelected => 'All tracks selected';
@override
String get downloadedAlbumTapToSelect => 'Tap tracks to select';
@override
String downloadedAlbumDeleteCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Delete $count $_temp0';
}
@override
String get downloadedAlbumSelectToDelete => 'Select tracks to delete';
@override
String downloadedAlbumDiscHeader(int discNumber) {
return 'Disc $discNumber';
}
@override
String get recentTypeArtist => 'Artist';
@override
String get recentTypeAlbum => 'Album';
@override
String get recentTypeSong => 'Song';
@override
String get recentTypePlaylist => 'Playlist';
@override
String get recentEmpty => 'No recent items yet';
@override
String get recentShowAllDownloads => 'Show All Downloads';
@override
String recentPlaylistInfo(String name) {
return 'Playlist: $name';
}
@override
String get discographyDownload => 'Download Discography';
@override
String get discographyDownloadAll => 'Download All';
@override
String discographyDownloadAllSubtitle(int count, int albumCount) {
return '$count tracks from $albumCount releases';
}
@override
String get discographyAlbumsOnly => 'Albums Only';
@override
String discographyAlbumsOnlySubtitle(int count, int albumCount) {
return '$count tracks from $albumCount albums';
}
@override
String get discographySinglesOnly => 'Singles & EPs Only';
@override
String discographySinglesOnlySubtitle(int count, int albumCount) {
return '$count tracks from $albumCount singles';
}
@override
String get discographySelectAlbums => 'Select Albums...';
@override
String get discographySelectAlbumsSubtitle =>
'Choose specific albums or singles';
@override
String get discographyFetchingTracks => 'Fetching tracks...';
@override
String discographyFetchingAlbum(int current, int total) {
return 'Fetching $current of $total...';
}
@override
String discographySelectedCount(int count) {
return '$count selected';
}
@override
String get discographyDownloadSelected => 'Download Selected';
@override
String discographyAddedToQueue(int count) {
return 'Added $count tracks to queue';
}
@override
String discographySkippedDownloaded(int added, int skipped) {
return '$added added, $skipped already downloaded';
}
@override
String get discographyNoAlbums => 'No albums available';
@override
String get discographyFailedToFetch => 'Failed to fetch some albums';
@override
String get sectionStorageAccess => 'Storage Access';
@override
String get allFilesAccess => 'All Files Access';
@override
String get allFilesAccessEnabledSubtitle => 'Can write to any folder';
@override
String get allFilesAccessDisabledSubtitle => 'Limited to media folders only';
@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.';
@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';
@override
String get settingsLocalLibrarySubtitle => 'Scan music & detect duplicates';
@override
String get settingsCache => 'Storage & Cache';
@override
String get settingsCacheSubtitle => 'View size and clear cached data';
@override
String get libraryTitle => 'Local Library';
@override
String get libraryScanSettings => 'Scan Settings';
@override
String get libraryEnableLocalLibrary => 'Enable Local Library';
@override
String get libraryEnableLocalLibrarySubtitle =>
'Scan and track your existing music';
@override
String get libraryFolder => 'Library Folder';
@override
String get libraryFolderHint => 'Tap to select folder';
@override
String get libraryShowDuplicateIndicator => 'Show Duplicate Indicator';
@override
String get libraryShowDuplicateIndicatorSubtitle =>
'Show when searching for existing tracks';
@override
String get libraryAutoScan => 'Auto Scan';
@override
String get libraryAutoScanSubtitle =>
'Automatically scan your library for new files';
@override
String get libraryAutoScanOff => 'Off';
@override
String get libraryAutoScanOnOpen => 'Every app open';
@override
String get libraryAutoScanDaily => 'Daily';
@override
String get libraryAutoScanWeekly => 'Weekly';
@override
String get libraryActions => 'Actions';
@override
String get libraryScan => 'Scan Library';
@override
String get libraryScanSubtitle => 'Scan for audio files';
@override
String get libraryScanSelectFolderFirst => 'Select a folder first';
@override
String get libraryCleanupMissingFiles => 'Cleanup Missing Files';
@override
String get libraryCleanupMissingFilesSubtitle =>
'Remove entries for files that no longer exist';
@override
String get libraryClear => 'Clear Library';
@override
String get libraryClearSubtitle => 'Remove all scanned tracks';
@override
String get libraryClearConfirmTitle => 'Clear Library';
@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';
@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.';
@override
String libraryTracksUnit(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return '$_temp0';
}
@override
String libraryLastScanned(String time) {
return 'Last scanned: $time';
}
@override
String get libraryLastScannedNever => 'Never';
@override
String get libraryScanning => 'Scanning...';
@override
String libraryScanProgress(String progress, int total) {
return '$progress% of $total files';
}
@override
String get libraryInLibrary => 'In Library';
@override
String libraryRemovedMissingFiles(int count) {
return 'Removed $count missing files from library';
}
@override
String get libraryCleared => 'Library cleared';
@override
String get libraryStorageAccessRequired => 'Storage Access Required';
@override
String get libraryStorageAccessMessage =>
'SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.';
@override
String get libraryFolderNotExist => 'Selected folder does not exist';
@override
String get librarySourceDownloaded => 'Downloaded';
@override
String get librarySourceLocal => 'Local';
@override
String get libraryFilterAll => 'All';
@override
String get libraryFilterDownloaded => 'Downloaded';
@override
String get libraryFilterLocal => 'Local';
@override
String get libraryFilterTitle => 'Filters';
@override
String get libraryFilterReset => 'Reset';
@override
String get libraryFilterApply => 'Apply';
@override
String get libraryFilterSource => 'Source';
@override
String get libraryFilterQuality => 'Quality';
@override
String get libraryFilterQualityHiRes => 'Hi-Res (24bit)';
@override
String get libraryFilterQualityCD => 'CD (16bit)';
@override
String get libraryFilterQualityLossy => 'Lossy';
@override
String get libraryFilterFormat => 'Format';
@override
String get libraryFilterSort => 'Sort';
@override
String get libraryFilterSortLatest => 'Latest';
@override
String get libraryFilterSortOldest => 'Oldest';
@override
String get timeJustNow => 'Just now';
@override
String timeMinutesAgo(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count minutes ago',
one: '1 minute ago',
);
return '$_temp0';
}
@override
String timeHoursAgo(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count hours ago',
one: '1 hour ago',
);
return '$_temp0';
}
@override
String get tutorialWelcomeTitle => 'Welcome to 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';
@override
String get tutorialWelcomeTip2 =>
'Get FLAC quality audio from Tidal, Qobuz, or Deezer';
@override
String get tutorialWelcomeTip3 =>
'Automatic metadata, cover art, and lyrics embedding';
@override
String get tutorialSearchTitle => 'Finding Music';
@override
String get tutorialSearchDesc =>
'There are two easy ways to find music you want to download.';
@override
String get tutorialDownloadTitle => 'Downloading Music';
@override
String get tutorialDownloadDesc =>
'Downloading music is simple and fast. Here\'s how it works.';
@override
String get tutorialLibraryTitle => 'Your Library';
@override
String get tutorialLibraryDesc =>
'All your downloaded music is organized in the Library tab.';
@override
String get tutorialLibraryTip1 =>
'View download progress and queue in the Library tab';
@override
String get tutorialLibraryTip2 =>
'Tap any track to play it with your music player';
@override
String get tutorialLibraryTip3 =>
'Switch between list and grid view for better browsing';
@override
String get tutorialExtensionsTitle => 'Extensions';
@override
String get tutorialExtensionsDesc =>
'Extend the app\'s capabilities with community extensions.';
@override
String get tutorialExtensionsTip1 =>
'Browse the Store tab to discover useful extensions';
@override
String get tutorialExtensionsTip2 =>
'Add new download providers or search sources';
@override
String get tutorialExtensionsTip3 =>
'Get lyrics, enhanced metadata, and more features';
@override
String get tutorialSettingsTitle => 'Customize Your Experience';
@override
String get tutorialSettingsDesc =>
'Personalize the app in Settings to match your preferences.';
@override
String get tutorialSettingsTip1 =>
'Change download location and folder organization';
@override
String get tutorialSettingsTip2 =>
'Set default audio quality and format preferences';
@override
String get tutorialSettingsTip3 => 'Customize app theme and appearance';
@override
String get tutorialReadyMessage =>
'You\'re all set! Start downloading your favorite music now.';
@override
String get libraryForceFullScan => 'Force Full Scan';
@override
String get libraryForceFullScanSubtitle => 'Rescan all files, ignoring cache';
@override
String get cleanupOrphanedDownloads => 'Cleanup Orphaned Downloads';
@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';
}
@override
String get cleanupOrphanedDownloadsNone => 'No orphaned entries found';
@override
String get cacheTitle => 'Storage & Cache';
@override
String get cacheSummaryTitle => 'Cache overview';
@override
String get cacheSummarySubtitle =>
'Clearing cache will not remove downloaded music files.';
@override
String cacheEstimatedTotal(String size) {
return 'Estimated cache usage: $size';
}
@override
String get cacheSectionStorage => 'Cached Data';
@override
String get cacheSectionMaintenance => 'Maintenance';
@override
String get cacheAppDirectory => 'App cache directory';
@override
String get cacheAppDirectoryDesc =>
'HTTP responses, WebView data, and other temporary app data.';
@override
String get cacheTempDirectory => 'Temporary directory';
@override
String get cacheTempDirectoryDesc =>
'Temporary files from downloads and audio conversion.';
@override
String get cacheCoverImage => 'Cover image cache';
@override
String get cacheCoverImageDesc =>
'Downloaded album and track cover art. Will re-download when viewed.';
@override
String get cacheLibraryCover => 'Library cover cache';
@override
String get cacheLibraryCoverDesc =>
'Cover art extracted from local music files. Will re-extract on next scan.';
@override
String get cacheExploreFeed => 'Explore feed cache';
@override
String get cacheExploreFeedDesc =>
'Explore tab content (new releases, trending). Will refresh on next visit.';
@override
String get cacheTrackLookup => 'Track lookup cache';
@override
String get cacheTrackLookupDesc =>
'Spotify/Deezer track ID lookups. Clearing may slow next few searches.';
@override
String get cacheCleanupUnusedDesc =>
'Remove orphaned download history and library entries for missing files.';
@override
String get cacheNoData => 'No cached data';
@override
String cacheSizeWithFiles(String size, int count) {
return '$size in $count files';
}
@override
String cacheSizeOnly(String size) {
return '$size';
}
@override
String cacheEntries(int count) {
return '$count entries';
}
@override
String cacheClearSuccess(String target) {
return 'Cleared: $target';
}
@override
String get cacheClearConfirmTitle => 'Clear cache?';
@override
String cacheClearConfirmMessage(String target) {
return 'This will clear cached data for $target. Downloaded music files will not be deleted.';
}
@override
String get cacheClearAllConfirmTitle => 'Clear all cache?';
@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';
@override
String get cacheCleanupUnused => 'Cleanup unused data';
@override
String get cacheCleanupUnusedSubtitle =>
'Remove orphaned download history and missing library entries';
@override
String cacheCleanupResult(int downloadCount, int libraryCount) {
return 'Cleanup completed: $downloadCount orphaned downloads, $libraryCount missing library entries';
}
@override
String get cacheRefreshStats => 'Refresh stats';
@override
String get trackSaveCoverArt => 'Save Cover Art';
@override
String get trackSaveCoverArtSubtitle => 'Save album art as .jpg file';
@override
String get trackSaveLyrics => 'Save Lyrics (.lrc)';
@override
String get trackSaveLyricsSubtitle => 'Fetch and save lyrics as .lrc file';
@override
String get trackSaveLyricsProgress => 'Saving lyrics...';
@override
String get trackReEnrich => 'Re-enrich';
@override
String get trackReEnrichOnlineSubtitle =>
'Search metadata online and embed into file';
@override
String get trackEditMetadata => 'Edit Metadata';
@override
String trackCoverSaved(String fileName) {
return 'Cover art saved to $fileName';
}
@override
String get trackCoverNoSource => 'No cover art source available';
@override
String trackLyricsSaved(String fileName) {
return 'Lyrics saved to $fileName';
}
@override
String get trackReEnrichProgress => 'Re-enriching metadata...';
@override
String get trackReEnrichSearching => 'Searching metadata online...';
@override
String get trackReEnrichSuccess => 'Metadata re-enriched successfully';
@override
String get trackReEnrichFfmpegFailed => 'FFmpeg metadata embed failed';
@override
String get queueFlacAction => 'Queue 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';
}
@override
String queueFlacFindingProgress(int current, int total) {
return 'Finding FLAC matches... ($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';
}
@override
String trackSaveFailed(String error) {
return 'Failed: $error';
}
@override
String get trackConvertFormat => 'Convert Format';
@override
String get trackConvertFormatSubtitle => 'Convert to MP3 or Opus';
@override
String get trackConvertTitle => 'Convert Audio';
@override
String get trackConvertTargetFormat => 'Target Format';
@override
String get trackConvertBitrate => 'Bitrate';
@override
String get trackConvertConfirmTitle => 'Confirm Conversion';
@override
String trackConvertConfirmMessage(
String sourceFormat,
String targetFormat,
String bitrate,
) {
return 'Convert from $sourceFormat to $targetFormat at $bitrate?\n\nThe original file will be deleted after conversion.';
}
@override
String trackConvertConfirmMessageLossless(
String sourceFormat,
String targetFormat,
) {
return 'Convert from $sourceFormat to $targetFormat? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.';
}
@override
String get trackConvertLosslessHint =>
'Lossless conversion — no quality loss';
@override
String get trackConvertConverting => 'Converting audio...';
@override
String trackConvertSuccess(String format) {
return 'Converted to $format successfully';
}
@override
String get trackConvertFailed => 'Conversion failed';
@override
String get cueSplitTitle => 'Split CUE Sheet';
@override
String get cueSplitSubtitle => 'Split CUE+FLAC into individual tracks';
@override
String cueSplitAlbum(String album) {
return 'Album: $album';
}
@override
String cueSplitArtist(String artist) {
return 'Artist: $artist';
}
@override
String cueSplitTrackCount(int count) {
return '$count tracks';
}
@override
String get cueSplitConfirmTitle => 'Split CUE Album';
@override
String cueSplitConfirmMessage(String album, int count) {
return 'Split \"$album\" into $count individual FLAC files?\n\nFiles will be saved to the same directory.';
}
@override
String cueSplitSplitting(int current, int total) {
return 'Splitting CUE sheet... ($current/$total)';
}
@override
String cueSplitSuccess(int count) {
return 'Split into $count tracks successfully';
}
@override
String get cueSplitFailed => 'CUE split failed';
@override
String get cueSplitNoAudioFile => 'Audio file not found for this CUE sheet';
@override
String get cueSplitButton => 'Split into Tracks';
@override
String get actionCreate => 'Create';
@override
String get collectionFoldersTitle => 'My folders';
@override
String get collectionWishlist => 'Wishlist';
@override
String get collectionLoved => 'Loved';
@override
String get collectionPlaylists => 'Playlists';
@override
String get collectionPlaylist => 'Playlist';
@override
String get collectionAddToPlaylist => 'Add to playlist';
@override
String get collectionCreatePlaylist => 'Create playlist';
@override
String get collectionNoPlaylistsYet => 'No playlists yet';
@override
String get collectionNoPlaylistsSubtitle =>
'Create a playlist to start categorizing tracks';
@override
String collectionPlaylistTracks(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count tracks',
one: '1 track',
);
return '$_temp0';
}
@override
String collectionAddedToPlaylist(String playlistName) {
return 'Added to \"$playlistName\"';
}
@override
String collectionAlreadyInPlaylist(String playlistName) {
return 'Already in \"$playlistName\"';
}
@override
String get collectionPlaylistCreated => 'Playlist created';
@override
String get collectionPlaylistNameHint => 'Playlist name';
@override
String get collectionPlaylistNameRequired => 'Playlist name is required';
@override
String get collectionRenamePlaylist => 'Rename playlist';
@override
String get collectionDeletePlaylist => 'Delete playlist';
@override
String collectionDeletePlaylistMessage(String playlistName) {
return 'Delete \"$playlistName\" and all tracks inside it?';
}
@override
String get collectionPlaylistDeleted => 'Playlist deleted';
@override
String get collectionPlaylistRenamed => 'Playlist renamed';
@override
String get collectionWishlistEmptyTitle => 'Wishlist is empty';
@override
String get collectionWishlistEmptySubtitle =>
'Tap + on tracks to save what you want to download later';
@override
String get collectionLovedEmptyTitle => 'Loved folder is empty';
@override
String get collectionLovedEmptySubtitle =>
'Tap love on tracks to keep your favorites';
@override
String get collectionPlaylistEmptyTitle => 'Playlist is empty';
@override
String get collectionPlaylistEmptySubtitle =>
'Long-press + on any track to add it here';
@override
String get collectionRemoveFromPlaylist => 'Remove from playlist';
@override
String get collectionRemoveFromFolder => 'Remove from folder';
@override
String collectionRemoved(String trackName) {
return '\"$trackName\" removed';
}
@override
String collectionAddedToLoved(String trackName) {
return '\"$trackName\" added to Loved';
}
@override
String collectionRemovedFromLoved(String trackName) {
return '\"$trackName\" removed from Loved';
}
@override
String collectionAddedToWishlist(String trackName) {
return '\"$trackName\" added to Wishlist';
}
@override
String collectionRemovedFromWishlist(String trackName) {
return '\"$trackName\" removed from Wishlist';
}
@override
String get trackOptionAddToLoved => 'Add to Loved';
@override
String get trackOptionRemoveFromLoved => 'Remove from Loved';
@override
String get trackOptionAddToWishlist => 'Add to Wishlist';
@override
String get trackOptionRemoveFromWishlist => 'Remove from Wishlist';
@override
String get collectionPlaylistChangeCover => 'Change cover image';
@override
String get collectionPlaylistRemoveCover => 'Remove cover image';
@override
String selectionShareCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Share $count $_temp0';
}
@override
String get selectionShareNoFiles => 'No shareable files found';
@override
String selectionConvertCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Convert $count $_temp0';
}
@override
String get selectionConvertNoConvertible => 'No convertible tracks selected';
@override
String get selectionBatchConvertConfirmTitle => 'Batch Convert';
@override
String selectionBatchConvertConfirmMessage(
int count,
String format,
String bitrate,
) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Convert $count $_temp0 to $format at $bitrate?\n\nOriginal files will be deleted after conversion.';
}
@override
String selectionBatchConvertConfirmMessageLossless(int count, String format) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'tracks',
one: 'track',
);
return 'Convert $count $_temp0 to $format? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.';
}
@override
String selectionBatchConvertProgress(int current, int total) {
return 'Converting $current of $total...';
}
@override
String selectionBatchConvertSuccess(int success, int total, String format) {
return 'Converted $success of $total tracks to $format';
}
@override
String downloadedAlbumDownloadedCount(int count) {
return '$count downloaded';
}
@override
String get downloadUseAlbumArtistForFoldersAlbumSubtitle =>
'Artist folders use Album Artist when available';
@override
String get downloadUseAlbumArtistForFoldersTrackSubtitle =>
'Artist folders use Track Artist only';
@override
String get lyricsProvidersTitle => 'Lyrics Providers';
@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 always run before built-in providers. At least one provider must remain enabled.';
@override
String lyricsProvidersEnabledSection(int count) {
return 'Enabled ($count)';
}
@override
String lyricsProvidersDisabledSection(int count) {
return 'Disabled ($count)';
}
@override
String get lyricsProvidersAtLeastOne =>
'At least one provider must remain enabled';
@override
String get lyricsProvidersSaved => 'Lyrics provider priority saved';
@override
String get lyricsProvidersDiscardContent =>
'You have unsaved changes that will be lost.';
@override
String get lyricsProviderSpotifyApiDesc =>
'Spotify-sourced synced lyrics via community API';
@override
String get lyricsProviderLrclibDesc => 'Open-source synced lyrics database';
@override
String get lyricsProviderNeteaseDesc =>
'NetEase Cloud Music (good for Asian songs)';
@override
String get lyricsProviderMusixmatchDesc =>
'Largest lyrics database (multi-language)';
@override
String get lyricsProviderAppleMusicDesc =>
'Word-by-word synced lyrics (via proxy)';
@override
String get lyricsProviderQqMusicDesc =>
'QQ Music (good for Chinese songs, via proxy)';
@override
String get lyricsProviderExtensionDesc => 'Extension provider';
@override
String get safMigrationTitle => 'Storage Update Required';
@override
String get safMigrationMessage1 =>
'SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.';
@override
String get safMigrationMessage2 =>
'Please select your download folder again to switch to the new storage system.';
@override
String get safMigrationSuccess => 'Download folder updated to SAF mode';
@override
String get settingsDonate => 'Donate';
@override
String get settingsDonateSubtitle => 'Support SpotiFLAC-Mobile development';
@override
String get tooltipLoveAll => 'Love All';
@override
String get tooltipAddToPlaylist => 'Add to Playlist';
@override
String snackbarRemovedTracksFromLoved(int count) {
return 'Removed $count tracks from Loved';
}
@override
String snackbarAddedTracksToLoved(int count) {
return 'Added $count tracks to Loved';
}
@override
String get dialogDownloadAllTitle => 'Download All';
@override
String dialogDownloadAllMessage(int count) {
return 'Download $count tracks?';
}
@override
String get homeSkipAlreadyDownloaded => 'Skip already downloaded songs';
@override
String get homeGoToAlbum => 'Go to Album';
@override
String get homeAlbumInfoUnavailable => 'Album info not available';
@override
String get snackbarLoadingCueSheet => 'Loading CUE sheet...';
@override
String get snackbarMetadataSaved => 'Metadata saved successfully';
@override
String get snackbarFailedToEmbedLyrics => 'Failed to embed lyrics';
@override
String get snackbarFailedToWriteStorage => 'Failed to write back to storage';
@override
String snackbarError(String error) {
return 'Error: $error';
}
@override
String get snackbarNoActionDefined => 'No action defined for this button';
@override
String get noTracksFoundForAlbum => 'No tracks found for this album';
@override
String get downloadLocationSubtitle =>
'Choose storage mode for downloaded files.';
@override
String get storageModeAppFolder => 'App folder (non-SAF)';
@override
String get storageModeAppFolderSubtitle => 'Use default Music/SpotiFLAC path';
@override
String get storageModeSaf => 'SAF folder';
@override
String get storageModeSafSubtitle =>
'Pick folder via Android Storage Access Framework';
@override
String get downloadFilenameDescription =>
'Customize how your files are named.';
@override
String get downloadFilenameInsertTag => 'Tap to insert tag:';
@override
String get downloadSeparateSinglesEnabled => 'Albums/ and Singles/ folders';
@override
String get downloadSeparateSinglesDisabled => 'All files in same structure';
@override
String get downloadArtistNameFilters => 'Artist Name Filters';
@override
String get downloadCreatePlaylistSourceFolder =>
'Create playlist source folder';
@override
String get downloadCreatePlaylistSourceFolderEnabled =>
'Playlist downloads use Playlist/ plus your normal folder structure.';
@override
String get downloadCreatePlaylistSourceFolderDisabled =>
'Playlist downloads use the normal folder structure only.';
@override
String get downloadCreatePlaylistSourceFolderRedundant =>
'By Playlist already places downloads inside a playlist folder.';
@override
String get downloadSongLinkRegion => 'SongLink Region';
@override
String get downloadNetworkCompatibilityMode => 'Network compatibility mode';
@override
String get downloadNetworkCompatibilityModeEnabled =>
'Enabled: try HTTP + accept invalid TLS certificates (unsafe)';
@override
String get downloadNetworkCompatibilityModeDisabled =>
'Off: strict HTTPS certificate validation (recommended)';
@override
String get downloadSelectServiceToEnable =>
'Select a built-in service to enable';
@override
String get downloadSelectTidalQobuz =>
'Select Tidal or Qobuz above to configure quality';
@override
String get downloadEmbedLyricsDisabled =>
'Disabled while Embed Metadata is turned off';
@override
String get downloadNeteaseIncludeTranslation =>
'Netease: Include Translation';
@override
String get downloadNeteaseIncludeTranslationEnabled =>
'Append translated lyrics when available';
@override
String get downloadNeteaseIncludeTranslationDisabled =>
'Use original lyrics only';
@override
String get downloadNeteaseIncludeRomanization =>
'Netease: Include Romanization';
@override
String get downloadNeteaseIncludeRomanizationEnabled =>
'Append romanized lyrics when available';
@override
String get downloadNeteaseIncludeRomanizationDisabled => 'Disabled';
@override
String get downloadAppleQqMultiPerson => 'Apple/QQ Multi-Person Word-by-Word';
@override
String get downloadAppleQqMultiPersonEnabled =>
'Enable v1/v2 speaker and [bg:] tags';
@override
String get downloadAppleQqMultiPersonDisabled =>
'Simplified word-by-word formatting';
@override
String get downloadMusixmatchLanguage => 'Musixmatch Language';
@override
String get downloadMusixmatchLanguageAuto => 'Auto (original)';
@override
String get downloadFilterContributing =>
'Filter contributing artists in Album Artist';
@override
String get downloadFilterContributingEnabled =>
'Album Artist metadata uses primary artist only';
@override
String get downloadFilterContributingDisabled =>
'Keep full Album Artist metadata value';
@override
String get downloadProvidersNoneEnabled => 'None enabled';
@override
String get downloadMusixmatchLanguageCode => 'Language code';
@override
String get downloadMusixmatchLanguageHint => 'auto / en / es / ja';
@override
String get downloadMusixmatchLanguageDesc =>
'Set preferred language code (example: en, es, ja). Leave empty for auto.';
@override
String get downloadMusixmatchAuto => 'Auto';
@override
String get downloadNetworkAnySubtitle => 'WiFi + Mobile Data';
@override
String get downloadNetworkWifiOnlySubtitle =>
'Pause downloads on mobile data';
@override
String get downloadSongLinkRegionDesc =>
'Used as userCountry for SongLink API lookup.';
@override
String get snackbarUnsupportedAudioFormat => 'Unsupported audio format';
@override
String get cacheRefresh => 'Refresh';
@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',
);
return 'Download $trackCount $_temp0 from $playlistCount $_temp1?';
}
@override
String bulkDownloadPlaylistsButton(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'playlists',
one: 'playlist',
);
return 'Download $count $_temp0';
}
@override
String get bulkDownloadSelectPlaylists => 'Select playlists to download';
@override
String get snackbarSelectedPlaylistsEmpty =>
'Selected playlists have no tracks';
@override
String playlistsCount(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '$count playlists',
one: '1 playlist',
);
return '$_temp0';
}
@override
String get editMetadataAutoFill => 'Auto-fill from online';
@override
String get editMetadataAutoFillDesc =>
'Select fields to fill automatically from online metadata';
@override
String get editMetadataAutoFillFetch => 'Fetch & Fill';
@override
String get editMetadataAutoFillSearching => 'Searching online...';
@override
String get editMetadataAutoFillNoResults =>
'No matching metadata found online';
@override
String editMetadataAutoFillDone(int count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: 'fields',
one: 'field',
);
return 'Filled $count $_temp0 from online metadata';
}
@override
String get editMetadataAutoFillNoneSelected =>
'Select at least one field to auto-fill';
@override
String get editMetadataFieldTitle => 'Title';
@override
String get editMetadataFieldArtist => 'Artist';
@override
String get editMetadataFieldAlbum => 'Album';
@override
String get editMetadataFieldAlbumArtist => 'Album Artist';
@override
String get editMetadataFieldDate => 'Date';
@override
String get editMetadataFieldTrackNum => 'Track #';
@override
String get editMetadataFieldDiscNum => 'Disc #';
@override
String get editMetadataFieldGenre => 'Genre';
@override
String get editMetadataFieldIsrc => 'ISRC';
@override
String get editMetadataFieldLabel => 'Label';
@override
String get editMetadataFieldCopyright => 'Copyright';
@override
String get editMetadataFieldCover => 'Cover Art';
@override
String get editMetadataSelectAll => 'All';
@override
String get editMetadataSelectEmpty => 'Empty only';
}