diff --git a/.gitignore b/.gitignore index 46cdb177..a790be83 100644 --- a/.gitignore +++ b/.gitignore @@ -29,6 +29,9 @@ AGENTS.md *.aab *.ipa +# Generated by Flutter from lib/l10n/arb during pub get/build. +/lib/l10n/app_localizations*.dart + # Local JavaScript tooling (the app itself has no Node dependency) /node_modules/ /bun.lock diff --git a/go_backend/extension_lifecycle_signed_session_timeout_test.go b/go_backend/extension_lifecycle_signed_session_timeout_test.go index 75b4ac0e..833c460f 100644 --- a/go_backend/extension_lifecycle_signed_session_timeout_test.go +++ b/go_backend/extension_lifecycle_signed_session_timeout_test.go @@ -118,16 +118,11 @@ func TestLifecycleTimeoutQuarantinesUnresponsiveCleanupVM(t *testing.T) { func TestSignedSessionGrantRetryHonorsCancellationAndReleasesCoordinator(t *testing.T) { previousWait := signedSessionRetryWaitContext - previousLegacyWait := signedSessionRetryWait - signedSessionRetryWait = nil signedSessionRetryWaitContext = func(ctx context.Context, _ time.Duration) error { <-ctx.Done() return ctx.Err() } - t.Cleanup(func() { - signedSessionRetryWait = previousLegacyWait - signedSessionRetryWaitContext = previousWait - }) + t.Cleanup(func() { signedSessionRetryWaitContext = previousWait }) var calls atomic.Int32 transport := roundTripFunc(func(req *http.Request) (*http.Response, error) { diff --git a/go_backend/extension_runtime.go b/go_backend/extension_runtime.go index 0406ed53..4c5bb490 100644 --- a/go_backend/extension_runtime.go +++ b/go_backend/extension_runtime.go @@ -780,10 +780,6 @@ func (r *extensionRuntime) RegisterAPIs(vm *goja.Runtime) { logObj.Set("error", r.logError) vm.Set("log", logObj) - gobackendObj := vm.NewObject() - gobackendObj.Set("sanitizeFilename", r.sanitizeFilenameWrapper) - vm.Set("gobackend", gobackendObj) - vm.Set("fetch", r.fetchPolyfill) vm.Set("atob", r.atobPolyfill) diff --git a/go_backend/extension_runtime_supplement_test.go b/go_backend/extension_runtime_supplement_test.go index 7200d2ff..20bc720c 100644 --- a/go_backend/extension_runtime_supplement_test.go +++ b/go_backend/extension_runtime_supplement_test.go @@ -1144,9 +1144,6 @@ func TestExtensionRuntimeUtilityAPIs(t *testing.T) { runtime.logInfo(goja.FunctionCall{Arguments: []goja.Value{vm.ToValue("info")}}) runtime.logWarn(goja.FunctionCall{Arguments: []goja.Value{vm.ToValue("warn")}}) runtime.logError(goja.FunctionCall{Arguments: []goja.Value{vm.ToValue("error")}}) - if clean := runtime.sanitizeFilenameWrapper(goja.FunctionCall{Arguments: []goja.Value{vm.ToValue("A/B?")}}).String(); strings.ContainsAny(clean, "/?") { - t.Fatalf("sanitize wrapper = %q", clean) - } } func TestClassifySignedSessionExpiredAsVerification(t *testing.T) { diff --git a/go_backend/extension_runtime_utils.go b/go_backend/extension_runtime_utils.go index b8c00297..29a39f05 100644 --- a/go_backend/extension_runtime_utils.go +++ b/go_backend/extension_runtime_utils.go @@ -372,14 +372,6 @@ func (r *extensionRuntime) formatLogArgs(args []goja.Value) string { return strings.Join(parts, " ") } -func (r *extensionRuntime) sanitizeFilenameWrapper(call goja.FunctionCall) goja.Value { - if len(call.Arguments) < 1 { - return r.vm.ToValue("") - } - input := call.Arguments[0].String() - return r.vm.ToValue(sanitizeFilename(input)) -} - func (r *extensionRuntime) RegisterGoBackendAPIs(vm *goja.Runtime) { gobackendObj := vm.Get("gobackend") if gobackendObj == nil || goja.IsUndefined(gobackendObj) { diff --git a/go_backend/extension_signed_session.go b/go_backend/extension_signed_session.go index cb91f4aa..63c30d9a 100644 --- a/go_backend/extension_signed_session.go +++ b/go_backend/extension_signed_session.go @@ -36,13 +36,9 @@ const ( ) var ( - pendingSignedSessionGrants = make(map[string]string) - pendingSignedSessionGrantsMu sync.Mutex - signedSessionCoordinators sync.Map - // signedSessionRetryWait is retained as a test hook for callers that used - // the old duration-only seam. Production waits use the context-aware hook - // below; a non-nil legacy hook short-circuits the delay in tests. - signedSessionRetryWait func(time.Duration) + pendingSignedSessionGrants = make(map[string]string) + pendingSignedSessionGrantsMu sync.Mutex + signedSessionCoordinators sync.Map signedSessionRetryWaitContext = sleepRetry signedSessionProviderWait = sleepRetry signedSessionRequestNow = time.Now @@ -654,22 +650,6 @@ func waitSignedSessionRetry(ctx context.Context, delay time.Duration) error { if ctx == nil { ctx = context.Background() } - // Keep the old duration-only hook useful for existing package tests without - // allowing production to fall back to an uninterruptible time.Sleep. The - // default hook is nil; tests install an immediate recorder/no-op here. - if legacyWait := signedSessionRetryWait; legacyWait != nil { - done := make(chan struct{}) - go func() { - legacyWait(delay) - close(done) - }() - select { - case <-done: - return nil - case <-ctx.Done(): - return ctx.Err() - } - } return signedSessionRetryWaitContext(ctx, delay) } diff --git a/go_backend/extension_signed_session_test.go b/go_backend/extension_signed_session_test.go index 7308f735..1524d734 100644 --- a/go_backend/extension_signed_session_test.go +++ b/go_backend/extension_signed_session_test.go @@ -1836,12 +1836,13 @@ func TestExchangeSignedSessionGrant(t *testing.T) { pendingSignedSessionGrantsMu.Lock() pendingSignedSessionGrants = make(map[string]string) pendingSignedSessionGrantsMu.Unlock() - previousWait := signedSessionRetryWait + previousWait := signedSessionRetryWaitContext var waits []time.Duration - signedSessionRetryWait = func(delay time.Duration) { + signedSessionRetryWaitContext = func(_ context.Context, delay time.Duration) error { waits = append(waits, delay) + return nil } - t.Cleanup(func() { signedSessionRetryWait = previousWait }) + t.Cleanup(func() { signedSessionRetryWaitContext = previousWait }) calls := 0 transport := roundTripFunc(func(req *http.Request) (*http.Response, error) { @@ -1895,9 +1896,11 @@ func TestExchangeSignedSessionGrant(t *testing.T) { pendingSignedSessionGrantsMu.Lock() pendingSignedSessionGrants = make(map[string]string) pendingSignedSessionGrantsMu.Unlock() - previousWait := signedSessionRetryWait - signedSessionRetryWait = func(time.Duration) {} - t.Cleanup(func() { signedSessionRetryWait = previousWait }) + previousWait := signedSessionRetryWaitContext + signedSessionRetryWaitContext = func(context.Context, time.Duration) error { + return nil + } + t.Cleanup(func() { signedSessionRetryWaitContext = previousWait }) calls := 0 transport := roundTripFunc(func(req *http.Request) (*http.Response, error) { diff --git a/lib/l10n/app_localizations.dart b/lib/l10n/app_localizations.dart deleted file mode 100644 index fa109a1c..00000000 --- a/lib/l10n/app_localizations.dart +++ /dev/null @@ -1,8327 +0,0 @@ -import 'dart:async'; - -import 'package:flutter/foundation.dart'; -import 'package:flutter/widgets.dart'; -import 'package:flutter_localizations/flutter_localizations.dart'; -import 'package:intl/intl.dart' as intl; - -import 'app_localizations_de.dart'; -import 'app_localizations_en.dart'; -import 'app_localizations_es.dart'; -import 'app_localizations_fr.dart'; -import 'app_localizations_id.dart'; -import 'app_localizations_ja.dart'; -import 'app_localizations_ko.dart'; -import 'app_localizations_pt.dart'; -import 'app_localizations_ru.dart'; -import 'app_localizations_tr.dart'; -import 'app_localizations_uk.dart'; - -// ignore_for_file: type=lint - -/// Callers can lookup localized strings with an instance of AppLocalizations -/// returned by `AppLocalizations.of(context)`. -/// -/// Applications need to include `AppLocalizations.delegate()` in their app's -/// `localizationDelegates` list, and the locales they support in the app's -/// `supportedLocales` list. For example: -/// -/// ```dart -/// import 'l10n/app_localizations.dart'; -/// -/// return MaterialApp( -/// localizationsDelegates: AppLocalizations.localizationsDelegates, -/// supportedLocales: AppLocalizations.supportedLocales, -/// home: MyApplicationHome(), -/// ); -/// ``` -/// -/// ## Update pubspec.yaml -/// -/// Please make sure to update your pubspec.yaml to include the following -/// packages: -/// -/// ```yaml -/// dependencies: -/// # Internationalization support. -/// flutter_localizations: -/// sdk: flutter -/// intl: any # Use the pinned version from flutter_localizations -/// -/// # Rest of dependencies -/// ``` -/// -/// ## iOS Applications -/// -/// iOS applications define key application metadata, including supported -/// locales, in an Info.plist file that is built into the application bundle. -/// To configure the locales supported by your app, you’ll need to edit this -/// file. -/// -/// First, open your project’s ios/Runner.xcworkspace Xcode workspace file. -/// Then, in the Project Navigator, open the Info.plist file under the Runner -/// project’s Runner folder. -/// -/// Next, select the Information Property List item, select Add Item from the -/// Editor menu, then select Localizations from the pop-up menu. -/// -/// Select and expand the newly-created Localizations item then, for each -/// locale your application supports, add a new item and select the locale -/// you wish to add from the pop-up menu in the Value field. This list should -/// be consistent with the languages listed in the AppLocalizations.supportedLocales -/// property. -abstract class AppLocalizations { - AppLocalizations(String locale) - : localeName = intl.Intl.canonicalizedLocale(locale.toString()); - - final String localeName; - - static AppLocalizations of(BuildContext context) { - return Localizations.of(context, AppLocalizations)!; - } - - static const LocalizationsDelegate delegate = - _AppLocalizationsDelegate(); - - /// A list of this localizations delegate along with the default localizations - /// delegates. - /// - /// Returns a list of localizations delegates containing this delegate along with - /// GlobalMaterialLocalizations.delegate, GlobalCupertinoLocalizations.delegate, - /// and GlobalWidgetsLocalizations.delegate. - /// - /// Additional delegates can be added by appending to this list in - /// MaterialApp. This list does not have to be used at all if a custom list - /// of delegates is preferred or required. - static const List> localizationsDelegates = - >[ - delegate, - GlobalMaterialLocalizations.delegate, - GlobalCupertinoLocalizations.delegate, - GlobalWidgetsLocalizations.delegate, - ]; - - /// A list of this localizations delegate's supported locales. - static const List supportedLocales = [ - Locale('de'), - Locale('en'), - Locale('es'), - Locale('es', 'ES'), - Locale('fr'), - Locale('id'), - Locale('ja'), - Locale('ko'), - Locale('pt'), - Locale('pt', 'PT'), - Locale('ru'), - Locale('tr'), - Locale('uk'), - ]; - - /// App name - DO NOT TRANSLATE - /// - /// In en, this message translates to: - /// **'SpotiFLAC Mobile'** - String get appName; - - /// Bottom navigation - Home tab - /// - /// In en, this message translates to: - /// **'Home'** - String get navHome; - - /// Bottom navigation - Library tab - /// - /// In en, this message translates to: - /// **'Library'** - String get navLibrary; - - /// Bottom navigation - Settings tab - /// - /// In en, this message translates to: - /// **'Settings'** - String get navSettings; - - /// Bottom navigation - Extension repo tab - /// - /// In en, this message translates to: - /// **'Repo'** - String get navStore; - - /// Home screen title - /// - /// In en, this message translates to: - /// **'Home'** - String get homeTitle; - - /// Subtitle shown below search box - /// - /// In en, this message translates to: - /// **'Paste a supported URL or search by name'** - String get homeSubtitle; - - /// Title shown on home when no providers are available yet - /// - /// In en, this message translates to: - /// **'No search providers yet'** - String get homeEmptyTitle; - - /// Subtitle shown on home when no providers are available yet - /// - /// In en, this message translates to: - /// **'Install an extension to continue.'** - String get homeEmptySubtitle; - - /// Info text about supported URL types - /// - /// In en, this message translates to: - /// **'Supports: Track, Album, Playlist, Artist URLs'** - String get homeSupports; - - /// Section header for recent searches - /// - /// In en, this message translates to: - /// **'Recent'** - String get homeRecent; - - /// Filter chip - show all items - /// - /// In en, this message translates to: - /// **'All'** - String get historyFilterAll; - - /// Filter chip - show albums only - /// - /// In en, this message translates to: - /// **'Albums'** - String get historyFilterAlbums; - - /// Filter chip - show singles only - /// - /// In en, this message translates to: - /// **'Singles'** - String get historyFilterSingles; - - /// Search bar placeholder in history - /// - /// In en, this message translates to: - /// **'Search history...'** - String get historySearchHint; - - /// Settings screen title - /// - /// In en, this message translates to: - /// **'Settings'** - String get settingsTitle; - - /// Settings section - download options - /// - /// In en, this message translates to: - /// **'Download'** - String get settingsDownload; - - /// Settings section - visual customization - /// - /// In en, this message translates to: - /// **'Appearance'** - String get settingsAppearance; - - /// Settings section - extension management - /// - /// In en, this message translates to: - /// **'Extensions'** - String get settingsExtensions; - - /// Settings section - app info - /// - /// In en, this message translates to: - /// **'About'** - String get settingsAbout; - - /// Download settings page title - /// - /// In en, this message translates to: - /// **'Download'** - String get downloadTitle; - - /// Subtitle for ask quality toggle - /// - /// In en, this message translates to: - /// **'Show quality picker for each download'** - String get downloadAskQualitySubtitle; - - /// Setting for output filename pattern - /// - /// In en, this message translates to: - /// **'Filename Format'** - String get downloadFilenameFormat; - - /// Setting for output filename pattern for singles/EPs - /// - /// In en, this message translates to: - /// **'Single Filename Format'** - String get downloadSingleFilenameFormat; - - /// Subtitle description for single filename format setting - /// - /// In en, this message translates to: - /// **'Filename pattern for singles and EPs. Uses the same tags as the album format.'** - String get downloadSingleFilenameFormatDescription; - - /// Title of the folder organization picker bottom sheet - /// - /// In en, this message translates to: - /// **'Folder Organization'** - String get downloadFolderOrganization; - - /// Appearance settings page title - /// - /// In en, this message translates to: - /// **'Appearance'** - String get appearanceTitle; - - /// Follow system theme - /// - /// In en, this message translates to: - /// **'System'** - String get appearanceThemeSystem; - - /// Light theme - /// - /// In en, this message translates to: - /// **'Light'** - String get appearanceThemeLight; - - /// Dark theme - /// - /// In en, this message translates to: - /// **'Dark'** - String get appearanceThemeDark; - - /// Material You dynamic colors - /// - /// In en, this message translates to: - /// **'Dynamic Color'** - String get appearanceDynamicColor; - - /// Subtitle for dynamic color - /// - /// In en, this message translates to: - /// **'Use colors from your wallpaper'** - String get appearanceDynamicColorSubtitle; - - /// Layout style for history - /// - /// In en, this message translates to: - /// **'History View'** - String get appearanceHistoryView; - - /// List layout option - /// - /// In en, this message translates to: - /// **'List'** - String get appearanceHistoryViewList; - - /// Grid layout option - /// - /// In en, this message translates to: - /// **'Grid'** - String get appearanceHistoryViewGrid; - - /// Main search provider setting - /// - /// In en, this message translates to: - /// **'Primary Provider'** - String get optionsPrimaryProvider; - - /// Subtitle for primary provider - /// - /// In en, this message translates to: - /// **'Service used for searching by track or album name'** - String get optionsPrimaryProviderSubtitle; - - /// Shows active extension name - /// - /// In en, this message translates to: - /// **'Using extension: {extensionName}'** - String optionsUsingExtension(String extensionName); - - /// Title for the preferred default search tab setting - /// - /// In en, this message translates to: - /// **'Default Search Tab'** - String get optionsDefaultSearchTab; - - /// Subtitle for the preferred default search tab setting - /// - /// In en, this message translates to: - /// **'Choose which tab opens first for new search results.'** - String get optionsDefaultSearchTabSubtitle; - - /// Auto-retry with other services - /// - /// In en, this message translates to: - /// **'Auto Fallback'** - String get optionsAutoFallback; - - /// Subtitle for auto fallback - /// - /// In en, this message translates to: - /// **'Try other services if download fails'** - String get optionsAutoFallbackSubtitle; - - /// Embed lyrics in audio files - /// - /// In en, this message translates to: - /// **'Embed Lyrics'** - String get optionsEmbedLyrics; - - /// Subtitle for embed lyrics - /// - /// In en, this message translates to: - /// **'Save synced lyrics alongside your downloaded tracks'** - String get optionsEmbedLyricsSubtitle; - - /// Title for ReplayGain setting toggle - /// - /// In en, this message translates to: - /// **'ReplayGain'** - String get optionsReplayGain; - - /// Subtitle when ReplayGain is enabled - /// - /// In en, this message translates to: - /// **'Scan loudness and embed ReplayGain tags (EBU R128)'** - String get optionsReplayGainSubtitleOn; - - /// Subtitle when ReplayGain is disabled - /// - /// In en, this message translates to: - /// **'Disabled: no loudness normalization tags'** - String get optionsReplayGainSubtitleOff; - - /// Three-dot menu option to scan loudness and write ReplayGain tags - /// - /// In en, this message translates to: - /// **'Rescan ReplayGain'** - String get trackReplayGain; - - /// Snackbar/progress message while scanning ReplayGain for a single track - /// - /// In en, this message translates to: - /// **'Analyzing loudness...'** - String get trackReplayGainScanning; - - /// Snackbar message after ReplayGain tags written for a single track - /// - /// In en, this message translates to: - /// **'ReplayGain tags added'** - String get trackReplayGainSuccess; - - /// Snackbar message when ReplayGain scan/write fails - /// - /// In en, this message translates to: - /// **'Failed to add ReplayGain tags'** - String get trackReplayGainFailed; - - /// Batch selection action button label for ReplayGain - /// - /// In en, this message translates to: - /// **'ReplayGain ({count})'** - String selectionReplayGainCount(int count); - - /// Title of the batch ReplayGain confirmation dialog - /// - /// In en, this message translates to: - /// **'Add ReplayGain'** - String get replayGainBatchConfirmTitle; - - /// Message of the batch ReplayGain confirmation dialog - /// - /// In en, this message translates to: - /// **'Analyze loudness and write ReplayGain tags to {count} track(s)?'** - String replayGainBatchConfirmMessage(int count); - - /// Progress dialog title while batch scanning ReplayGain - /// - /// In en, this message translates to: - /// **'Analyzing ReplayGain...'** - String get replayGainBatchAnalyzing; - - /// Snackbar after batch ReplayGain completes - /// - /// In en, this message translates to: - /// **'ReplayGain added to {success} of {total} tracks'** - String replayGainBatchSuccess(int success, int total); - - /// Setting title for how artist metadata is written into files - /// - /// In en, this message translates to: - /// **'Artist Tag Mode'** - String get optionsArtistTagMode; - - /// Bottom-sheet description for artist tag mode setting - /// - /// In en, this message translates to: - /// **'Choose how multiple artists are written into embedded tags.'** - String get optionsArtistTagModeDescription; - - /// Artist tag mode option that joins multiple artists into one value - /// - /// In en, this message translates to: - /// **'Single joined value'** - String get optionsArtistTagModeJoined; - - /// Subtitle for joined artist tag mode - /// - /// In en, this message translates to: - /// **'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'** - String get optionsArtistTagModeJoinedSubtitle; - - /// Artist tag mode option that writes repeated ARTIST tags for Vorbis formats - /// - /// In en, this message translates to: - /// **'Split tags for FLAC/Opus'** - String get optionsArtistTagModeSplitVorbis; - - /// Subtitle for split Vorbis artist tag mode - /// - /// In en, this message translates to: - /// **'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'** - String get optionsArtistTagModeSplitVorbisSubtitle; - - /// Show/hide repo tab - /// - /// In en, this message translates to: - /// **'Extension Repo'** - String get optionsExtensionStore; - - /// Subtitle for extension repo toggle - /// - /// In en, this message translates to: - /// **'Show Repo tab in navigation'** - String get optionsExtensionStoreSubtitle; - - /// Auto update check toggle - /// - /// In en, this message translates to: - /// **'Check for Updates'** - String get optionsCheckUpdates; - - /// Subtitle for update check - /// - /// In en, this message translates to: - /// **'Notify when new version is available'** - String get optionsCheckUpdatesSubtitle; - - /// Stable vs preview releases - /// - /// In en, this message translates to: - /// **'Update Channel'** - String get optionsUpdateChannel; - - /// Only stable updates - /// - /// In en, this message translates to: - /// **'Stable releases only'** - String get optionsUpdateChannelStable; - - /// Include beta/preview updates - /// - /// In en, this message translates to: - /// **'Get preview releases'** - String get optionsUpdateChannelPreview; - - /// Warning about preview channel - /// - /// In en, this message translates to: - /// **'Preview may contain bugs or incomplete features'** - String get optionsUpdateChannelWarning; - - /// Delete all download history - /// - /// In en, this message translates to: - /// **'Clear Download History'** - String get optionsClearHistory; - - /// Subtitle for clear history - /// - /// In en, this message translates to: - /// **'Remove all downloaded tracks from history'** - String get optionsClearHistorySubtitle; - - /// Enable verbose logs for debugging - /// - /// In en, this message translates to: - /// **'Detailed Logging'** - String get optionsDetailedLogging; - - /// Status when logging enabled - /// - /// In en, this message translates to: - /// **'Detailed logs are being recorded'** - String get optionsDetailedLoggingOn; - - /// Status when logging disabled - /// - /// In en, this message translates to: - /// **'Enable for bug reports'** - String get optionsDetailedLoggingOff; - - /// Extensions page title - /// - /// In en, this message translates to: - /// **'Extensions'** - String get extensionsTitle; - - /// Extension status - inactive - /// - /// In en, this message translates to: - /// **'Disabled'** - String get extensionsDisabled; - - /// Extension version display - /// - /// In en, this message translates to: - /// **'Version {version}'** - String extensionsVersion(String version); - - /// Uninstall extension button - /// - /// In en, this message translates to: - /// **'Uninstall'** - String get extensionsUninstall; - - /// Repo screen title - /// - /// In en, this message translates to: - /// **'Extension Repo'** - String get storeTitle; - - /// Repo search placeholder - /// - /// In en, this message translates to: - /// **'Search extensions...'** - String get storeSearch; - - /// Install extension button - /// - /// In en, this message translates to: - /// **'Install'** - String get storeInstall; - - /// Already installed badge - /// - /// In en, this message translates to: - /// **'Installed'** - String get storeInstalled; - - /// Update available button - /// - /// In en, this message translates to: - /// **'Update'** - String get storeUpdate; - - /// About page title - /// - /// In en, this message translates to: - /// **'About'** - String get aboutTitle; - - /// Section for contributors - /// - /// In en, this message translates to: - /// **'Contributors'** - String get aboutContributors; - - /// Role description for mobile dev - /// - /// In en, this message translates to: - /// **'Mobile version developer'** - String get aboutMobileDeveloper; - - /// Role description for original creator - /// - /// In en, this message translates to: - /// **'Creator of the original SpotiFLAC'** - String get aboutOriginalCreator; - - /// Role description for logo artist - /// - /// In en, this message translates to: - /// **'The talented artist who created our beautiful app logo!'** - String get aboutLogoArtist; - - /// Section for translators - /// - /// In en, this message translates to: - /// **'Translators'** - String get aboutTranslators; - - /// Section for special thanks - /// - /// In en, this message translates to: - /// **'Special Thanks'** - String get aboutSpecialThanks; - - /// Section for external links - /// - /// In en, this message translates to: - /// **'Links'** - String get aboutLinks; - - /// Link to mobile GitHub repo - /// - /// In en, this message translates to: - /// **'Mobile source code'** - String get aboutMobileSource; - - /// Link to PC GitHub repo - /// - /// In en, this message translates to: - /// **'PC source code'** - String get aboutPCSource; - - /// Link to Keep Android Open campaign website - /// - /// In en, this message translates to: - /// **'Keep Android Open'** - String get aboutKeepAndroidOpen; - - /// Link to report bugs - /// - /// In en, this message translates to: - /// **'Report an issue'** - String get aboutReportIssue; - - /// Subtitle for report issue - /// - /// In en, this message translates to: - /// **'Report any problems you encounter'** - String get aboutReportIssueSubtitle; - - /// Link to suggest features - /// - /// In en, this message translates to: - /// **'Feature request'** - String get aboutFeatureRequest; - - /// Subtitle for feature request - /// - /// In en, this message translates to: - /// **'Suggest new features for the app'** - String get aboutFeatureRequestSubtitle; - - /// Link to Telegram channel - /// - /// In en, this message translates to: - /// **'Telegram Channel'** - String get aboutTelegramChannel; - - /// Subtitle for Telegram channel - /// - /// In en, this message translates to: - /// **'Announcements and updates'** - String get aboutTelegramChannelSubtitle; - - /// Link to Telegram chat group - /// - /// In en, this message translates to: - /// **'Telegram Community'** - String get aboutTelegramChat; - - /// Subtitle for Telegram chat - /// - /// In en, this message translates to: - /// **'Chat with other users'** - String get aboutTelegramChatSubtitle; - - /// Section for social links - /// - /// In en, this message translates to: - /// **'Social'** - String get aboutSocial; - - /// Section for app info - /// - /// In en, this message translates to: - /// **'App'** - String get aboutApp; - - /// Version info label - /// - /// In en, this message translates to: - /// **'Version'** - String get aboutVersion; - - /// Credit description for binimum - /// - /// In en, this message translates to: - /// **'The creator of QQDL & HiFi API. This project helped shape lossless download support.'** - String get aboutBinimumDesc; - - /// Credit description for sachinsenal0x64 - /// - /// In en, this message translates to: - /// **'The original HiFi project creator. A foundation for lossless-source integration.'** - String get aboutSachinsenalDesc; - - /// Credit description for sjdonado - /// - /// In en, this message translates to: - /// **'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'** - String get aboutSjdonadoDesc; - - /// App description in header card - /// - /// In en, this message translates to: - /// **'Search music metadata, manage extensions, and organize your library.'** - String get aboutAppDescription; - - /// Section header for artist albums - /// - /// In en, this message translates to: - /// **'Albums'** - String get artistAlbums; - - /// Section header for singles/EPs - /// - /// In en, this message translates to: - /// **'Singles & EPs'** - String get artistSingles; - - /// Section header for compilations - /// - /// In en, this message translates to: - /// **'Compilations'** - String get artistCompilations; - - /// Section header for popular/top tracks - /// - /// In en, this message translates to: - /// **'Popular'** - String get artistPopular; - - /// Monthly listener count display - /// - /// In en, this message translates to: - /// **'{count} monthly listeners'** - String artistMonthlyListeners(String count); - - /// Metadata field - download service used - /// - /// In en, this message translates to: - /// **'Service'** - String get trackMetadataService; - - /// Action button - play track - /// - /// In en, this message translates to: - /// **'Play'** - String get trackMetadataPlay; - - /// Action button - share track - /// - /// In en, this message translates to: - /// **'Share'** - String get trackMetadataShare; - - /// Action button - delete track - /// - /// In en, this message translates to: - /// **'Delete'** - String get trackMetadataDelete; - - /// Button to request permission - /// - /// In en, this message translates to: - /// **'Grant Permission'** - String get setupGrantPermission; - - /// Skip current step button - /// - /// In en, this message translates to: - /// **'Skip for now'** - String get setupSkip; - - /// Title when storage access needed - /// - /// In en, this message translates to: - /// **'Storage Access Required'** - String get setupStorageAccessRequired; - - /// Android 11+ specific explanation - /// - /// In en, this message translates to: - /// **'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'** - String get setupStorageAccessMessageAndroid11; - - /// Button to open system settings - /// - /// In en, this message translates to: - /// **'Open Settings'** - String get setupOpenSettings; - - /// Error when permission denied - /// - /// In en, this message translates to: - /// **'Permission denied. Please grant all permissions to continue.'** - String get setupPermissionDeniedMessage; - - /// Generic permission required title - /// - /// In en, this message translates to: - /// **'{permissionType} Permission Required'** - String setupPermissionRequired(String permissionType); - - /// Generic permission required message - /// - /// In en, this message translates to: - /// **'{permissionType} permission is required for the best experience. You can change this later in Settings.'** - String setupPermissionRequiredMessage(String permissionType); - - /// Dialog title for default folder - /// - /// In en, this message translates to: - /// **'Use Default Folder?'** - String get setupUseDefaultFolder; - - /// Prompt when no folder selected - /// - /// In en, this message translates to: - /// **'No folder selected. Would you like to use the default Music folder?'** - String get setupNoFolderSelected; - - /// Button to use default folder - /// - /// In en, this message translates to: - /// **'Use Default'** - String get setupUseDefault; - - /// Download location dialog title - /// - /// In en, this message translates to: - /// **'Download Location'** - String get setupDownloadLocationTitle; - - /// iOS-specific folder info - /// - /// In en, this message translates to: - /// **'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'** - String get setupDownloadLocationIosMessage; - - /// iOS documents folder option - /// - /// In en, this message translates to: - /// **'App Documents Folder'** - String get setupAppDocumentsFolder; - - /// Subtitle for documents folder - /// - /// In en, this message translates to: - /// **'Recommended - accessible via Files app'** - String get setupAppDocumentsFolderSubtitle; - - /// iOS file picker option - /// - /// In en, this message translates to: - /// **'Choose from Files'** - String get setupChooseFromFiles; - - /// Subtitle for file picker - /// - /// In en, this message translates to: - /// **'Select iCloud or other location'** - String get setupChooseFromFilesSubtitle; - - /// iOS folder selection warning - /// - /// In en, this message translates to: - /// **'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'** - String get setupIosEmptyFolderWarning; - - /// Error when user selects iCloud Drive on iOS - /// - /// In en, this message translates to: - /// **'iCloud Drive is not supported. Please use the app Documents folder.'** - String get setupIcloudNotSupported; - - /// App tagline in setup - /// - /// In en, this message translates to: - /// **'Download music in lossless and Hi-Res quality'** - String get setupDownloadInFlac; - - /// Success message for storage permission - /// - /// In en, this message translates to: - /// **'Storage Permission Granted!'** - String get setupStorageGranted; - - /// Title when storage permission needed - /// - /// In en, this message translates to: - /// **'Storage Permission Required'** - String get setupStorageRequired; - - /// Explanation for storage permission - /// - /// In en, this message translates to: - /// **'SpotiFLAC needs storage permission to save your downloaded music files.'** - String get setupStorageDescription; - - /// Success message for notification permission - /// - /// In en, this message translates to: - /// **'Notification Permission Granted!'** - String get setupNotificationGranted; - - /// Button to enable notifications - /// - /// In en, this message translates to: - /// **'Enable Notifications'** - String get setupNotificationEnable; - - /// Button to choose folder - /// - /// In en, this message translates to: - /// **'Choose Download Folder'** - String get setupFolderChoose; - - /// Explanation for folder selection - /// - /// In en, this message translates to: - /// **'Select a folder where your downloaded music will be saved.'** - String get setupFolderDescription; - - /// Button to select folder - /// - /// In en, this message translates to: - /// **'Select Folder'** - String get setupSelectFolder; - - /// Button to enable notifications - /// - /// In en, this message translates to: - /// **'Enable Notifications'** - String get setupEnableNotifications; - - /// Detailed notification explanation - /// - /// In en, this message translates to: - /// **'Get notified about download progress and completion. This helps you track downloads when the app is in background.'** - String get setupNotificationBackgroundDescription; - - /// Skip button text - /// - /// In en, this message translates to: - /// **'Skip for now'** - String get setupSkipForNow; - - /// Next button text - /// - /// In en, this message translates to: - /// **'Next'** - String get setupNext; - - /// Final setup button - /// - /// In en, this message translates to: - /// **'Get Started'** - String get setupGetStarted; - - /// Instruction for file access permission - /// - /// In en, this message translates to: - /// **'Please enable \"Allow access to manage all files\" in the next screen.'** - String get setupAllowAccessToManageFiles; - - /// Title for the language selection step in setup - /// - /// In en, this message translates to: - /// **'Choose Language'** - String get setupLanguageTitle; - - /// Description for the language selection step in setup - /// - /// In en, this message translates to: - /// **'Select your preferred language for the app. You can change this later in Settings.'** - String get setupLanguageDescription; - - /// Option to use the system language - /// - /// In en, this message translates to: - /// **'System Default'** - String get setupLanguageSystemDefault; - - /// Dialog button - cancel action - /// - /// In en, this message translates to: - /// **'Cancel'** - String get dialogCancel; - - /// Dialog button - save changes - /// - /// In en, this message translates to: - /// **'Save'** - String get dialogSave; - - /// Dialog button - delete item - /// - /// In en, this message translates to: - /// **'Delete'** - String get dialogDelete; - - /// Dialog button - retry action - /// - /// In en, this message translates to: - /// **'Retry'** - String get dialogRetry; - - /// Dialog button - clear items - /// - /// In en, this message translates to: - /// **'Clear'** - String get dialogClear; - - /// Dialog button - action completed - /// - /// In en, this message translates to: - /// **'Done'** - String get dialogDone; - - /// Dialog button - import data - /// - /// In en, this message translates to: - /// **'Import'** - String get dialogImport; - - /// Confirm button in Download All dialog - /// - /// In en, this message translates to: - /// **'Download'** - String get dialogDownload; - - /// Tooltip for the button that plays a short track preview snippet - /// - /// In en, this message translates to: - /// **'Play preview'** - String get previewPlay; - - /// Tooltip for the button that stops the playing track preview snippet - /// - /// In en, this message translates to: - /// **'Stop preview'** - String get previewStop; - - /// Snackbar shown when a track preview snippet cannot be played - /// - /// In en, this message translates to: - /// **'Preview unavailable'** - String get previewUnavailable; - - /// Dialog button - discard changes - /// - /// In en, this message translates to: - /// **'Discard'** - String get dialogDiscard; - - /// Dialog button - remove item - /// - /// In en, this message translates to: - /// **'Remove'** - String get dialogRemove; - - /// Dialog button - uninstall extension - /// - /// In en, this message translates to: - /// **'Uninstall'** - String get dialogUninstall; - - /// Dialog title - unsaved changes warning - /// - /// In en, this message translates to: - /// **'Discard Changes?'** - String get dialogDiscardChanges; - - /// Dialog message - unsaved changes - /// - /// In en, this message translates to: - /// **'You have unsaved changes. Do you want to discard them?'** - String get dialogUnsavedChanges; - - /// Dialog title - clear all items - /// - /// In en, this message translates to: - /// **'Clear All'** - String get dialogClearAll; - - /// Dialog title - uninstall extension - /// - /// In en, this message translates to: - /// **'Remove Extension'** - String get dialogRemoveExtension; - - /// Dialog message - uninstall confirmation - /// - /// In en, this message translates to: - /// **'Are you sure you want to remove this extension? This cannot be undone.'** - String get dialogRemoveExtensionMessage; - - /// Dialog title - uninstall extension - /// - /// In en, this message translates to: - /// **'Uninstall Extension?'** - String get dialogUninstallExtension; - - /// Dialog message - uninstall specific extension - /// - /// In en, this message translates to: - /// **'Are you sure you want to remove {extensionName}?'** - String dialogUninstallExtensionMessage(String extensionName); - - /// Dialog title - clear download history - /// - /// In en, this message translates to: - /// **'Clear History'** - String get dialogClearHistoryTitle; - - /// Dialog message - clear history confirmation - /// - /// In en, this message translates to: - /// **'Are you sure you want to clear all download history? This cannot be undone.'** - String get dialogClearHistoryMessage; - - /// Dialog title - delete selected items - /// - /// In en, this message translates to: - /// **'Delete Selected'** - String get dialogDeleteSelectedTitle; - - /// Dialog message - delete selected tracks - /// - /// In en, this message translates to: - /// **'Delete {count} {count, plural, =1{track} other{tracks}} from history?\n\nThis will also delete the files from storage.'** - String dialogDeleteSelectedMessage(int count); - - /// Dialog title - import CSV playlist - /// - /// In en, this message translates to: - /// **'Import Playlist'** - String get dialogImportPlaylistTitle; - - /// Dialog message - import playlist confirmation - /// - /// In en, this message translates to: - /// **'Found {count} tracks in the playlist file. Add them to download queue?'** - String dialogImportPlaylistMessage(int count); - - /// Label shown in quality picker for CSV import - /// - /// In en, this message translates to: - /// **'{count} tracks from CSV'** - String csvImportTracks(int count); - - /// Tooltip on the collection screen action that exports the track list as an M3U8 playlist file - /// - /// In en, this message translates to: - /// **'Export as M3U8'** - String get collectionExportM3u; - - /// Snackbar after M3U8 export; tracks without a local file are not exported - /// - /// In en, this message translates to: - /// **'Exported {exported} of {total} tracks'** - String collectionExportM3uDone(int exported, int total); - - /// Snackbar when an M3U8 export finds no local files - /// - /// In en, this message translates to: - /// **'No downloaded files to export'** - String get collectionExportM3uNone; - - /// Snackbar when writing or sharing the M3U8 export fails - /// - /// In en, this message translates to: - /// **'Export failed'** - String get collectionExportM3uFailed; - - /// Track option and sheet title listing streaming platforms where the track can be opened - /// - /// In en, this message translates to: - /// **'Open on...'** - String get trackOpenOn; - - /// Shown in the Open on sheet when song.link returns no links - /// - /// In en, this message translates to: - /// **'No platform links found for this track.'** - String get trackOpenOnNoLinks; - - /// Library settings row opening the duplicate review sheet - /// - /// In en, this message translates to: - /// **'Review duplicates'** - String get libraryReviewDuplicates; - - /// Subtitle for the duplicate review settings row - /// - /// In en, this message translates to: - /// **'Find tracks stored more than once'** - String get libraryReviewDuplicatesSubtitle; - - /// Title of the duplicate review sheet - /// - /// In en, this message translates to: - /// **'Duplicates'** - String get duplicatesTitle; - - /// Shown when the duplicate review sheet finds nothing - /// - /// In en, this message translates to: - /// **'No duplicate tracks found.'** - String get duplicatesEmpty; - - /// Button that deletes all but the highest-quality copy in a duplicate group - /// - /// In en, this message translates to: - /// **'Keep best'** - String get duplicatesKeepBest; - - /// Confirmation message for the keep-best action - /// - /// In en, this message translates to: - /// **'Delete {count} lower-quality copies of \"{trackName}\"?'** - String duplicatesKeepBestMessage(int count, String trackName); - - /// Confirmation message for deleting one duplicate copy - /// - /// In en, this message translates to: - /// **'Delete this copy of \"{trackName}\"?'** - String duplicatesDeleteCopyMessage(String trackName); - - /// Snackbar - track added to download queue - /// - /// In en, this message translates to: - /// **'Added \"{trackName}\" to queue'** - String snackbarAddedToQueue(String trackName); - - /// Snackbar - multiple tracks added to queue - /// - /// In en, this message translates to: - /// **'Added {count} tracks to queue'** - String snackbarAddedTracksToQueue(int count); - - /// Snackbar - track already exists - /// - /// In en, this message translates to: - /// **'\"{trackName}\" already downloaded'** - String snackbarAlreadyDownloaded(String trackName); - - /// Snackbar - track already exists in local library - /// - /// In en, this message translates to: - /// **'\"{trackName}\" already exists in your library'** - String snackbarAlreadyInLibrary(String trackName); - - /// Snackbar - history deleted - /// - /// In en, this message translates to: - /// **'History cleared'** - String get snackbarHistoryCleared; - - /// Snackbar - tracks deleted - /// - /// In en, this message translates to: - /// **'Deleted {count} {count, plural, =1{track} other{tracks}}'** - String snackbarDeletedTracks(int count); - - /// Snackbar - file open error - /// - /// In en, this message translates to: - /// **'Cannot open file: {error}'** - String snackbarCannotOpenFile(String error); - - /// Snackbar action - view download queue - /// - /// In en, this message translates to: - /// **'View Queue'** - String get snackbarViewQueue; - - /// Snackbar - URL copied - /// - /// In en, this message translates to: - /// **'{platform} URL copied to clipboard'** - String snackbarUrlCopied(String platform); - - /// Snackbar - file doesn't exist - /// - /// In en, this message translates to: - /// **'File not found'** - String get snackbarFileNotFound; - - /// Snackbar - wrong file type selected - /// - /// In en, this message translates to: - /// **'Please select a .spotiflac-ext file'** - String get snackbarSelectExtFile; - - /// Snackbar - provider order saved - /// - /// In en, this message translates to: - /// **'Provider priority saved'** - String get snackbarProviderPrioritySaved; - - /// Snackbar - metadata provider order saved - /// - /// In en, this message translates to: - /// **'Metadata provider priority saved'** - String get snackbarMetadataProviderSaved; - - /// Snackbar - extension installed successfully - /// - /// In en, this message translates to: - /// **'{extensionName} installed.'** - String snackbarExtensionInstalled(String extensionName); - - /// Snackbar - extension updated successfully - /// - /// In en, this message translates to: - /// **'{extensionName} updated.'** - String snackbarExtensionUpdated(String extensionName); - - /// Snackbar - extension install error - /// - /// In en, this message translates to: - /// **'Failed to install extension'** - String get snackbarFailedToInstall; - - /// Snackbar - extension update error - /// - /// In en, this message translates to: - /// **'Failed to update extension'** - String get snackbarFailedToUpdate; - - /// Error title - too many requests - /// - /// In en, this message translates to: - /// **'Rate Limited'** - String get errorRateLimited; - - /// Error message - rate limit explanation - /// - /// In en, this message translates to: - /// **'Too many requests. Please wait a moment before searching again.'** - String get errorRateLimitedMessage; - - /// Error - search returned no results - /// - /// In en, this message translates to: - /// **'No tracks found'** - String get errorNoTracksFound; - - /// Subtitle shown under the empty search result state on the home screen - /// - /// In en, this message translates to: - /// **'Try another keyword'** - String get searchEmptyResultSubtitle; - - /// Error title - URL not handled by any extension or service - /// - /// In en, this message translates to: - /// **'Link not recognized'** - String get errorUrlNotRecognized; - - /// Error message - URL not recognized explanation - /// - /// In en, this message translates to: - /// **'This link is not supported. Make sure the URL is correct and a compatible extension is installed.'** - String get errorUrlNotRecognizedMessage; - - /// Error message - generic URL fetch failure - /// - /// In en, this message translates to: - /// **'Failed to load content from this link. Please try again.'** - String get errorUrlFetchFailed; - - /// Error - extension source not available - /// - /// In en, this message translates to: - /// **'Cannot load {item}: missing extension source'** - String errorMissingExtensionSource(String item); - - /// Action button - pause download - /// - /// In en, this message translates to: - /// **'Pause'** - String get actionPause; - - /// Action button - resume download - /// - /// In en, this message translates to: - /// **'Resume'** - String get actionResume; - - /// Action button - cancel operation - /// - /// In en, this message translates to: - /// **'Cancel'** - String get actionCancel; - - /// Action button - select all items - /// - /// In en, this message translates to: - /// **'Select All'** - String get actionSelectAll; - - /// Action button - deselect all - /// - /// In en, this message translates to: - /// **'Deselect'** - String get actionDeselect; - - /// Selection count indicator - /// - /// In en, this message translates to: - /// **'{count} selected'** - String selectionSelected(int count); - - /// Status - all items selected - /// - /// In en, this message translates to: - /// **'All tracks selected'** - String get selectionAllSelected; - - /// Placeholder when nothing selected - /// - /// In en, this message translates to: - /// **'Select tracks to delete'** - String get selectionSelectToDelete; - - /// Progress indicator - loading track info - /// - /// In en, this message translates to: - /// **'Fetching metadata... {current}/{total}'** - String progressFetchingMetadata(int current, int total); - - /// Progress indicator - parsing CSV file - /// - /// In en, this message translates to: - /// **'Reading CSV...'** - String get progressReadingCsv; - - /// Search result category - songs - /// - /// In en, this message translates to: - /// **'Songs'** - String get searchSongs; - - /// Search result category - artists - /// - /// In en, this message translates to: - /// **'Artists'** - String get searchArtists; - - /// Search result category - albums - /// - /// In en, this message translates to: - /// **'Albums'** - String get searchAlbums; - - /// Search result category - playlists - /// - /// In en, this message translates to: - /// **'Playlists'** - String get searchPlaylists; - - /// Bottom sheet title for search sort options - /// - /// In en, this message translates to: - /// **'Sort Results'** - String get searchSortTitle; - - /// Sort option - default API order - /// - /// In en, this message translates to: - /// **'Default'** - String get searchSortDefault; - - /// Sort option - title ascending - /// - /// In en, this message translates to: - /// **'Title (A-Z)'** - String get searchSortTitleAZ; - - /// Sort option - title descending - /// - /// In en, this message translates to: - /// **'Title (Z-A)'** - String get searchSortTitleZA; - - /// Sort option - artist ascending - /// - /// In en, this message translates to: - /// **'Artist (A-Z)'** - String get searchSortArtistAZ; - - /// Sort option - artist descending - /// - /// In en, this message translates to: - /// **'Artist (Z-A)'** - String get searchSortArtistZA; - - /// Sort option - shortest duration first - /// - /// In en, this message translates to: - /// **'Duration (Shortest)'** - String get searchSortDurationShort; - - /// Sort option - longest duration first - /// - /// In en, this message translates to: - /// **'Duration (Longest)'** - String get searchSortDurationLong; - - /// Sort option - oldest release first - /// - /// In en, this message translates to: - /// **'Release Date (Oldest)'** - String get searchSortDateOldest; - - /// Sort option - newest release first - /// - /// In en, this message translates to: - /// **'Release Date (Newest)'** - String get searchSortDateNewest; - - /// Tooltip - play button - /// - /// In en, this message translates to: - /// **'Play'** - String get tooltipPlay; - - /// Setting title - filename pattern - /// - /// In en, this message translates to: - /// **'Filename Format'** - String get filenameFormat; - - /// Toggle label for showing advanced filename tags - /// - /// In en, this message translates to: - /// **'Show advanced tags'** - String get filenameShowAdvancedTags; - - /// Description for advanced filename tag toggle - /// - /// In en, this message translates to: - /// **'Enable formatted tags for track padding and date patterns'** - String get filenameShowAdvancedTagsDescription; - - /// Folder option - flat structure - /// - /// In en, this message translates to: - /// **'No organization'** - String get folderOrganizationNone; - - /// Folder option - playlist folders - /// - /// In en, this message translates to: - /// **'By Playlist'** - String get folderOrganizationByPlaylist; - - /// Subtitle for playlist folder option - /// - /// In en, this message translates to: - /// **'Separate folder for each playlist'** - String get folderOrganizationByPlaylistSubtitle; - - /// Folder option - artist folders - /// - /// In en, this message translates to: - /// **'By Artist'** - String get folderOrganizationByArtist; - - /// Folder option - album folders - /// - /// In en, this message translates to: - /// **'By Album'** - String get folderOrganizationByAlbum; - - /// Folder option - nested folders - /// - /// In en, this message translates to: - /// **'Artist/Album'** - String get folderOrganizationByArtistAlbum; - - /// Folder organization sheet description - /// - /// In en, this message translates to: - /// **'Organize downloaded files into folders'** - String get folderOrganizationDescription; - - /// Subtitle for no organization option - /// - /// In en, this message translates to: - /// **'All files in download folder'** - String get folderOrganizationNoneSubtitle; - - /// Subtitle for artist folder option - /// - /// In en, this message translates to: - /// **'Separate folder for each artist'** - String get folderOrganizationByArtistSubtitle; - - /// Subtitle for album folder option - /// - /// In en, this message translates to: - /// **'Separate folder for each album'** - String get folderOrganizationByAlbumSubtitle; - - /// Subtitle for nested folder option - /// - /// In en, this message translates to: - /// **'Nested folders for artist and album'** - String get folderOrganizationByArtistAlbumSubtitle; - - /// Update dialog title - /// - /// In en, this message translates to: - /// **'Update Available'** - String get updateAvailable; - - /// Update button - dismiss - /// - /// In en, this message translates to: - /// **'Later'** - String get updateLater; - - /// Update status - initializing - /// - /// In en, this message translates to: - /// **'Starting download...'** - String get updateStartingDownload; - - /// Update error title - /// - /// In en, this message translates to: - /// **'Download failed'** - String get updateDownloadFailed; - - /// Update error message - /// - /// In en, this message translates to: - /// **'Failed to download update'** - String get updateFailedMessage; - - /// Update subtitle - /// - /// In en, this message translates to: - /// **'A new version is ready'** - String get updateNewVersionReady; - - /// Title of the mandatory update dialog shown when the installed version is too old - /// - /// In en, this message translates to: - /// **'Update required'** - String get updateRequiredTitle; - - /// Subtitle of the mandatory update dialog; explains why the dialog cannot be dismissed - /// - /// In en, this message translates to: - /// **'This version is {count} releases behind and is no longer supported. Update to keep using the app.'** - String updateRequiredNotice(int count); - - /// Label for current version - /// - /// In en, this message translates to: - /// **'Current'** - String get updateCurrent; - - /// Label for new version - /// - /// In en, this message translates to: - /// **'New'** - String get updateNew; - - /// Update status - downloading - /// - /// In en, this message translates to: - /// **'Downloading...'** - String get updateDownloading; - - /// Changelog section title - /// - /// In en, this message translates to: - /// **'What\'s New'** - String get updateWhatsNew; - - /// Update button - download and install - /// - /// In en, this message translates to: - /// **'Download & Install'** - String get updateDownloadInstall; - - /// Update button - skip this version - /// - /// In en, this message translates to: - /// **'Don\'t remind'** - String get updateDontRemind; - - /// Provider priority page title - /// - /// In en, this message translates to: - /// **'Provider Priority'** - String get providerPriorityTitle; - - /// Provider priority page description - /// - /// In en, this message translates to: - /// **'Drag to reorder download providers. The app will try providers from top to bottom when downloading tracks.'** - String get providerPriorityDescription; - - /// Info tip about fallback behavior - /// - /// In en, this message translates to: - /// **'If a track is not available on the first provider, the app will automatically try the next one.'** - String get providerPriorityInfo; - - /// Section description for extension fallback selection - /// - /// In en, this message translates to: - /// **'Choose which installed download extensions can be used during automatic fallback.'** - String get providerPriorityFallbackExtensionsDescription; - - /// Hint below the extension fallback selection list - /// - /// In en, this message translates to: - /// **'Only enabled extensions with download-provider capability are listed here.'** - String get providerPriorityFallbackExtensionsHint; - - /// Label for extension-provided providers - /// - /// In en, this message translates to: - /// **'Extension'** - String get providerExtension; - - /// Metadata priority page title - /// - /// In en, this message translates to: - /// **'Metadata Priority'** - String get metadataProviderPriorityTitle; - - /// Metadata priority page description - /// - /// In en, this message translates to: - /// **'Drag to reorder metadata providers. The app will try providers from top to bottom when searching for tracks and fetching metadata.'** - String get metadataProviderPriorityDescription; - - /// Info tip about rate limits - /// - /// In en, this message translates to: - /// **'Deezer has no rate limits and is recommended as primary. Spotify may rate limit after many requests.'** - String get metadataProviderPriorityInfo; - - /// Logs screen title - /// - /// In en, this message translates to: - /// **'Logs'** - String get logTitle; - - /// Snackbar - logs copied - /// - /// In en, this message translates to: - /// **'Logs copied to clipboard'** - String get logCopied; - - /// Log search placeholder - /// - /// In en, this message translates to: - /// **'Search logs...'** - String get logSearchHint; - - /// Filter by log level - /// - /// In en, this message translates to: - /// **'Level'** - String get logFilterLevel; - - /// Filter section title - /// - /// In en, this message translates to: - /// **'Filter'** - String get logFilterSection; - - /// Share button tooltip - /// - /// In en, this message translates to: - /// **'Share logs'** - String get logShareLogs; - - /// Clear button tooltip - /// - /// In en, this message translates to: - /// **'Clear logs'** - String get logClearLogs; - - /// Clear logs dialog title - /// - /// In en, this message translates to: - /// **'Clear Logs'** - String get logClearLogsTitle; - - /// Clear logs confirmation message - /// - /// In en, this message translates to: - /// **'Are you sure you want to clear all logs?'** - String get logClearLogsMessage; - - /// Filter dialog title - /// - /// In en, this message translates to: - /// **'Filter logs by severity'** - String get logFilterBySeverity; - - /// Empty state title - /// - /// In en, this message translates to: - /// **'No logs yet'** - String get logNoLogsYet; - - /// Empty state subtitle - /// - /// In en, this message translates to: - /// **'Logs will appear here as you use the app'** - String get logNoLogsYetSubtitle; - - /// Log count with filter active - /// - /// In en, this message translates to: - /// **'Entries ({count} filtered)'** - String logEntriesFiltered(int count); - - /// Total log count - /// - /// In en, this message translates to: - /// **'Entries ({count})'** - String logEntries(int count); - - /// Update channel - stable releases - /// - /// In en, this message translates to: - /// **'Stable'** - String get channelStable; - - /// Update channel - beta/preview releases - /// - /// In en, this message translates to: - /// **'Preview'** - String get channelPreview; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Search Source'** - String get sectionSearchSource; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Download'** - String get sectionDownload; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Performance'** - String get sectionPerformance; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'App'** - String get sectionApp; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Data'** - String get sectionData; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Debug'** - String get sectionDebug; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Service'** - String get sectionService; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Audio Quality'** - String get sectionAudioQuality; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'File Settings'** - String get sectionFileSettings; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Lyrics'** - String get sectionLyrics; - - /// Setting - how to save lyrics - /// - /// In en, this message translates to: - /// **'Lyrics Mode'** - String get lyricsMode; - - /// Lyrics mode picker description - /// - /// In en, this message translates to: - /// **'Choose how lyrics are saved with your downloads'** - String get lyricsModeDescription; - - /// Lyrics mode option - embed in audio file - /// - /// In en, this message translates to: - /// **'Embed in file'** - String get lyricsModeEmbed; - - /// Subtitle for embed option - /// - /// In en, this message translates to: - /// **'Lyrics stored inside FLAC metadata'** - String get lyricsModeEmbedSubtitle; - - /// Lyrics mode option - separate LRC file - /// - /// In en, this message translates to: - /// **'External .lrc file'** - String get lyricsModeExternal; - - /// Subtitle for external option - /// - /// In en, this message translates to: - /// **'Separate .lrc file for players like Samsung Music'** - String get lyricsModeExternalSubtitle; - - /// Lyrics mode option - embed and external - /// - /// In en, this message translates to: - /// **'Both'** - String get lyricsModeBoth; - - /// Subtitle for both option - /// - /// In en, this message translates to: - /// **'Embed and save .lrc file'** - String get lyricsModeBothSubtitle; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Color'** - String get sectionColor; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Theme'** - String get sectionTheme; - - /// Settings section header - /// - /// In en, this message translates to: - /// **'Layout'** - String get sectionLayout; - - /// Settings section header for language - /// - /// In en, this message translates to: - /// **'Language'** - String get sectionLanguage; - - /// Language setting title - /// - /// In en, this message translates to: - /// **'App Language'** - String get appearanceLanguage; - - /// Appearance settings description - /// - /// In en, this message translates to: - /// **'Theme, colors, display'** - String get settingsAppearanceSubtitle; - - /// Download settings description - /// - /// In en, this message translates to: - /// **'Service, quality, fallback'** - String get settingsDownloadSubtitle; - - /// Extensions settings description - /// - /// In en, this message translates to: - /// **'Manage download providers'** - String get settingsExtensionsSubtitle; - - /// Logs settings description - /// - /// In en, this message translates to: - /// **'View app logs for debugging'** - String get settingsLogsSubtitle; - - /// Status when opening shared URL - /// - /// In en, this message translates to: - /// **'Loading shared link...'** - String get loadingSharedLink; - - /// Exit confirmation message - /// - /// In en, this message translates to: - /// **'Press back again to exit'** - String get pressBackAgainToExit; - - /// Download all button with count - /// - /// In en, this message translates to: - /// **'Download All ({count})'** - String downloadAllCount(int count); - - /// Track count display - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 track} other{{count} tracks}}'** - String tracksCount(int count); - - /// Action - copy file path - /// - /// In en, this message translates to: - /// **'Copy file path'** - String get trackCopyFilePath; - - /// Action - delete downloaded file - /// - /// In en, this message translates to: - /// **'Remove from device'** - String get trackRemoveFromDevice; - - /// Action - fetch lyrics - /// - /// In en, this message translates to: - /// **'Load Lyrics'** - String get trackLoadLyrics; - - /// Tab title - track metadata - /// - /// In en, this message translates to: - /// **'Metadata'** - String get trackMetadata; - - /// Tab title - file information - /// - /// In en, this message translates to: - /// **'File Info'** - String get trackFileInfo; - - /// Tab title - lyrics - /// - /// In en, this message translates to: - /// **'Lyrics'** - String get trackLyrics; - - /// Error - file doesn't exist - /// - /// In en, this message translates to: - /// **'File not found'** - String get trackFileNotFound; - - /// Action - open track in Deezer app - /// - /// In en, this message translates to: - /// **'Open in Deezer'** - String get trackOpenInDeezer; - - /// Action - open track in Spotify app - /// - /// In en, this message translates to: - /// **'Open in Spotify'** - String get trackOpenInSpotify; - - /// Metadata label - track title - /// - /// In en, this message translates to: - /// **'Track name'** - String get trackTrackName; - - /// Metadata label - artist name - /// - /// In en, this message translates to: - /// **'Artist'** - String get trackArtist; - - /// Metadata label - album artist - /// - /// In en, this message translates to: - /// **'Album artist'** - String get trackAlbumArtist; - - /// Metadata label - album name - /// - /// In en, this message translates to: - /// **'Album'** - String get trackAlbum; - - /// Metadata label - track number - /// - /// In en, this message translates to: - /// **'Track number'** - String get trackTrackNumber; - - /// Metadata label - disc number - /// - /// In en, this message translates to: - /// **'Disc number'** - String get trackDiscNumber; - - /// Metadata label - track length - /// - /// In en, this message translates to: - /// **'Duration'** - String get trackDuration; - - /// Metadata label - audio quality - /// - /// In en, this message translates to: - /// **'Audio quality'** - String get trackAudioQuality; - - /// Library audio quality label mode that shows the detected file format - /// - /// In en, this message translates to: - /// **'File format'** - String get libraryQualityLabelFileFormat; - - /// Metadata label - release date - /// - /// In en, this message translates to: - /// **'Release date'** - String get trackReleaseDate; - - /// Metadata label - music genre - /// - /// In en, this message translates to: - /// **'Genre'** - String get trackGenre; - - /// Metadata label - record label - /// - /// In en, this message translates to: - /// **'Label'** - String get trackLabel; - - /// Metadata label - copyright information - /// - /// In en, this message translates to: - /// **'Copyright'** - String get trackCopyright; - - /// Metadata label - download date - /// - /// In en, this message translates to: - /// **'Downloaded'** - String get trackDownloaded; - - /// Action - copy lyrics to clipboard - /// - /// In en, this message translates to: - /// **'Copy lyrics'** - String get trackCopyLyrics; - - /// Label showing the lyrics source/provider - /// - /// In en, this message translates to: - /// **'Source: {source}'** - String trackLyricsSource(String source); - - /// Message when lyrics not found - /// - /// In en, this message translates to: - /// **'Lyrics not available for this track'** - String get trackLyricsNotAvailable; - - /// Message when no embedded lyrics in audio file - /// - /// In en, this message translates to: - /// **'No lyrics found in this file'** - String get trackLyricsNotInFile; - - /// Action - fetch lyrics from online providers - /// - /// In en, this message translates to: - /// **'Fetch from Online'** - String get trackFetchOnlineLyrics; - - /// Message when lyrics request times out - /// - /// In en, this message translates to: - /// **'Request timed out. Try again later.'** - String get trackLyricsTimeout; - - /// Message when lyrics loading fails - /// - /// In en, this message translates to: - /// **'Failed to load lyrics'** - String get trackLyricsLoadFailed; - - /// Action - embed lyrics into audio file - /// - /// In en, this message translates to: - /// **'Embed Lyrics'** - String get trackEmbedLyrics; - - /// Snackbar - lyrics saved to file - /// - /// In en, this message translates to: - /// **'Lyrics embedded successfully'** - String get trackLyricsEmbedded; - - /// Message when track is instrumental (no lyrics) - /// - /// In en, this message translates to: - /// **'Instrumental track'** - String get trackInstrumental; - - /// Snackbar - content copied - /// - /// In en, this message translates to: - /// **'Copied to clipboard'** - String get trackCopiedToClipboard; - - /// Delete confirmation title - /// - /// In en, this message translates to: - /// **'Remove from device?'** - String get trackDeleteConfirmTitle; - - /// Delete confirmation message - /// - /// In en, this message translates to: - /// **'This will permanently delete the downloaded file and remove it from your history.'** - String get trackDeleteConfirmMessage; - - /// Relative date - today - /// - /// In en, this message translates to: - /// **'Today'** - String get dateToday; - - /// Relative date - yesterday - /// - /// In en, this message translates to: - /// **'Yesterday'** - String get dateYesterday; - - /// Relative date - days ago - /// - /// In en, this message translates to: - /// **'{count} days ago'** - String dateDaysAgo(int count); - - /// Relative date - weeks ago - /// - /// In en, this message translates to: - /// **'{count} weeks ago'** - String dateWeeksAgo(int count); - - /// Relative date - months ago - /// - /// In en, this message translates to: - /// **'{count} months ago'** - String dateMonthsAgo(int count); - - /// Repo filter - all extensions - /// - /// In en, this message translates to: - /// **'All'** - String get storeFilterAll; - - /// Repo filter - metadata providers - /// - /// In en, this message translates to: - /// **'Metadata'** - String get storeFilterMetadata; - - /// Repo filter - download providers - /// - /// In en, this message translates to: - /// **'Download'** - String get storeFilterDownload; - - /// Repo filter - utility extensions - /// - /// In en, this message translates to: - /// **'Utility'** - String get storeFilterUtility; - - /// Repo filter - lyrics providers - /// - /// In en, this message translates to: - /// **'Lyrics'** - String get storeFilterLyrics; - - /// Repo filter - integrations - /// - /// In en, this message translates to: - /// **'Integration'** - String get storeFilterIntegration; - - /// Button to clear all filters - /// - /// In en, this message translates to: - /// **'Clear filters'** - String get storeClearFilters; - - /// Store setup screen - heading when no repo is configured - /// - /// In en, this message translates to: - /// **'Add Extension Repository'** - String get storeAddRepoTitle; - - /// Store setup screen - explanatory text - /// - /// In en, this message translates to: - /// **'Enter a GitHub repository URL that contains a registry.json file to browse and install extensions.'** - String get storeAddRepoDescription; - - /// Label for the repository URL input field - /// - /// In en, this message translates to: - /// **'Repository URL'** - String get storeRepoUrlLabel; - - /// Hint/placeholder for the repository URL input field - /// - /// In en, this message translates to: - /// **'https://github.com/user/repo'** - String get storeRepoUrlHint; - - /// Button to submit a new repository URL - /// - /// In en, this message translates to: - /// **'Add Repository'** - String get storeAddRepoButton; - - /// Tooltip for the change-repository icon button in the app bar - /// - /// In en, this message translates to: - /// **'Change repository'** - String get storeChangeRepoTooltip; - - /// Title of the change/remove repository dialog - /// - /// In en, this message translates to: - /// **'Extension Repository'** - String get storeRepoDialogTitle; - - /// Label shown above the current repository URL in the dialog - /// - /// In en, this message translates to: - /// **'Current repository:'** - String get storeRepoDialogCurrent; - - /// Label for the new repository URL field inside the dialog - /// - /// In en, this message translates to: - /// **'New Repository URL'** - String get storeNewRepoUrlLabel; - - /// Error heading when the store cannot be loaded - /// - /// In en, this message translates to: - /// **'Failed to load repository'** - String get storeLoadError; - - /// Message when store has no extensions - /// - /// In en, this message translates to: - /// **'No extensions available'** - String get storeEmptyNoExtensions; - - /// Message when search/filter returns no results - /// - /// In en, this message translates to: - /// **'No extensions found'** - String get storeEmptyNoResults; - - /// Extension detail - unique ID - /// - /// In en, this message translates to: - /// **'ID'** - String get extensionId; - - /// Extension detail - error message - /// - /// In en, this message translates to: - /// **'Error'** - String get extensionError; - - /// Section header - extension features - /// - /// In en, this message translates to: - /// **'Capabilities'** - String get extensionCapabilities; - - /// Capability - provides metadata - /// - /// In en, this message translates to: - /// **'Metadata Provider'** - String get extensionMetadataProvider; - - /// Capability - provides downloads - /// - /// In en, this message translates to: - /// **'Download Provider'** - String get extensionDownloadProvider; - - /// Capability - provides lyrics - /// - /// In en, this message translates to: - /// **'Lyrics Provider'** - String get extensionLyricsProvider; - - /// Capability - handles URLs - /// - /// In en, this message translates to: - /// **'URL Handler'** - String get extensionUrlHandler; - - /// Capability - quality selection - /// - /// In en, this message translates to: - /// **'Quality Options'** - String get extensionQualityOptions; - - /// Capability - post-processing - /// - /// In en, this message translates to: - /// **'Post-Processing Hooks'** - String get extensionPostProcessingHooks; - - /// Section header - required permissions - /// - /// In en, this message translates to: - /// **'Permissions'** - String get extensionPermissions; - - /// Section header - extension settings - /// - /// In en, this message translates to: - /// **'Settings'** - String get extensionSettings; - - /// Button to uninstall extension - /// - /// In en, this message translates to: - /// **'Remove Extension'** - String get extensionRemoveButton; - - /// Extension detail - last update - /// - /// In en, this message translates to: - /// **'Updated'** - String get extensionUpdated; - - /// Extension detail - minimum app version - /// - /// In en, this message translates to: - /// **'Min App Version'** - String get extensionMinAppVersion; - - /// Capability - custom track matching algorithm - /// - /// In en, this message translates to: - /// **'Custom Track Matching'** - String get extensionCustomTrackMatching; - - /// Capability - post-download processing - /// - /// In en, this message translates to: - /// **'Post-Processing'** - String get extensionPostProcessing; - - /// Post-processing hooks count - /// - /// In en, this message translates to: - /// **'{count} hook(s) available'** - String extensionHooksAvailable(int count); - - /// URL patterns count - /// - /// In en, this message translates to: - /// **'{count} pattern(s)'** - String extensionPatternsCount(int count); - - /// Track matching strategy name - /// - /// In en, this message translates to: - /// **'Strategy: {strategy}'** - String extensionStrategy(String strategy); - - /// Section header - provider priority - /// - /// In en, this message translates to: - /// **'Provider Priority'** - String get extensionsProviderPrioritySection; - - /// Section header - installed extensions - /// - /// In en, this message translates to: - /// **'Installed Extensions'** - String get extensionsInstalledSection; - - /// Empty state - no extensions - /// - /// In en, this message translates to: - /// **'No extensions installed'** - String get extensionsNoExtensions; - - /// Empty state subtitle - /// - /// In en, this message translates to: - /// **'Install .spotiflac-ext files to add new providers'** - String get extensionsNoExtensionsSubtitle; - - /// Button to install extension from file - /// - /// In en, this message translates to: - /// **'Install Extension'** - String get extensionsInstallButton; - - /// Security warning about extensions - /// - /// In en, this message translates to: - /// **'Extensions can add new metadata and download providers. Only install extensions from trusted sources.'** - String get extensionsInfoTip; - - /// Success message after install - /// - /// In en, this message translates to: - /// **'Extension installed successfully'** - String get extensionsInstalledSuccess; - - /// Success message after installing multiple extensions - /// - /// In en, this message translates to: - /// **'{count} extensions installed successfully'** - String extensionsInstalledCount(int count); - - /// Message when installing multiple extensions partially succeeds - /// - /// In en, this message translates to: - /// **'Installed {installed} of {attempted} extensions'** - String extensionsInstallPartialSuccess(int installed, int attempted); - - /// Setting - download provider order - /// - /// In en, this message translates to: - /// **'Download Priority'** - String get extensionsDownloadPriority; - - /// Subtitle for download priority - /// - /// In en, this message translates to: - /// **'Set download service order'** - String get extensionsDownloadPrioritySubtitle; - - /// Setting and page title for choosing which download extensions can be used during fallback - /// - /// In en, this message translates to: - /// **'Fallback Extensions'** - String get extensionsFallbackTitle; - - /// Subtitle for download fallback extensions menu - /// - /// In en, this message translates to: - /// **'Choose which installed download extensions can be used as fallback'** - String get extensionsFallbackSubtitle; - - /// Empty state - no download providers - /// - /// In en, this message translates to: - /// **'No extensions with download provider'** - String get extensionsNoDownloadProvider; - - /// Setting - metadata provider order - /// - /// In en, this message translates to: - /// **'Metadata Priority'** - String get extensionsMetadataPriority; - - /// Subtitle for metadata priority - /// - /// In en, this message translates to: - /// **'Set search & metadata source order'** - String get extensionsMetadataPrioritySubtitle; - - /// Empty state - no metadata providers - /// - /// In en, this message translates to: - /// **'No extensions with metadata provider'** - String get extensionsNoMetadataProvider; - - /// Setting - search provider selection - /// - /// In en, this message translates to: - /// **'Search Provider'** - String get extensionsSearchProvider; - - /// Empty state - no search providers - /// - /// In en, this message translates to: - /// **'No extensions with custom search'** - String get extensionsNoCustomSearch; - - /// Search provider setting description - /// - /// In en, this message translates to: - /// **'Choose which service to use for searching tracks'** - String get extensionsSearchProviderDescription; - - /// Label for custom search provider - /// - /// In en, this message translates to: - /// **'Custom search'** - String get extensionsCustomSearch; - - /// Error message when extension fails to load - /// - /// In en, this message translates to: - /// **'Error loading extension'** - String get extensionsErrorLoading; - - /// Quality option - CD quality FLAC - /// - /// In en, this message translates to: - /// **'FLAC Lossless'** - String get qualityFlacLossless; - - /// Technical spec for lossless - /// - /// In en, this message translates to: - /// **'16-bit / 44.1kHz'** - String get qualityFlacLosslessSubtitle; - - /// Quality option - high resolution FLAC - /// - /// In en, this message translates to: - /// **'Hi-Res FLAC'** - String get qualityHiResFlac; - - /// Technical spec for hi-res - /// - /// In en, this message translates to: - /// **'24-bit / up to 96kHz'** - String get qualityHiResFlacSubtitle; - - /// Quality option - maximum resolution FLAC - /// - /// In en, this message translates to: - /// **'Hi-Res FLAC Max'** - String get qualityHiResFlacMax; - - /// Technical spec for hi-res max - /// - /// In en, this message translates to: - /// **'24-bit / up to 192kHz'** - String get qualityHiResFlacMaxSubtitle; - - /// Quality option label for lossy 320kbps - /// - /// In en, this message translates to: - /// **'Lossy 320kbps'** - String get downloadLossy320; - - /// Setting title to pick output format for lossy downloads - /// - /// In en, this message translates to: - /// **'Lossy Format'** - String get downloadLossyFormat; - - /// Toggle for automatic post-download audio conversion - /// - /// In en, this message translates to: - /// **'Auto-convert after download'** - String get downloadAutoConvert; - - /// Explanation of safe automatic post-download conversion - /// - /// In en, this message translates to: - /// **'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'** - String get downloadAutoConvertSubtitle; - - /// Automatic conversion output format setting - /// - /// In en, this message translates to: - /// **'Output format'** - String get downloadAutoConvertFormat; - - /// Automatic conversion format picker explanation - /// - /// In en, this message translates to: - /// **'Choose the lossy format used for newly completed downloads.'** - String get downloadAutoConvertFormatSubtitle; - - /// Automatic conversion bitrate setting - /// - /// In en, this message translates to: - /// **'Output quality'** - String get downloadAutoConvertBitrate; - - /// Automatic conversion bitrate picker explanation - /// - /// In en, this message translates to: - /// **'Higher bitrates preserve more detail but create larger files.'** - String get downloadAutoConvertBitrateSubtitle; - - /// MP3 automatic conversion option description - /// - /// In en, this message translates to: - /// **'Best compatibility across players and devices'** - String get downloadAutoConvertMp3Subtitle; - - /// M4A AAC automatic conversion option description - /// - /// In en, this message translates to: - /// **'Efficient AAC audio in an M4A container'** - String get downloadAutoConvertM4aSubtitle; - - /// Opus automatic conversion option description - /// - /// In en, this message translates to: - /// **'Best efficiency for modern players'** - String get downloadAutoConvertOpusSubtitle; - - /// Title of the lossy format picker bottom sheet - /// - /// In en, this message translates to: - /// **'Lossy 320kbps Format'** - String get downloadLossy320Format; - - /// Description in the lossy format picker - /// - /// In en, this message translates to: - /// **'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'** - String get downloadLossy320FormatDesc; - - /// Lossy format option - MP3 320kbps - /// - /// In en, this message translates to: - /// **'MP3 320kbps'** - String get downloadLossyMp3; - - /// Subtitle for MP3 320kbps lossy option - /// - /// In en, this message translates to: - /// **'Best compatibility, ~10MB per track'** - String get downloadLossyMp3Subtitle; - - /// Lossy format option - AAC in M4A container at 320kbps - /// - /// In en, this message translates to: - /// **'AAC/M4A 320kbps'** - String get downloadLossyAac; - - /// Subtitle for AAC/M4A 320kbps lossy option - /// - /// In en, this message translates to: - /// **'Best mobile compatibility, M4A container'** - String get downloadLossyAacSubtitle; - - /// Lossy format option - Opus 256kbps - /// - /// In en, this message translates to: - /// **'Opus 256kbps'** - String get downloadLossyOpus256; - - /// Subtitle for Opus 256kbps lossy option - /// - /// In en, this message translates to: - /// **'Best quality Opus, ~8MB per track'** - String get downloadLossyOpus256Subtitle; - - /// Lossy format option - Opus 128kbps - /// - /// In en, this message translates to: - /// **'Opus 128kbps'** - String get downloadLossyOpus128; - - /// Subtitle for Opus 128kbps lossy option - /// - /// In en, this message translates to: - /// **'Smallest size, ~4MB per track'** - String get downloadLossyOpus128Subtitle; - - /// Setting - show quality picker - /// - /// In en, this message translates to: - /// **'Ask Before Download'** - String get downloadAskBeforeDownload; - - /// Setting - download folder - /// - /// In en, this message translates to: - /// **'Download Directory'** - String get downloadDirectory; - - /// Setting - separate folder for singles - /// - /// In en, this message translates to: - /// **'Separate Singles Folder'** - String get downloadSeparateSinglesFolder; - - /// Setting - album folder organization - /// - /// In en, this message translates to: - /// **'Album Folder Structure'** - String get downloadAlbumFolderStructure; - - /// Album folder structure picker description - /// - /// In en, this message translates to: - /// **'Choose how album folders are structured'** - String get albumFolderStructureDescription; - - /// Setting - choose whether artist folders use Album Artist or Track Artist - /// - /// In en, this message translates to: - /// **'Use Album Artist for folders'** - String get downloadUseAlbumArtistForFolders; - - /// Setting - strip featured artists from folder name - /// - /// In en, this message translates to: - /// **'Primary artist only for folders'** - String get downloadUsePrimaryArtistOnly; - - /// Subtitle when primary artist only is enabled - /// - /// In en, this message translates to: - /// **'Featured artists removed from folder name (e.g. Justin Bieber, Quavo → Justin Bieber)'** - String get downloadUsePrimaryArtistOnlyEnabled; - - /// Subtitle when primary artist only is disabled - /// - /// In en, this message translates to: - /// **'Full artist string used for folder name'** - String get downloadUsePrimaryArtistOnlyDisabled; - - /// Dialog title - choose audio quality - /// - /// In en, this message translates to: - /// **'Select Quality'** - String get downloadSelectQuality; - - /// Label - download source - /// - /// In en, this message translates to: - /// **'Download From'** - String get downloadFrom; - - /// Theme option - pure black - /// - /// In en, this message translates to: - /// **'AMOLED Dark'** - String get appearanceAmoledDark; - - /// Subtitle for AMOLED dark - /// - /// In en, this message translates to: - /// **'Pure black background'** - String get appearanceAmoledDarkSubtitle; - - /// Toggle for shared-element (Hero) transitions - /// - /// In en, this message translates to: - /// **'Hero animations'** - String get appearanceHeroAnimations; - - /// Subtitle for the Hero animations toggle - /// - /// In en, this message translates to: - /// **'Fly covers between screens, e.g. when opening the player'** - String get appearanceHeroAnimationsSubtitle; - - /// Toggle that forces backdrop blur on even when the device profile disabled it - /// - /// In en, this message translates to: - /// **'Always use blur effects'** - String get appearanceForceBlur; - - /// Subtitle for the force-blur toggle - /// - /// In en, this message translates to: - /// **'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'** - String get appearanceForceBlurSubtitle; - - /// Button - clear all queue items - /// - /// In en, this message translates to: - /// **'Clear All'** - String get queueClearAll; - - /// Clear queue confirmation - /// - /// In en, this message translates to: - /// **'Are you sure you want to clear all downloads?'** - String get queueClearAllMessage; - - /// Setting toggle for auto-export - /// - /// In en, this message translates to: - /// **'Auto-export failed downloads'** - String get settingsAutoExportFailed; - - /// Subtitle for auto-export setting - /// - /// In en, this message translates to: - /// **'Save failed downloads to TXT file automatically'** - String get settingsAutoExportFailedSubtitle; - - /// Setting for network type preference - /// - /// In en, this message translates to: - /// **'Download Network'** - String get settingsDownloadNetwork; - - /// Network option - use any connection - /// - /// In en, this message translates to: - /// **'WiFi + Mobile Data'** - String get settingsDownloadNetworkAny; - - /// Network option - only use WiFi - /// - /// In en, this message translates to: - /// **'WiFi Only'** - String get settingsDownloadNetworkWifiOnly; - - /// Subtitle explaining network preference - /// - /// In en, this message translates to: - /// **'Choose which network to use for downloads. When set to WiFi Only, downloads will pause on mobile data.'** - String get settingsDownloadNetworkSubtitle; - - /// Setting title - how many tracks download at the same time - /// - /// In en, this message translates to: - /// **'Concurrent downloads'** - String get settingsConcurrentDownloads; - - /// Subtitle explaining the concurrent downloads picker - /// - /// In en, this message translates to: - /// **'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'** - String get settingsConcurrentDownloadsSubtitle; - - /// Concurrent downloads option - sequential - /// - /// In en, this message translates to: - /// **'1 track at a time'** - String get concurrentDownloadsOne; - - /// Concurrent downloads option - parallel - /// - /// In en, this message translates to: - /// **'Up to {count} tracks at once'** - String concurrentDownloadsCount(int count); - - /// Album folder option - /// - /// In en, this message translates to: - /// **'Artist / Album'** - String get albumFolderArtistAlbum; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Albums/Artist Name/Album Name/'** - String get albumFolderArtistAlbumSubtitle; - - /// Album folder option with year - /// - /// In en, this message translates to: - /// **'Artist / [Year] Album'** - String get albumFolderArtistYearAlbum; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Albums/Artist Name/[2005] Album Name/'** - String get albumFolderArtistYearAlbumSubtitle; - - /// Album folder option - /// - /// In en, this message translates to: - /// **'Album Only'** - String get albumFolderAlbumOnly; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Albums/Album Name/'** - String get albumFolderAlbumOnlySubtitle; - - /// Album folder option with year - /// - /// In en, this message translates to: - /// **'[Year] Album'** - String get albumFolderYearAlbum; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Albums/[2005] Album Name/'** - String get albumFolderYearAlbumSubtitle; - - /// Album folder option with singles inside artist - /// - /// In en, this message translates to: - /// **'Artist / Album + Singles'** - String get albumFolderArtistAlbumSingles; - - /// Folder structure example - /// - /// In en, this message translates to: - /// **'Artist/Album/ and Artist/Singles/'** - String get albumFolderArtistAlbumSinglesSubtitle; - - /// Album folder option with singles directly in artist folder - /// - /// In en, this message translates to: - /// **'Artist / Album (Singles flat)'** - String get albumFolderArtistAlbumFlat; - - /// Folder structure example for flat singles - /// - /// In en, this message translates to: - /// **'Artist/Album/ and Artist/song.flac'** - String get albumFolderArtistAlbumFlatSubtitle; - - /// Button - delete selected tracks - /// - /// In en, this message translates to: - /// **'Delete Selected'** - String get downloadedAlbumDeleteSelected; - - /// Delete confirmation with count - /// - /// In en, this message translates to: - /// **'Delete {count} {count, plural, =1{track} other{tracks}} from this album?\n\nThis will also delete the files from storage.'** - String downloadedAlbumDeleteMessage(int count); - - /// Selection count indicator - /// - /// In en, this message translates to: - /// **'{count} selected'** - String downloadedAlbumSelectedCount(int count); - - /// Selection hint - /// - /// In en, this message translates to: - /// **'Tap tracks to select'** - String get downloadedAlbumTapToSelect; - - /// Delete button text with count - /// - /// In en, this message translates to: - /// **'Delete {count} {count, plural, =1{track} other{tracks}}'** - String downloadedAlbumDeleteCount(int count); - - /// Placeholder when nothing selected - /// - /// In en, this message translates to: - /// **'Select tracks to delete'** - String get downloadedAlbumSelectToDelete; - - /// Header for disc separator in multi-disc albums - /// - /// In en, this message translates to: - /// **'Disc {discNumber}'** - String downloadedAlbumDiscHeader(int discNumber); - - /// Recent access item type - artist - /// - /// In en, this message translates to: - /// **'Artist'** - String get recentTypeArtist; - - /// Recent access item type - album - /// - /// In en, this message translates to: - /// **'Album'** - String get recentTypeAlbum; - - /// Recent access item type - song/track - /// - /// In en, this message translates to: - /// **'Song'** - String get recentTypeSong; - - /// Recent access item type - playlist - /// - /// In en, this message translates to: - /// **'Playlist'** - String get recentTypePlaylist; - - /// Empty state text for recent access list - /// - /// In en, this message translates to: - /// **'No recent items yet'** - String get recentEmpty; - - /// Confirmation message before clearing all recent activity - /// - /// In en, this message translates to: - /// **'Clear all recent activity? Download history and music files will not be deleted.'** - String get recentClearAllMessage; - - /// Button label to unhide hidden downloads in recent access - /// - /// In en, this message translates to: - /// **'Show All Downloads'** - String get recentShowAllDownloads; - - /// Snackbar message when tapping playlist in recent access - /// - /// In en, this message translates to: - /// **'Playlist: {name}'** - String recentPlaylistInfo(String name); - - /// Button - download artist discography - /// - /// In en, this message translates to: - /// **'Download Discography'** - String get discographyDownload; - - /// Option - download entire discography - /// - /// In en, this message translates to: - /// **'Download All'** - String get discographyDownloadAll; - - /// Subtitle showing total tracks and albums - /// - /// In en, this message translates to: - /// **'{count} tracks from {albumCount} releases'** - String discographyDownloadAllSubtitle(int count, int albumCount); - - /// Option - download only albums - /// - /// In en, this message translates to: - /// **'Albums Only'** - String get discographyAlbumsOnly; - - /// Subtitle showing album tracks count - /// - /// In en, this message translates to: - /// **'{count} tracks from {albumCount} albums'** - String discographyAlbumsOnlySubtitle(int count, int albumCount); - - /// Option - download only singles - /// - /// In en, this message translates to: - /// **'Singles & EPs Only'** - String get discographySinglesOnly; - - /// Subtitle showing singles tracks count - /// - /// In en, this message translates to: - /// **'{count} tracks from {albumCount} singles'** - String discographySinglesOnlySubtitle(int count, int albumCount); - - /// Option - manually select albums to download - /// - /// In en, this message translates to: - /// **'Select Albums...'** - String get discographySelectAlbums; - - /// Subtitle for select albums option - /// - /// In en, this message translates to: - /// **'Choose specific albums or singles'** - String get discographySelectAlbumsSubtitle; - - /// Progress - fetching album tracks - /// - /// In en, this message translates to: - /// **'Fetching tracks...'** - String get discographyFetchingTracks; - - /// Progress - fetching specific album - /// - /// In en, this message translates to: - /// **'Fetching {current} of {total}...'** - String discographyFetchingAlbum(int current, int total); - - /// Selection count badge - /// - /// In en, this message translates to: - /// **'{count} selected'** - String discographySelectedCount(int count); - - /// Button - download selected albums - /// - /// In en, this message translates to: - /// **'Download Selected'** - String get discographyDownloadSelected; - - /// Snackbar - tracks added from discography - /// - /// In en, this message translates to: - /// **'Added {count} tracks to queue'** - String discographyAddedToQueue(int count); - - /// Snackbar - with skipped tracks count - /// - /// In en, this message translates to: - /// **'{added} added, {skipped} already downloaded'** - String discographySkippedDownloaded(int added, int skipped); - - /// Error - no albums found for artist - /// - /// In en, this message translates to: - /// **'No albums available'** - String get discographyNoAlbums; - - /// Error - some albums failed to load - /// - /// In en, this message translates to: - /// **'Failed to fetch some albums'** - String get discographyFailedToFetch; - - /// Section header for storage access settings - /// - /// In en, this message translates to: - /// **'Storage Access'** - String get sectionStorageAccess; - - /// Toggle for MANAGE_EXTERNAL_STORAGE permission - /// - /// In en, this message translates to: - /// **'All Files Access'** - String get allFilesAccess; - - /// Subtitle when all files access is enabled - /// - /// In en, this message translates to: - /// **'Can write to any folder'** - String get allFilesAccessEnabledSubtitle; - - /// Subtitle when all files access is disabled - /// - /// In en, this message translates to: - /// **'Limited to media folders only'** - String get allFilesAccessDisabledSubtitle; - - /// Description explaining when to enable all files access - /// - /// In en, this message translates to: - /// **'Enable this if you encounter write errors when saving to custom folders. Android 13+ restricts access to certain directories by default.'** - String get allFilesAccessDescription; - - /// Message when permission is permanently denied - /// - /// In en, this message translates to: - /// **'Permission was denied. Please enable \'All files access\' manually in system settings.'** - String get allFilesAccessDeniedMessage; - - /// Snackbar message when user disables all files access - /// - /// In en, this message translates to: - /// **'All Files Access disabled. The app will use limited storage access.'** - String get allFilesAccessDisabledMessage; - - /// Settings menu item - local library - /// - /// In en, this message translates to: - /// **'Local Library'** - String get settingsLocalLibrary; - - /// Subtitle for local library settings - /// - /// In en, this message translates to: - /// **'Scan music & detect duplicates'** - String get settingsLocalLibrarySubtitle; - - /// Settings menu item - cache management - /// - /// In en, this message translates to: - /// **'Storage & Cache'** - String get settingsCache; - - /// Subtitle for cache management menu - /// - /// In en, this message translates to: - /// **'View size and clear cached data'** - String get settingsCacheSubtitle; - - /// Library settings page title - /// - /// In en, this message translates to: - /// **'Local Library'** - String get libraryTitle; - - /// Section header for scan settings - /// - /// In en, this message translates to: - /// **'Scan Settings'** - String get libraryScanSettings; - - /// Toggle to enable library scanning - /// - /// In en, this message translates to: - /// **'Enable Local Library'** - String get libraryEnableLocalLibrary; - - /// Subtitle for enable toggle - /// - /// In en, this message translates to: - /// **'Scan and track your existing music'** - String get libraryEnableLocalLibrarySubtitle; - - /// Folder selection setting - /// - /// In en, this message translates to: - /// **'Library Folder'** - String get libraryFolder; - - /// Placeholder when no folder selected - /// - /// In en, this message translates to: - /// **'Tap to select folder'** - String get libraryFolderHint; - - /// Action to add another local library source - /// - /// In en, this message translates to: - /// **'Add library folder'** - String get libraryAddFolder; - - /// Supported storage locations for local library sources - /// - /// In en, this message translates to: - /// **'Internal storage, SD card, SSD, or another external drive'** - String get libraryAddFolderSubtitle; - - /// Library source is connected and accessible - /// - /// In en, this message translates to: - /// **'Online'** - String get librarySourceOnline; - - /// Library source is temporarily disconnected - /// - /// In en, this message translates to: - /// **'Offline. Reconnect the storage to restore these tracks'** - String get librarySourceOffline; - - /// Library source has been disabled by the user - /// - /// In en, this message translates to: - /// **'Disabled'** - String get librarySourceDisabled; - - /// Live progress for one library folder scan - /// - /// In en, this message translates to: - /// **'{scanned} of {total} files scanned ({progress}%)'** - String librarySourceScanCount(int scanned, int total, String progress); - - /// Label for a removable or external library source - /// - /// In en, this message translates to: - /// **'External storage'** - String get libraryExternalStorage; - - /// Action to remove one indexed library source - /// - /// In en, this message translates to: - /// **'Remove library folder'** - String get libraryRemoveFolder; - - /// Confirmation shown before removing a library source - /// - /// In en, this message translates to: - /// **'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'** - String get libraryRemoveFolderMessage; - - /// Toggle for duplicate indicator in search - /// - /// In en, this message translates to: - /// **'Show Duplicate Indicator'** - String get libraryShowDuplicateIndicator; - - /// Subtitle for duplicate indicator toggle - /// - /// In en, this message translates to: - /// **'Show when searching for existing tracks'** - String get libraryShowDuplicateIndicatorSubtitle; - - /// Setting for automatic library scanning - /// - /// In en, this message translates to: - /// **'Auto Scan'** - String get libraryAutoScan; - - /// Subtitle for auto scan setting - /// - /// In en, this message translates to: - /// **'Automatically scan your library for new files'** - String get libraryAutoScanSubtitle; - - /// Auto scan disabled - /// - /// In en, this message translates to: - /// **'Off'** - String get libraryAutoScanOff; - - /// Auto scan when app opens - /// - /// In en, this message translates to: - /// **'Every app open'** - String get libraryAutoScanOnOpen; - - /// Auto scan once per day - /// - /// In en, this message translates to: - /// **'Daily'** - String get libraryAutoScanDaily; - - /// Auto scan once per week - /// - /// In en, this message translates to: - /// **'Weekly'** - String get libraryAutoScanWeekly; - - /// Section header for library actions - /// - /// In en, this message translates to: - /// **'Actions'** - String get libraryActions; - - /// Button to start library scan - /// - /// In en, this message translates to: - /// **'Scan Library'** - String get libraryScan; - - /// Subtitle for scan button - /// - /// In en, this message translates to: - /// **'Scan for audio files'** - String get libraryScanSubtitle; - - /// Message when trying to scan without folder - /// - /// In en, this message translates to: - /// **'Select a folder first'** - String get libraryScanSelectFolderFirst; - - /// Button to remove entries for missing files - /// - /// In en, this message translates to: - /// **'Cleanup Missing Files'** - String get libraryCleanupMissingFiles; - - /// Subtitle for cleanup button - /// - /// In en, this message translates to: - /// **'Remove entries for files that no longer exist'** - String get libraryCleanupMissingFilesSubtitle; - - /// Button to clear all library entries - /// - /// In en, this message translates to: - /// **'Clear Library'** - String get libraryClear; - - /// Subtitle for clear button - /// - /// In en, this message translates to: - /// **'Remove all scanned tracks'** - String get libraryClearSubtitle; - - /// Dialog title for clear confirmation - /// - /// In en, this message translates to: - /// **'Clear Library'** - String get libraryClearConfirmTitle; - - /// Dialog message for clear confirmation - /// - /// In en, this message translates to: - /// **'This will remove all scanned tracks from your library. Your actual music files will not be deleted.'** - String get libraryClearConfirmMessage; - - /// Section header for about info - /// - /// In en, this message translates to: - /// **'About Local Library'** - String get libraryAbout; - - /// Description of local library feature - /// - /// In en, this message translates to: - /// **'Scans your existing music collection to detect duplicates when downloading. Supports FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF, and APE formats. Metadata is read from file tags when available.'** - String get libraryAboutDescription; - - /// Unit label for tracks count (without the number itself) - /// - /// In en, this message translates to: - /// **'{count, plural, =1{track} other{tracks}}'** - String libraryTracksUnit(int count); - - /// Unit label for files count during library scanning - /// - /// In en, this message translates to: - /// **'{count, plural, =1{file} other{files}}'** - String libraryFilesUnit(int count); - - /// Last scan time display - /// - /// In en, this message translates to: - /// **'Last scanned: {time}'** - String libraryLastScanned(String time); - - /// Shown when library has never been scanned - /// - /// In en, this message translates to: - /// **'Never'** - String get libraryLastScannedNever; - - /// Status during scan - /// - /// In en, this message translates to: - /// **'Scanning...'** - String get libraryScanning; - - /// Status shown after file scanning finishes but library persistence is still running - /// - /// In en, this message translates to: - /// **'Finalizing library...'** - String get libraryScanFinalizing; - - /// Scan progress display - /// - /// In en, this message translates to: - /// **'{progress}% of {total} files'** - String libraryScanProgress(String progress, int total); - - /// Badge shown on tracks that exist in local library - /// - /// In en, this message translates to: - /// **'In Library'** - String get libraryInLibrary; - - /// Snackbar after cleanup - /// - /// In en, this message translates to: - /// **'Removed {count} missing files from library'** - String libraryRemovedMissingFiles(int count); - - /// Snackbar after clearing library - /// - /// In en, this message translates to: - /// **'Library cleared'** - String get libraryCleared; - - /// Dialog title for storage permission - /// - /// In en, this message translates to: - /// **'Storage Access Required'** - String get libraryStorageAccessRequired; - - /// Dialog message for storage permission - /// - /// In en, this message translates to: - /// **'SpotiFLAC needs storage access to scan your music library. Please grant permission in settings.'** - String get libraryStorageAccessMessage; - - /// Error when folder doesn't exist - /// - /// In en, this message translates to: - /// **'Selected folder does not exist'** - String get libraryFolderNotExist; - - /// Badge for tracks downloaded via SpotiFLAC - /// - /// In en, this message translates to: - /// **'Downloaded'** - String get librarySourceDownloaded; - - /// Badge for tracks from local library scan - /// - /// In en, this message translates to: - /// **'Local'** - String get librarySourceLocal; - - /// Filter chip - show all library items - /// - /// In en, this message translates to: - /// **'All'** - String get libraryFilterAll; - - /// Filter chip - show only downloaded items - /// - /// In en, this message translates to: - /// **'Downloaded'** - String get libraryFilterDownloaded; - - /// Filter chip - show only local library items - /// - /// In en, this message translates to: - /// **'Local'** - String get libraryFilterLocal; - - /// Filter bottom sheet title - /// - /// In en, this message translates to: - /// **'Filters'** - String get libraryFilterTitle; - - /// Reset all filters button - /// - /// In en, this message translates to: - /// **'Reset'** - String get libraryFilterReset; - - /// Apply filters button - /// - /// In en, this message translates to: - /// **'Apply'** - String get libraryFilterApply; - - /// Filter section - source type - /// - /// In en, this message translates to: - /// **'Source'** - String get libraryFilterSource; - - /// Filter section - audio quality - /// - /// In en, this message translates to: - /// **'Quality'** - String get libraryFilterQuality; - - /// Filter option - high resolution audio - /// - /// In en, this message translates to: - /// **'Hi-Res (24bit)'** - String get libraryFilterQualityHiRes; - - /// Filter option - CD quality audio - /// - /// In en, this message translates to: - /// **'CD (16bit)'** - String get libraryFilterQualityCD; - - /// Filter option - lossy compressed audio - /// - /// In en, this message translates to: - /// **'Lossy'** - String get libraryFilterQualityLossy; - - /// Filter section - file format - /// - /// In en, this message translates to: - /// **'Format'** - String get libraryFilterFormat; - - /// Filter section - metadata completeness - /// - /// In en, this message translates to: - /// **'Metadata'** - String get libraryFilterMetadata; - - /// Filter option - items with complete metadata - /// - /// In en, this message translates to: - /// **'Complete metadata'** - String get libraryFilterMetadataComplete; - - /// Filter option - items missing any tracked metadata field - /// - /// In en, this message translates to: - /// **'Missing any metadata'** - String get libraryFilterMetadataMissingAny; - - /// Filter option - items missing release year/date - /// - /// In en, this message translates to: - /// **'Missing year'** - String get libraryFilterMetadataMissingYear; - - /// Filter option - items missing genre - /// - /// In en, this message translates to: - /// **'Missing genre'** - String get libraryFilterMetadataMissingGenre; - - /// Filter option - items missing album artist - /// - /// In en, this message translates to: - /// **'Missing album artist'** - String get libraryFilterMetadataMissingAlbumArtist; - - /// Filter section - sort order - /// - /// In en, this message translates to: - /// **'Sort'** - String get libraryFilterSort; - - /// Sort option - newest first - /// - /// In en, this message translates to: - /// **'Latest'** - String get libraryFilterSortLatest; - - /// Sort option - oldest first - /// - /// In en, this message translates to: - /// **'Oldest'** - String get libraryFilterSortOldest; - - /// Sort option - album ascending - /// - /// In en, this message translates to: - /// **'Album (A-Z)'** - String get libraryFilterSortAlbumAsc; - - /// Sort option - album descending - /// - /// In en, this message translates to: - /// **'Album (Z-A)'** - String get libraryFilterSortAlbumDesc; - - /// Sort option - genre ascending - /// - /// In en, this message translates to: - /// **'Genre (A-Z)'** - String get libraryFilterSortGenreAsc; - - /// Sort option - genre descending - /// - /// In en, this message translates to: - /// **'Genre (Z-A)'** - String get libraryFilterSortGenreDesc; - - /// Relative time - less than a minute ago - /// - /// In en, this message translates to: - /// **'Just now'** - String get timeJustNow; - - /// Relative time - minutes ago - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 minute ago} other{{count} minutes ago}}'** - String timeMinutesAgo(int count); - - /// Relative time - hours ago - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 hour ago} other{{count} hours ago}}'** - String timeHoursAgo(int count); - - /// Tutorial welcome page title - /// - /// In en, this message translates to: - /// **'Welcome to SpotiFLAC Mobile!'** - String get tutorialWelcomeTitle; - - /// Tutorial welcome page description - /// - /// In en, this message translates to: - /// **'Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.'** - String get tutorialWelcomeDesc; - - /// Tutorial welcome tip 1 - /// - /// In en, this message translates to: - /// **'Search with an installed extension or paste a supported music link'** - String get tutorialWelcomeTip1; - - /// Tutorial welcome tip 2 - /// - /// In en, this message translates to: - /// **'Choose from the audio qualities offered by your download provider'** - String get tutorialWelcomeTip2; - - /// Tutorial welcome tip 3 - /// - /// In en, this message translates to: - /// **'Embed metadata, cover art, lyrics, and release information automatically'** - String get tutorialWelcomeTip3; - - /// Tutorial search page title - /// - /// In en, this message translates to: - /// **'Finding Music'** - String get tutorialSearchTitle; - - /// Tutorial search page description - /// - /// In en, this message translates to: - /// **'Search with your selected extension or paste a supported music link.'** - String get tutorialSearchDesc; - - /// Tutorial download page title - /// - /// In en, this message translates to: - /// **'Downloading Music'** - String get tutorialDownloadTitle; - - /// Tutorial download page description - /// - /// In en, this message translates to: - /// **'Pick an available quality, start the download, and follow its progress in the queue.'** - String get tutorialDownloadDesc; - - /// Tutorial library page title - /// - /// In en, this message translates to: - /// **'Your Library'** - String get tutorialLibraryTitle; - - /// Tutorial library page description - /// - /// In en, this message translates to: - /// **'Downloaded and locally scanned music is organized in your Library.'** - String get tutorialLibraryDesc; - - /// Tutorial library tip 1 - /// - /// In en, this message translates to: - /// **'Manage active, pending, and completed downloads from the Library queue'** - String get tutorialLibraryTip1; - - /// Tutorial library tip 2 - /// - /// In en, this message translates to: - /// **'Tap a track to play it with the built-in player'** - String get tutorialLibraryTip2; - - /// Tutorial library tip 3 - /// - /// In en, this message translates to: - /// **'Browse tracks, albums, and playlists in list or grid views'** - String get tutorialLibraryTip3; - - /// Tutorial extensions page title - /// - /// In en, this message translates to: - /// **'Extensions'** - String get tutorialExtensionsTitle; - - /// Tutorial extensions page description - /// - /// In en, this message translates to: - /// **'Extensions add search, download, metadata, lyrics, and other integrations.'** - String get tutorialExtensionsDesc; - - /// Tutorial extensions tip 1 - /// - /// In en, this message translates to: - /// **'Browse the Repo tab to discover useful extensions'** - String get tutorialExtensionsTip1; - - /// Tutorial extensions tip 2 - /// - /// In en, this message translates to: - /// **'Choose providers for search, downloads, metadata, and fallbacks'** - String get tutorialExtensionsTip2; - - /// Tutorial extensions tip 3 - /// - /// In en, this message translates to: - /// **'Connect accounts when required and keep extensions up to date'** - String get tutorialExtensionsTip3; - - /// Tutorial settings page title - /// - /// In en, this message translates to: - /// **'Customize Your Experience'** - String get tutorialSettingsTitle; - - /// Tutorial settings page description - /// - /// In en, this message translates to: - /// **'Fine-tune downloads, playback, Library behavior, appearance, and storage.'** - String get tutorialSettingsDesc; - - /// Tutorial settings tip 1 - /// - /// In en, this message translates to: - /// **'Change download location and folder organization'** - String get tutorialSettingsTip1; - - /// Tutorial settings tip 2 - /// - /// In en, this message translates to: - /// **'Set quality, concurrency, filenames, and conversion preferences'** - String get tutorialSettingsTip2; - - /// Tutorial settings tip 3 - /// - /// In en, this message translates to: - /// **'Customize app theme and appearance'** - String get tutorialSettingsTip3; - - /// Tutorial completion message - /// - /// In en, this message translates to: - /// **'You\'re ready. Select your extensions, then search or paste a supported link.'** - String get tutorialReadyMessage; - - /// Button to force a complete rescan of library - /// - /// In en, this message translates to: - /// **'Force Full Scan'** - String get libraryForceFullScan; - - /// Subtitle for force full scan button - /// - /// In en, this message translates to: - /// **'Rescan all files, ignoring cache'** - String get libraryForceFullScanSubtitle; - - /// Button to remove history entries for deleted files - /// - /// In en, this message translates to: - /// **'Cleanup Orphaned Downloads'** - String get cleanupOrphanedDownloads; - - /// Subtitle for orphaned cleanup button - /// - /// In en, this message translates to: - /// **'Remove history entries for files that no longer exist'** - String get cleanupOrphanedDownloadsSubtitle; - - /// Snackbar after orphan cleanup - /// - /// In en, this message translates to: - /// **'Removed {count} orphaned entries from history'** - String cleanupOrphanedDownloadsResult(int count); - - /// Snackbar when no orphans found - /// - /// In en, this message translates to: - /// **'No orphaned entries found'** - String get cleanupOrphanedDownloadsNone; - - /// Cache management page title - /// - /// In en, this message translates to: - /// **'Storage & Cache'** - String get cacheTitle; - - /// Heading for cache summary card - /// - /// In en, this message translates to: - /// **'Cache overview'** - String get cacheSummaryTitle; - - /// Helper text for cache summary card - /// - /// In en, this message translates to: - /// **'Clearing cache will not remove downloaded music files.'** - String get cacheSummarySubtitle; - - /// Total cache size shown in summary - /// - /// In en, this message translates to: - /// **'Estimated cache usage: {size}'** - String cacheEstimatedTotal(String size); - - /// Section header for cache entries - /// - /// In en, this message translates to: - /// **'Cached Data'** - String get cacheSectionStorage; - - /// Section header for cleanup actions - /// - /// In en, this message translates to: - /// **'Maintenance'** - String get cacheSectionMaintenance; - - /// Cache item title for app cache directory - /// - /// In en, this message translates to: - /// **'App cache directory'** - String get cacheAppDirectory; - - /// Description of what app cache directory contains - /// - /// In en, this message translates to: - /// **'HTTP responses, WebView data, and other temporary app data.'** - String get cacheAppDirectoryDesc; - - /// Cache item title for temporary files directory - /// - /// In en, this message translates to: - /// **'Temporary directory'** - String get cacheTempDirectory; - - /// Description of what temporary directory contains - /// - /// In en, this message translates to: - /// **'Temporary files from downloads and audio conversion.'** - String get cacheTempDirectoryDesc; - - /// Cache item title for persistent cover images - /// - /// In en, this message translates to: - /// **'Cover image cache'** - String get cacheCoverImage; - - /// Description of what cover image cache contains - /// - /// In en, this message translates to: - /// **'Downloaded album and track cover art. Will re-download when viewed.'** - String get cacheCoverImageDesc; - - /// Cache item title for local library cover art images - /// - /// In en, this message translates to: - /// **'Library cover cache'** - String get cacheLibraryCover; - - /// Description of what library cover cache contains - /// - /// In en, this message translates to: - /// **'Cover art extracted from local music files. Will re-extract on next scan.'** - String get cacheLibraryCoverDesc; - - /// Toggle title for ReplayGain playback normalization in the built-in player - /// - /// In en, this message translates to: - /// **'Volume normalization'** - String get libraryPlaybackNormalization; - - /// Subtitle explaining playback volume normalization - /// - /// In en, this message translates to: - /// **'Even out loudness between tracks using their ReplayGain or R128 tags, when present'** - String get libraryPlaybackNormalizationSubtitle; - - /// Cache item title for saved audio analysis results - /// - /// In en, this message translates to: - /// **'Audio analysis cache'** - String get cacheAudioAnalysis; - - /// Description of what audio analysis cache contains - /// - /// In en, this message translates to: - /// **'Saved spectrograms and analysis results. Will re-analyze on next open.'** - String get cacheAudioAnalysisDesc; - - /// Cache item title for explore home feed cache - /// - /// In en, this message translates to: - /// **'Explore feed cache'** - String get cacheExploreFeed; - - /// Description of what explore feed cache contains - /// - /// In en, this message translates to: - /// **'Explore tab content (new releases, trending). Will refresh on next visit.'** - String get cacheExploreFeedDesc; - - /// Cache item title for track ID lookup cache - /// - /// In en, this message translates to: - /// **'Track lookup cache'** - String get cacheTrackLookup; - - /// Description of what track lookup cache contains - /// - /// In en, this message translates to: - /// **'Spotify/Deezer track ID lookups. Clearing may slow next few searches.'** - String get cacheTrackLookupDesc; - - /// Description of what cleanup unused data does - /// - /// In en, this message translates to: - /// **'Remove orphaned download history and library entries for missing files.'** - String get cacheCleanupUnusedDesc; - - /// Label when cache category has no data - /// - /// In en, this message translates to: - /// **'No cached data'** - String get cacheNoData; - - /// Cache size and file count - /// - /// In en, this message translates to: - /// **'{size} in {count} files'** - String cacheSizeWithFiles(String size, int count); - - /// Cache size only - /// - /// In en, this message translates to: - /// **'{size}'** - String cacheSizeOnly(String size); - - /// Track cache entry count - /// - /// In en, this message translates to: - /// **'{count} entries'** - String cacheEntries(int count); - - /// Snackbar after clearing selected cache - /// - /// In en, this message translates to: - /// **'Cleared: {target}'** - String cacheClearSuccess(String target); - - /// Dialog title before clearing one cache category - /// - /// In en, this message translates to: - /// **'Clear cache?'** - String get cacheClearConfirmTitle; - - /// Dialog message before clearing selected cache - /// - /// In en, this message translates to: - /// **'This will clear cached data for {target}. Downloaded music files will not be deleted.'** - String cacheClearConfirmMessage(String target); - - /// Dialog title before clearing all caches - /// - /// In en, this message translates to: - /// **'Clear all cache?'** - String get cacheClearAllConfirmTitle; - - /// Dialog message before clearing all caches - /// - /// In en, this message translates to: - /// **'This will clear all cache categories on this page. Downloaded music files will not be deleted.'** - String get cacheClearAllConfirmMessage; - - /// Button label to clear all caches - /// - /// In en, this message translates to: - /// **'Clear all cache'** - String get cacheClearAll; - - /// Action title for cleaning unused entries - /// - /// In en, this message translates to: - /// **'Cleanup unused data'** - String get cacheCleanupUnused; - - /// Subtitle for cleanup unused data action - /// - /// In en, this message translates to: - /// **'Remove orphaned download history and missing library entries'** - String get cacheCleanupUnusedSubtitle; - - /// Snackbar after unused data cleanup - /// - /// In en, this message translates to: - /// **'Cleanup completed: {downloadCount} orphaned downloads, {libraryCount} missing library entries'** - String cacheCleanupResult(int downloadCount, int libraryCount); - - /// Button label to refresh cache statistics - /// - /// In en, this message translates to: - /// **'Refresh stats'** - String get cacheRefreshStats; - - /// Menu action - save album cover art as file - /// - /// In en, this message translates to: - /// **'Save Cover Art'** - String get trackSaveCoverArt; - - /// Menu action - save lyrics as .lrc file - /// - /// In en, this message translates to: - /// **'Save Lyrics (.lrc)'** - String get trackSaveLyrics; - - /// Snackbar while saving lyrics to file - /// - /// In en, this message translates to: - /// **'Saving lyrics...'** - String get trackSaveLyricsProgress; - - /// Menu action - re-embed metadata into audio file - /// - /// In en, this message translates to: - /// **'Re-enrich'** - String get trackReEnrich; - - /// Subtitle for re-enrich metadata action for local items - /// - /// In en, this message translates to: - /// **'Search metadata online and embed into file'** - String get trackReEnrichOnlineSubtitle; - - /// Checkbox label for cover art field in re-enrich - /// - /// In en, this message translates to: - /// **'Cover Art'** - String get trackReEnrichFieldCover; - - /// Checkbox label for lyrics field in re-enrich - /// - /// In en, this message translates to: - /// **'Lyrics'** - String get trackReEnrichFieldLyrics; - - /// Checkbox label for basic tags in re-enrich (title/artist are never overwritten) - /// - /// In en, this message translates to: - /// **'Album, Album Artist'** - String get trackReEnrichFieldBasicTags; - - /// Checkbox label for track info in re-enrich - /// - /// In en, this message translates to: - /// **'Track & Disc Number'** - String get trackReEnrichFieldTrackInfo; - - /// Checkbox label for release info in re-enrich - /// - /// In en, this message translates to: - /// **'Date & ISRC'** - String get trackReEnrichFieldReleaseInfo; - - /// Checkbox label for extra metadata in re-enrich - /// - /// In en, this message translates to: - /// **'Genre, Label, Copyright'** - String get trackReEnrichFieldExtra; - - /// Select all fields checkbox in re-enrich - /// - /// In en, this message translates to: - /// **'Select All'** - String get trackReEnrichSelectAll; - - /// Batch metadata mode that only writes ISRC - /// - /// In en, this message translates to: - /// **'ISRC only'** - String get trackReEnrichModeIsrc; - - /// Explanation for the ISRC-only batch metadata mode - /// - /// In en, this message translates to: - /// **'Find and add the recording identifier without changing other tags'** - String get trackReEnrichModeIsrcSubtitle; - - /// Batch metadata mode that fills only empty tags - /// - /// In en, this message translates to: - /// **'Fill missing tags'** - String get trackReEnrichModeMissing; - - /// Explanation for the fill-missing batch metadata mode - /// - /// In en, this message translates to: - /// **'Keep existing values and fill only fields that are empty'** - String get trackReEnrichModeMissingSubtitle; - - /// Batch metadata mode that replaces selected tag groups - /// - /// In en, this message translates to: - /// **'Update selected tags'** - String get trackReEnrichModeReplace; - - /// Explanation for the selected-tag batch metadata mode - /// - /// In en, this message translates to: - /// **'Choose which existing values may be replaced by online metadata'** - String get trackReEnrichModeReplaceSubtitle; - - /// Heading above batch re-enrich field checkboxes - /// - /// In en, this message translates to: - /// **'Tags to update'** - String get trackReEnrichFieldsTitle; - - /// Button that searches metadata and opens the batch change review - /// - /// In en, this message translates to: - /// **'Review changes'** - String get trackReEnrichReview; - - /// Title of the batch metadata review sheet - /// - /// In en, this message translates to: - /// **'Review metadata changes'** - String get trackReEnrichReviewTitle; - - /// Summary shown above proposed batch metadata changes - /// - /// In en, this message translates to: - /// **'{changeCount} proposed changes across {trackCount} tracks'** - String trackReEnrichReviewSubtitle(int changeCount, int trackCount); - - /// Message when batch metadata preview has no proposed changes - /// - /// In en, this message translates to: - /// **'No metadata changes were found for the selected tracks.'** - String get trackReEnrichNoChanges; - - /// Confirmation button in the batch metadata review sheet - /// - /// In en, this message translates to: - /// **'Apply changes'** - String get trackReEnrichApplyChanges; - - /// Proposed value when lyrics will be refreshed during re-enrich - /// - /// In en, this message translates to: - /// **'Refresh from online'** - String get trackReEnrichRefreshOnline; - - /// Menu action - edit embedded metadata - /// - /// In en, this message translates to: - /// **'Edit Metadata'** - String get trackEditMetadata; - - /// Snackbar after cover art saved - /// - /// In en, this message translates to: - /// **'Cover art saved to {fileName}'** - String trackCoverSaved(String fileName); - - /// Snackbar when no cover art URL or embedded cover - /// - /// In en, this message translates to: - /// **'No cover art source available'** - String get trackCoverNoSource; - - /// Snackbar after lyrics saved - /// - /// In en, this message translates to: - /// **'Lyrics saved to {fileName}'** - String trackLyricsSaved(String fileName); - - /// Snackbar while re-enriching metadata - /// - /// In en, this message translates to: - /// **'Re-enriching metadata...'** - String get trackReEnrichProgress; - - /// Snackbar while searching metadata from internet for local items - /// - /// In en, this message translates to: - /// **'Searching metadata online...'** - String get trackReEnrichSearching; - - /// Snackbar after successful re-enrichment - /// - /// In en, this message translates to: - /// **'Metadata re-enriched successfully'** - String get trackReEnrichSuccess; - - /// Snackbar when FFmpeg embed fails for MP3/Opus - /// - /// In en, this message translates to: - /// **'FFmpeg metadata embed failed'** - String get trackReEnrichFfmpegFailed; - - /// Action/button label for queueing FLAC redownloads for local tracks - /// - /// In en, this message translates to: - /// **'Queue FLAC'** - String get queueFlacAction; - - /// Confirmation dialog body before queueing FLAC redownloads for local tracks - /// - /// In en, this message translates to: - /// **'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'** - String queueFlacConfirmMessage(int count); - - /// Snackbar when no safe FLAC redownload matches were found - /// - /// In en, this message translates to: - /// **'No reliable online matches found for the selection'** - String get queueFlacNoReliableMatches; - - /// Snackbar when some selected local tracks were queued for FLAC redownload and some were skipped - /// - /// In en, this message translates to: - /// **'Added {addedCount} tracks to queue, skipped {skippedCount}'** - String queueFlacQueuedWithSkipped(int addedCount, int skippedCount); - - /// Snackbar when save operation fails - /// - /// In en, this message translates to: - /// **'Failed: {error}'** - String trackSaveFailed(String error); - - /// Menu item - convert audio format - /// - /// In en, this message translates to: - /// **'Convert Format'** - String get trackConvertFormat; - - /// Title of convert bottom sheet - /// - /// In en, this message translates to: - /// **'Convert Audio'** - String get trackConvertTitle; - - /// Label for format selection - /// - /// In en, this message translates to: - /// **'Target Format'** - String get trackConvertTargetFormat; - - /// Label for bitrate selection - /// - /// In en, this message translates to: - /// **'Bitrate'** - String get trackConvertBitrate; - - /// Toggle to preserve the source file during conversion - /// - /// In en, this message translates to: - /// **'Keep original file'** - String get trackConvertKeepOriginal; - - /// Description for preserving the source file during conversion - /// - /// In en, this message translates to: - /// **'Add the converted file as a separate library entry'** - String get trackConvertKeepOriginalDescription; - - /// Confirmation dialog title - /// - /// In en, this message translates to: - /// **'Confirm Conversion'** - String get trackConvertConfirmTitle; - - /// Confirmation dialog message - /// - /// In en, this message translates to: - /// **'Convert from {sourceFormat} to {targetFormat} at {bitrate}?\n\nThe original file will be deleted after conversion.'** - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ); - - /// Confirmation dialog message for lossless-to-lossless conversion - /// - /// In en, this message translates to: - /// **'Convert from {sourceFormat} to {targetFormat}? (Lossless — no quality loss)\n\nThe original file will be deleted after conversion.'** - String trackConvertConfirmMessageLossless( - String sourceFormat, - String targetFormat, - ); - - /// Confirmation message when the source file will be preserved - /// - /// In en, this message translates to: - /// **'Convert from {sourceFormat} to {targetFormat}?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'** - String trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ); - - /// Hint shown when converting between lossless formats - /// - /// In en, this message translates to: - /// **'Lossless conversion — no quality loss'** - String get trackConvertLosslessHint; - - /// Snackbar while converting - /// - /// In en, this message translates to: - /// **'Converting audio...'** - String get trackConvertConverting; - - /// Snackbar after successful conversion - /// - /// In en, this message translates to: - /// **'Converted to {format} successfully'** - String trackConvertSuccess(String format); - - /// Snackbar when conversion fails - /// - /// In en, this message translates to: - /// **'Conversion failed'** - String get trackConvertFailed; - - /// Title for CUE split bottom sheet - /// - /// In en, this message translates to: - /// **'Split CUE Sheet'** - String get cueSplitTitle; - - /// Album name in CUE split sheet - /// - /// In en, this message translates to: - /// **'Album: {album}'** - String cueSplitAlbum(String album); - - /// Artist name in CUE split sheet - /// - /// In en, this message translates to: - /// **'Artist: {artist}'** - String cueSplitArtist(String artist); - - /// Number of tracks in CUE sheet - /// - /// In en, this message translates to: - /// **'{count} tracks'** - String cueSplitTrackCount(int count); - - /// CUE split confirmation dialog title - /// - /// In en, this message translates to: - /// **'Split CUE Album'** - String get cueSplitConfirmTitle; - - /// CUE split confirmation dialog message - /// - /// In en, this message translates to: - /// **'Split \"{album}\" into {count} individual FLAC files?\n\nFiles will be saved to the same directory.'** - String cueSplitConfirmMessage(String album, int count); - - /// Snackbar while splitting CUE - /// - /// In en, this message translates to: - /// **'Splitting CUE sheet... ({current}/{total})'** - String cueSplitSplitting(int current, int total); - - /// Snackbar after successful CUE split - /// - /// In en, this message translates to: - /// **'Split into {count} tracks successfully'** - String cueSplitSuccess(int count); - - /// Snackbar when CUE split fails - /// - /// In en, this message translates to: - /// **'CUE split failed'** - String get cueSplitFailed; - - /// Error when CUE audio file is missing - /// - /// In en, this message translates to: - /// **'Audio file not found for this CUE sheet'** - String get cueSplitNoAudioFile; - - /// Button text to start CUE splitting - /// - /// In en, this message translates to: - /// **'Split into Tracks'** - String get cueSplitButton; - - /// Generic action button - create - /// - /// In en, this message translates to: - /// **'Create'** - String get actionCreate; - - /// Library section title for custom folders - /// - /// In en, this message translates to: - /// **'My folders'** - String get collectionFoldersTitle; - - /// Custom folder for saved tracks to download later - /// - /// In en, this message translates to: - /// **'Wishlist'** - String get collectionWishlist; - - /// Custom folder for favorite tracks - /// - /// In en, this message translates to: - /// **'Loved'** - String get collectionLoved; - - /// Custom folder for favorite artists - /// - /// In en, this message translates to: - /// **'Favorite Artists'** - String get collectionFavoriteArtists; - - /// Single playlist label - /// - /// In en, this message translates to: - /// **'Playlist'** - String get collectionPlaylist; - - /// Action to add a track to user playlist - /// - /// In en, this message translates to: - /// **'Add to playlist'** - String get collectionAddToPlaylist; - - /// Action to create a new playlist - /// - /// In en, this message translates to: - /// **'Create playlist'** - String get collectionCreatePlaylist; - - /// Empty state title when user has no playlists - /// - /// In en, this message translates to: - /// **'No playlists yet'** - String get collectionNoPlaylistsYet; - - /// Track count label for custom playlists - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 track} other{{count} tracks}}'** - String collectionPlaylistTracks(int count); - - /// Artist count label for favorite artists - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 artist} other{{count} artists}}'** - String collectionArtistCount(int count); - - /// Snackbar after adding track to playlist - /// - /// In en, this message translates to: - /// **'Added to \"{playlistName}\"'** - String collectionAddedToPlaylist(String playlistName); - - /// Snackbar when track already exists in playlist - /// - /// In en, this message translates to: - /// **'Already in \"{playlistName}\"'** - String collectionAlreadyInPlaylist(String playlistName); - - /// Hint text for playlist name input - /// - /// In en, this message translates to: - /// **'Playlist name'** - String get collectionPlaylistNameHint; - - /// Validation error for empty playlist name - /// - /// In en, this message translates to: - /// **'Playlist name is required'** - String get collectionPlaylistNameRequired; - - /// Action to rename playlist - /// - /// In en, this message translates to: - /// **'Rename playlist'** - String get collectionRenamePlaylist; - - /// Action to delete playlist - /// - /// In en, this message translates to: - /// **'Delete playlist'** - String get collectionDeletePlaylist; - - /// Snackbar after renaming playlist - /// - /// In en, this message translates to: - /// **'Playlist renamed'** - String get collectionPlaylistRenamed; - - /// Wishlist empty state title - /// - /// In en, this message translates to: - /// **'Wishlist is empty'** - String get collectionWishlistEmptyTitle; - - /// Wishlist empty state subtitle - /// - /// In en, this message translates to: - /// **'Tap + on tracks to save what you want to download later'** - String get collectionWishlistEmptySubtitle; - - /// Loved empty state title - /// - /// In en, this message translates to: - /// **'Loved folder is empty'** - String get collectionLovedEmptyTitle; - - /// Loved empty state subtitle - /// - /// In en, this message translates to: - /// **'Tap love on tracks to keep your favorites'** - String get collectionLovedEmptySubtitle; - - /// Favorite artists empty state title - /// - /// In en, this message translates to: - /// **'No favorite artists yet'** - String get collectionFavoriteArtistsEmptyTitle; - - /// Favorite artists empty state subtitle - /// - /// In en, this message translates to: - /// **'Tap the heart on an artist page to keep them here'** - String get collectionFavoriteArtistsEmptySubtitle; - - /// Playlist empty state title - /// - /// In en, this message translates to: - /// **'Playlist is empty'** - String get collectionPlaylistEmptyTitle; - - /// Playlist empty state subtitle - /// - /// In en, this message translates to: - /// **'Long-press + on any track to add it here'** - String get collectionPlaylistEmptySubtitle; - - /// Tooltip for removing track from playlist - /// - /// In en, this message translates to: - /// **'Remove from playlist'** - String get collectionRemoveFromPlaylist; - - /// Tooltip for removing track from wishlist/loved folder - /// - /// In en, this message translates to: - /// **'Remove from folder'** - String get collectionRemoveFromFolder; - - /// Snackbar after adding track to loved folder - /// - /// In en, this message translates to: - /// **'\"{trackName}\" added to Loved'** - String collectionAddedToLoved(String trackName); - - /// Snackbar after removing track from loved folder - /// - /// In en, this message translates to: - /// **'\"{trackName}\" removed from Loved'** - String collectionRemovedFromLoved(String trackName); - - /// Snackbar after adding track to wishlist - /// - /// In en, this message translates to: - /// **'\"{trackName}\" added to Wishlist'** - String collectionAddedToWishlist(String trackName); - - /// Snackbar after removing track from wishlist - /// - /// In en, this message translates to: - /// **'\"{trackName}\" removed from Wishlist'** - String collectionRemovedFromWishlist(String trackName); - - /// Snackbar after adding artist to favorite artists - /// - /// In en, this message translates to: - /// **'\"{artistName}\" added to Favorite Artists'** - String collectionAddedToFavoriteArtists(String artistName); - - /// Snackbar after removing artist from favorite artists - /// - /// In en, this message translates to: - /// **'\"{artistName}\" removed from Favorite Artists'** - String collectionRemovedFromFavoriteArtists(String artistName); - - /// Bottom sheet action label - add track to loved folder - /// - /// In en, this message translates to: - /// **'Add to Loved'** - String get trackOptionAddToLoved; - - /// Bottom sheet action label - remove track from loved folder - /// - /// In en, this message translates to: - /// **'Remove from Loved'** - String get trackOptionRemoveFromLoved; - - /// Bottom sheet action label - add track to wishlist - /// - /// In en, this message translates to: - /// **'Add to Wishlist'** - String get trackOptionAddToWishlist; - - /// Bottom sheet action label - remove track from wishlist - /// - /// In en, this message translates to: - /// **'Remove from Wishlist'** - String get trackOptionRemoveFromWishlist; - - /// Action label - add artist to favorite artists - /// - /// In en, this message translates to: - /// **'Add to Favorite Artists'** - String get artistOptionAddToFavorites; - - /// Action label - remove artist from favorite artists - /// - /// In en, this message translates to: - /// **'Remove from Favorite Artists'** - String get artistOptionRemoveFromFavorites; - - /// Bottom sheet action to pick a custom cover image for a playlist - /// - /// In en, this message translates to: - /// **'Change cover image'** - String get collectionPlaylistChangeCover; - - /// Bottom sheet action to remove custom cover image from a playlist - /// - /// In en, this message translates to: - /// **'Remove cover image'** - String get collectionPlaylistRemoveCover; - - /// Share button text with count in selection mode - /// - /// In en, this message translates to: - /// **'Share {count} {count, plural, =1{track} other{tracks}}'** - String selectionShareCount(int count); - - /// Snackbar when no selected files exist on disk - /// - /// In en, this message translates to: - /// **'No shareable files found'** - String get selectionShareNoFiles; - - /// Convert button text with count in selection mode - /// - /// In en, this message translates to: - /// **'Convert {count} {count, plural, =1{track} other{tracks}}'** - String selectionConvertCount(int count); - - /// Snackbar when no selected tracks support conversion - /// - /// In en, this message translates to: - /// **'No convertible tracks selected'** - String get selectionConvertNoConvertible; - - /// Confirmation dialog title for batch conversion - /// - /// In en, this message translates to: - /// **'Batch Convert'** - String get selectionBatchConvertConfirmTitle; - - /// Confirmation dialog message for batch conversion - /// - /// In en, this message translates to: - /// **'Convert {count} {count, plural, =1{track} other{tracks}} to {format} at {bitrate}?\n\nOriginal files will be deleted after conversion.'** - String selectionBatchConvertConfirmMessage( - int count, - String format, - String bitrate, - ); - - /// Confirmation dialog message for lossless batch conversion - /// - /// In en, this message translates to: - /// **'Convert {count} {count, plural, =1{track} other{tracks}} to {format}? (Lossless — no quality loss)\n\nOriginal files will be deleted after conversion.'** - String selectionBatchConvertConfirmMessageLossless(int count, String format); - - /// Batch conversion confirmation when source files will be preserved - /// - /// In en, this message translates to: - /// **'Convert {count} {count, plural, =1{track} other{tracks}} to {format}?\n\nOriginal files will be kept and converted files will be added as separate library entries.'** - String selectionBatchConvertConfirmKeepOriginal(int count, String format); - - /// Snackbar after batch conversion completes - /// - /// In en, this message translates to: - /// **'Converted {success} of {total} tracks to {format}'** - String selectionBatchConvertSuccess(int success, int total, String format); - - /// Downloaded tracks count badge - /// - /// In en, this message translates to: - /// **'{count} downloaded'** - String downloadedAlbumDownloadedCount(int count); - - /// Subtitle when album artist is used for folder names - /// - /// In en, this message translates to: - /// **'Folder named after Album Artist tag'** - String get downloadUseAlbumArtistForFoldersAlbumSubtitle; - - /// Subtitle when track artist is used for folder names - /// - /// In en, this message translates to: - /// **'Folder named after Track Artist tag'** - String get downloadUseAlbumArtistForFoldersTrackSubtitle; - - /// Settings item title for lyrics provider order - /// - /// In en, this message translates to: - /// **'Lyrics Provider Priority'** - String get lyricsProvidersTitle; - - /// Description on the lyrics provider priority page - /// - /// In en, this message translates to: - /// **'Enable, disable and reorder lyrics sources. Providers are tried top-to-bottom until lyrics are found.'** - String get lyricsProvidersDescription; - - /// Info tip on lyrics provider priority page - /// - /// In en, this message translates to: - /// **'Extension lyrics providers run before built-in lyrics providers. At least one provider must remain enabled.'** - String get lyricsProvidersInfoText; - - /// Section header for enabled providers - /// - /// In en, this message translates to: - /// **'Enabled ({count})'** - String lyricsProvidersEnabledSection(int count); - - /// Section header for disabled providers - /// - /// In en, this message translates to: - /// **'Disabled ({count})'** - String lyricsProvidersDisabledSection(int count); - - /// Snackbar when user tries to disable the last enabled provider - /// - /// In en, this message translates to: - /// **'At least one provider must remain enabled'** - String get lyricsProvidersAtLeastOne; - - /// Snackbar after saving lyrics provider priority - /// - /// In en, this message translates to: - /// **'Lyrics provider priority saved'** - String get lyricsProvidersSaved; - - /// Body text of the discard-changes dialog on lyrics provider page - /// - /// In en, this message translates to: - /// **'You have unsaved changes that will be lost.'** - String get lyricsProvidersDiscardContent; - - /// Description for LRCLIB provider - /// - /// In en, this message translates to: - /// **'Open-source synced lyrics database'** - String get lyricsProviderLrclibDesc; - - /// Description for Netease provider - /// - /// In en, this message translates to: - /// **'NetEase Cloud Music (good for Asian songs)'** - String get lyricsProviderNeteaseDesc; - - /// Description for Musixmatch provider - /// - /// In en, this message translates to: - /// **'Largest lyrics database (multi-language)'** - String get lyricsProviderMusixmatchDesc; - - /// Description for Apple Music provider - /// - /// In en, this message translates to: - /// **'Word-by-word synced lyrics (via proxy)'** - String get lyricsProviderAppleMusicDesc; - - /// Description for QQ Music provider - /// - /// In en, this message translates to: - /// **'QQ Music (good for Chinese songs, via proxy)'** - String get lyricsProviderQqMusicDesc; - - /// Description for LyricsPlus provider - /// - /// In en, this message translates to: - /// **'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'** - String get lyricsProviderLyricsPlusDesc; - - /// Generic description for extension-based lyrics providers - /// - /// In en, this message translates to: - /// **'Extension provider'** - String get lyricsProviderExtensionDesc; - - /// Title of SAF migration dialog - /// - /// In en, this message translates to: - /// **'Storage Update Required'** - String get safMigrationTitle; - - /// First paragraph of SAF migration dialog - /// - /// In en, this message translates to: - /// **'SpotiFLAC now uses Android Storage Access Framework (SAF) for downloads. This fixes \"permission denied\" errors on Android 10+.'** - String get safMigrationMessage1; - - /// Second paragraph of SAF migration dialog - /// - /// In en, this message translates to: - /// **'Please select your download folder again to switch to the new storage system.'** - String get safMigrationMessage2; - - /// Snackbar after successfully migrating to SAF - /// - /// In en, this message translates to: - /// **'Download folder updated to SAF mode'** - String get safMigrationSuccess; - - /// Settings menu item - donate page - /// - /// In en, this message translates to: - /// **'Support Development'** - String get settingsDonate; - - /// Subtitle for donate menu item - /// - /// In en, this message translates to: - /// **'Buy the developer a coffee'** - String get settingsDonateSubtitle; - - /// Settings menu item - backup and restore page - /// - /// In en, this message translates to: - /// **'Backup & Restore'** - String get settingsBackup; - - /// Subtitle for backup and restore settings item - /// - /// In en, this message translates to: - /// **'Move your library, history and settings to a new device'** - String get settingsBackupSubtitle; - - /// App bar title for the backup and restore page - /// - /// In en, this message translates to: - /// **'Backup & Restore'** - String get backupTitle; - - /// Section title for the export/backup card - /// - /// In en, this message translates to: - /// **'Create backup'** - String get backupExportSectionTitle; - - /// Description of what a backup contains - /// - /// In en, this message translates to: - /// **'Save your settings, download history, liked tracks, wishlist, favorite artists and playlists into a single file you can keep or move to another phone.'** - String get backupExportSectionDescription; - - /// Button to create and share a backup file - /// - /// In en, this message translates to: - /// **'Create backup file'** - String get backupExportButton; - - /// Section title for the import/restore card - /// - /// In en, this message translates to: - /// **'Restore backup'** - String get backupImportSectionTitle; - - /// Description for the restore action - /// - /// In en, this message translates to: - /// **'Pick a backup file to restore your data. This replaces the current settings, history and library on this device.'** - String get backupImportSectionDescription; - - /// Button to pick a backup file to restore - /// - /// In en, this message translates to: - /// **'Choose backup file'** - String get backupImportButton; - - /// Snackbar after a backup file is created - /// - /// In en, this message translates to: - /// **'Backup created'** - String get backupCreated; - - /// Snackbar when backup creation fails - /// - /// In en, this message translates to: - /// **'Failed to create backup'** - String get backupCreateFailed; - - /// Confirmation dialog title before restoring a backup - /// - /// In en, this message translates to: - /// **'Restore this backup?'** - String get backupRestoreConfirmTitle; - - /// Confirmation dialog message before restoring a backup - /// - /// In en, this message translates to: - /// **'This will replace your current settings, download history, liked tracks, wishlist and playlists with the contents of the backup. This cannot be undone.'** - String get backupRestoreConfirmMessage; - - /// Confirm button to proceed with restore - /// - /// In en, this message translates to: - /// **'Restore'** - String get backupRestoreConfirmButton; - - /// Snackbar after a successful restore - /// - /// In en, this message translates to: - /// **'Backup restored successfully'** - String get backupRestored; - - /// Snackbar when restore fails - /// - /// In en, this message translates to: - /// **'Failed to restore backup'** - String get backupRestoreFailed; - - /// Snackbar when the chosen file is not a valid backup - /// - /// In en, this message translates to: - /// **'This file is not a valid SpotiFLAC backup'** - String get backupInvalidFile; - - /// Hint shown after restoring that an app restart is recommended - /// - /// In en, this message translates to: - /// **'Restart the app to make sure every change is applied.'** - String get backupRestoreRestartHint; - - /// Header above the list summarizing what the backup contains - /// - /// In en, this message translates to: - /// **'Backup contents'** - String get backupContentsTitle; - - /// Backup contents row label for settings - /// - /// In en, this message translates to: - /// **'App settings'** - String get backupContentsSettings; - - /// Backup contents row for history count - /// - /// In en, this message translates to: - /// **'{count} history {count, plural, =1{item} other{items}}'** - String backupContentsHistory(int count); - - /// Backup contents row for liked tracks count - /// - /// In en, this message translates to: - /// **'{count} liked {count, plural, =1{track} other{tracks}}'** - String backupContentsLiked(int count); - - /// Backup contents row for wishlist tracks count - /// - /// In en, this message translates to: - /// **'{count} wishlist {count, plural, =1{track} other{tracks}}'** - String backupContentsWishlist(int count); - - /// Backup contents row for playlist count - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 playlist} other{{count} playlists}}'** - String backupContentsPlaylists(int count); - - /// Backup contents row for favorite artists count - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 favorite artist} other{{count} favorite artists}}'** - String backupContentsArtists(int count); - - /// Backup contents row for installed extensions count - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 extension} other{{count} extensions}}'** - String backupContentsExtensions(int count); - - /// Toggle to include secret extension settings (tokens, API keys) in the backup - /// - /// In en, this message translates to: - /// **'Include extension credentials'** - String get backupIncludeSecrets; - - /// Explanation for the include-credentials toggle - /// - /// In en, this message translates to: - /// **'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.'** - String get backupIncludeSecretsDescription; - - /// Snackbar/hint when some extensions failed to reinstall during restore - /// - /// In en, this message translates to: - /// **'{count} {count, plural, =1{extension} other{extensions}} could not be reinstalled. Install them manually from the repo.'** - String backupExtensionsRestoreFailed(int count); - - /// Tooltip for the Love All button on album/playlist screens - /// - /// In en, this message translates to: - /// **'Love All'** - String get tooltipLoveAll; - - /// Tooltip for the Add to Playlist button - /// - /// In en, this message translates to: - /// **'Add to Playlist'** - String get tooltipAddToPlaylist; - - /// Snackbar after removing multiple tracks from Loved folder - /// - /// In en, this message translates to: - /// **'Removed {count} tracks from Loved'** - String snackbarRemovedTracksFromLoved(int count); - - /// Snackbar after adding multiple tracks to Loved folder - /// - /// In en, this message translates to: - /// **'Added {count} tracks to Loved'** - String snackbarAddedTracksToLoved(int count); - - /// Dialog title for bulk download confirmation - /// - /// In en, this message translates to: - /// **'Download All'** - String get dialogDownloadAllTitle; - - /// Body of the Download All confirmation dialog - /// - /// In en, this message translates to: - /// **'Download {count} tracks?'** - String dialogDownloadAllMessage(int count); - - /// Checkbox label in import dialog to skip already-downloaded songs - /// - /// In en, this message translates to: - /// **'Skip already downloaded songs'** - String get homeSkipAlreadyDownloaded; - - /// Context menu item to navigate to the album page - /// - /// In en, this message translates to: - /// **'Go to Album'** - String get homeGoToAlbum; - - /// Snackbar when album info cannot be loaded - /// - /// In en, this message translates to: - /// **'Album info not available'** - String get homeAlbumInfoUnavailable; - - /// Snackbar while loading a CUE sheet file - /// - /// In en, this message translates to: - /// **'Loading CUE sheet...'** - String get snackbarLoadingCueSheet; - - /// Snackbar after successfully saving track metadata - /// - /// In en, this message translates to: - /// **'Metadata saved successfully'** - String get snackbarMetadataSaved; - - /// Snackbar when lyrics embedding fails - /// - /// In en, this message translates to: - /// **'Failed to embed lyrics'** - String get snackbarFailedToEmbedLyrics; - - /// Snackbar when writing metadata back to file fails - /// - /// In en, this message translates to: - /// **'Failed to write back to storage'** - String get snackbarFailedToWriteStorage; - - /// Generic error snackbar with error detail - /// - /// In en, this message translates to: - /// **'Error: {error}'** - String snackbarError(String error); - - /// Snackbar when an extension button has no action configured - /// - /// In en, this message translates to: - /// **'No action defined for this button'** - String get snackbarNoActionDefined; - - /// Empty state message when an album has no tracks - /// - /// In en, this message translates to: - /// **'No tracks found for this album'** - String get noTracksFoundForAlbum; - - /// Subtitle shown in the download location picker sheet - /// - /// In en, this message translates to: - /// **'Choose where to save your downloaded tracks'** - String get downloadLocationSubtitle; - - /// Storage mode option - app-managed folder - /// - /// In en, this message translates to: - /// **'App Folder (Recommended)'** - String get storageModeAppFolder; - - /// Subtitle for app folder storage mode - /// - /// In en, this message translates to: - /// **'Saves to Music/SpotiFLAC by default'** - String get storageModeAppFolderSubtitle; - - /// Storage mode option - Storage Access Framework - /// - /// In en, this message translates to: - /// **'Custom Folder (SAF)'** - String get storageModeSaf; - - /// Subtitle for SAF storage mode - /// - /// In en, this message translates to: - /// **'Pick any folder, including SD card'** - String get storageModeSafSubtitle; - - /// Title of the warning banner shown in Files settings when the saved SAF folder grant is no longer valid - /// - /// In en, this message translates to: - /// **'Download folder access lost'** - String get downloadFolderAccessLostTitle; - - /// Subtitle of the warning banner shown when the saved SAF folder grant is no longer valid - /// - /// In en, this message translates to: - /// **'Downloads will fail until you re-select the folder'** - String get downloadFolderAccessLostSubtitle; - - /// Button that reopens the folder picker to restore download folder access - /// - /// In en, this message translates to: - /// **'Re-select folder'** - String get downloadFolderReselect; - - /// Error shown on downloads that failed because the persisted Android SAF folder grant is no longer valid - /// - /// In en, this message translates to: - /// **'SAF permission invalid or revoked. Please reconfigure download location in Settings.'** - String get downloadErrorSafPermissionLost; - - /// Error shown on downloads that failed because the iOS download folder bookmark could not be opened - /// - /// In en, this message translates to: - /// **'Download folder access lost. Please re-select your download folder in Settings.'** - String get downloadErrorFolderAccessLost; - - /// Description shown in filename format editor - /// - /// In en, this message translates to: - /// **'Use {artist}, {title}, {album}, {track}, {year}, {date}, {disc} as placeholders.'** - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ); - - /// Label above filename tag chips - /// - /// In en, this message translates to: - /// **'Tap to insert tag:'** - String get downloadFilenameInsertTag; - - /// Subtitle when separate singles folder is on - /// - /// In en, this message translates to: - /// **'Singles and EPs saved in a separate folder'** - String get downloadSeparateSinglesEnabled; - - /// Subtitle when separate singles folder is off - /// - /// In en, this message translates to: - /// **'Singles and albums saved in the same folder'** - String get downloadSeparateSinglesDisabled; - - /// Setting title for artist folder filter options - /// - /// In en, this message translates to: - /// **'Artist Name Filters'** - String get downloadArtistNameFilters; - - /// Setting to create a subfolder per playlist source - /// - /// In en, this message translates to: - /// **'Playlist Source Folder'** - String get downloadCreatePlaylistSourceFolder; - - /// Subtitle when playlist folder is enabled - /// - /// In en, this message translates to: - /// **'A subfolder is created for each playlist'** - String get downloadCreatePlaylistSourceFolderEnabled; - - /// Subtitle when playlist folder is disabled - /// - /// In en, this message translates to: - /// **'All tracks saved directly to download folder'** - String get downloadCreatePlaylistSourceFolderDisabled; - - /// Subtitle when folder organization is already set to playlist - /// - /// In en, this message translates to: - /// **'Handled by folder organization setting'** - String get downloadCreatePlaylistSourceFolderRedundant; - - /// Setting for SongLink region used during fallback resolution - /// - /// In en, this message translates to: - /// **'SongLink Region'** - String get downloadSongLinkRegion; - - /// Setting for legacy TLS/network handling - /// - /// In en, this message translates to: - /// **'Network Compatibility Mode'** - String get downloadNetworkCompatibilityMode; - - /// Subtitle when network compatibility mode is on - /// - /// In en, this message translates to: - /// **'Allowing legacy HTTP endpoints; TLS verification remains enabled'** - String get downloadNetworkCompatibilityModeEnabled; - - /// Subtitle when network compatibility mode is off - /// - /// In en, this message translates to: - /// **'Using standard network settings'** - String get downloadNetworkCompatibilityModeDisabled; - - /// Setting title for allowing requests to private/local network targets - /// - /// In en, this message translates to: - /// **'Allow Local Network Access'** - String get downloadAllowLocalNetwork; - - /// Subtitle when allow local network access is on - /// - /// In en, this message translates to: - /// **'Requests to local/private addresses are allowed (for local proxy or custom DNS)'** - String get downloadAllowLocalNetworkEnabled; - - /// Subtitle when allow local network access is off - /// - /// In en, this message translates to: - /// **'Local/private addresses are blocked for security'** - String get downloadAllowLocalNetworkDisabled; - - /// Subtitle when quality picker is disabled due to extension service - /// - /// In en, this message translates to: - /// **'Select a provider with quality options to enable this option'** - String get downloadSelectServiceToEnable; - - /// Subtitle when lyrics embedding is blocked by metadata toggle - /// - /// In en, this message translates to: - /// **'Enable metadata embedding first'** - String get downloadEmbedLyricsDisabled; - - /// Setting to include translated lyrics from Netease - /// - /// In en, this message translates to: - /// **'Netease: Include Translation'** - String get downloadNeteaseIncludeTranslation; - - /// Subtitle when Netease translation is on - /// - /// In en, this message translates to: - /// **'Chinese translation lines included'** - String get downloadNeteaseIncludeTranslationEnabled; - - /// Subtitle when Netease translation is off - /// - /// In en, this message translates to: - /// **'Original lyrics only'** - String get downloadNeteaseIncludeTranslationDisabled; - - /// Setting to include romanized lyrics from Netease - /// - /// In en, this message translates to: - /// **'Netease: Include Romanization'** - String get downloadNeteaseIncludeRomanization; - - /// Subtitle when Netease romanization is on - /// - /// In en, this message translates to: - /// **'Romanization lines included'** - String get downloadNeteaseIncludeRomanizationEnabled; - - /// Subtitle when Netease romanization is off - /// - /// In en, this message translates to: - /// **'No romanization'** - String get downloadNeteaseIncludeRomanizationDisabled; - - /// Setting for word-by-word multi-person lyrics from Apple Music and QQ Music - /// - /// In en, this message translates to: - /// **'Apple / QQ: Multi-Person Lyrics'** - String get downloadAppleQqMultiPerson; - - /// Subtitle when multi-person lyrics is on - /// - /// In en, this message translates to: - /// **'Speaker labels included for duets and group tracks'** - String get downloadAppleQqMultiPersonEnabled; - - /// Subtitle when multi-person lyrics is off - /// - /// In en, this message translates to: - /// **'Standard lyrics without speaker labels'** - String get downloadAppleQqMultiPersonDisabled; - - /// Setting for preserving Apple Music word-by-word eLRC timestamps - /// - /// In en, this message translates to: - /// **'Apple Music eLRC Word Sync'** - String get downloadAppleElrcWordSync; - - /// Subtitle when Apple Music eLRC word sync is enabled - /// - /// In en, this message translates to: - /// **'Raw word-by-word timestamps preserved'** - String get downloadAppleElrcWordSyncEnabled; - - /// Subtitle when Apple Music eLRC word sync is disabled - /// - /// In en, this message translates to: - /// **'Safer line-by-line Apple Music lyrics'** - String get downloadAppleElrcWordSyncDisabled; - - /// Setting for Musixmatch lyrics translation language - /// - /// In en, this message translates to: - /// **'Musixmatch Language'** - String get downloadMusixmatchLanguage; - - /// Subtitle when no language is set - /// - /// In en, this message translates to: - /// **'Auto (original language)'** - String get downloadMusixmatchLanguageAuto; - - /// Setting to strip contributing artists from Album Artist folder name - /// - /// In en, this message translates to: - /// **'Filter Contributing Artists'** - String get downloadFilterContributing; - - /// Subtitle when contributing artist filter is on - /// - /// In en, this message translates to: - /// **'Contributing artists removed from Album Artist folder name'** - String get downloadFilterContributingEnabled; - - /// Subtitle when contributing artist filter is off - /// - /// In en, this message translates to: - /// **'Full Album Artist string used'** - String get downloadFilterContributingDisabled; - - /// Shown when no lyrics providers are active - /// - /// In en, this message translates to: - /// **'No providers enabled'** - String get downloadProvidersNoneEnabled; - - /// Label for Musixmatch language input field - /// - /// In en, this message translates to: - /// **'Language code'** - String get downloadMusixmatchLanguageCode; - - /// Placeholder for Musixmatch language input - /// - /// In en, this message translates to: - /// **'e.g. en, de, ja'** - String get downloadMusixmatchLanguageHint; - - /// Description in Musixmatch language picker - /// - /// In en, this message translates to: - /// **'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'** - String get downloadMusixmatchLanguageDesc; - - /// Button to clear Musixmatch language (use auto) - /// - /// In en, this message translates to: - /// **'Auto'** - String get downloadMusixmatchAuto; - - /// Subtitle for any-network option in picker - /// - /// In en, this message translates to: - /// **'Use WiFi or mobile data'** - String get downloadNetworkAnySubtitle; - - /// Subtitle for WiFi-only option in picker - /// - /// In en, this message translates to: - /// **'Downloads pause when on mobile data'** - String get downloadNetworkWifiOnlySubtitle; - - /// Description in SongLink region picker - /// - /// In en, this message translates to: - /// **'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'** - String get downloadSongLinkRegionDesc; - - /// Snackbar when the audio format is not supported for the requested operation - /// - /// In en, this message translates to: - /// **'Unsupported audio format'** - String get snackbarUnsupportedAudioFormat; - - /// Tooltip for refresh button on cache management page - /// - /// In en, this message translates to: - /// **'Refresh'** - String get cacheRefresh; - - /// Dialog message for bulk playlist download confirmation - /// - /// In en, this message translates to: - /// **'Download {trackCount} {trackCount, plural, =1{track} other{tracks}} from {playlistCount} {playlistCount, plural, =1{playlist} other{playlists}}?'** - String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount); - - /// Button label for bulk downloading selected playlists - /// - /// In en, this message translates to: - /// **'Download {count} {count, plural, =1{playlist} other{playlists}}'** - String bulkDownloadPlaylistsButton(int count); - - /// Button label when no playlists are selected for download - /// - /// In en, this message translates to: - /// **'Select playlists to download'** - String get bulkDownloadSelectPlaylists; - - /// Snackbar when selected playlists contain no tracks - /// - /// In en, this message translates to: - /// **'Selected playlists have no tracks'** - String get snackbarSelectedPlaylistsEmpty; - - /// Playlist count display - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 playlist} other{{count} playlists}}'** - String playlistsCount(int count); - - /// Section title for selective online metadata auto-fill in the edit metadata sheet - /// - /// In en, this message translates to: - /// **'Auto-fill from online'** - String get editMetadataAutoFill; - - /// Description for the auto-fill section - /// - /// In en, this message translates to: - /// **'Choose a metadata extension, select fields, then review its data before applying'** - String get editMetadataAutoFillDesc; - - /// Label for the metadata extension selector in online auto-fill - /// - /// In en, this message translates to: - /// **'Metadata source'** - String get editMetadataAutoFillSource; - - /// Automatic source option that follows configured metadata provider priority - /// - /// In en, this message translates to: - /// **'Automatic (provider priority)'** - String get editMetadataAutoFillSourceAutomatic; - - /// Button label for finding an online metadata candidate - /// - /// In en, this message translates to: - /// **'Find metadata'** - String get editMetadataAutoFillFind; - - /// Title for the online metadata preview - /// - /// In en, this message translates to: - /// **'Data from {source}'** - String editMetadataAutoFillPreview(String source); - - /// Preview value when the selected metadata source provides cover artwork - /// - /// In en, this message translates to: - /// **'Cover artwork available'** - String get editMetadataAutoFillCoverAvailable; - - /// Button label for applying the previewed metadata - /// - /// In en, this message translates to: - /// **'Apply selected data'** - String get editMetadataAutoFillApply; - - /// Snackbar confirming fields applied from a selected metadata source - /// - /// In en, this message translates to: - /// **'Filled {count} {count, plural, =1{field} other{fields}} from {source}'** - String editMetadataAutoFillDoneFromSource(int count, String source); - - /// Button label to fetch online metadata and fill selected fields - /// - /// In en, this message translates to: - /// **'Fetch & Fill'** - String get editMetadataAutoFillFetch; - - /// Snackbar shown while searching for online metadata - /// - /// In en, this message translates to: - /// **'Searching online...'** - String get editMetadataAutoFillSearching; - - /// Snackbar when online metadata search returns no results - /// - /// In en, this message translates to: - /// **'No matching metadata found online'** - String get editMetadataAutoFillNoResults; - - /// Snackbar confirming how many fields were auto-filled - /// - /// In en, this message translates to: - /// **'Filled {count} {count, plural, =1{field} other{fields}} from online metadata'** - String editMetadataAutoFillDone(int count); - - /// Snackbar when user taps Fetch without selecting any fields - /// - /// In en, this message translates to: - /// **'Select at least one field to auto-fill'** - String get editMetadataAutoFillNoneSelected; - - /// Chip label for title field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Title'** - String get editMetadataFieldTitle; - - /// Chip label for artist field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Artist'** - String get editMetadataFieldArtist; - - /// Chip label for album field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Album'** - String get editMetadataFieldAlbum; - - /// Chip label for album artist field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Album Artist'** - String get editMetadataFieldAlbumArtist; - - /// Chip label for date field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Date'** - String get editMetadataFieldDate; - - /// Chip label for track number field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Track #'** - String get editMetadataFieldTrackNum; - - /// Chip label for disc number field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Disc #'** - String get editMetadataFieldDiscNum; - - /// Chip label for genre field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Genre'** - String get editMetadataFieldGenre; - - /// Chip label for ISRC field in auto-fill selector - /// - /// In en, this message translates to: - /// **'ISRC'** - String get editMetadataFieldIsrc; - - /// Chip label for label field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Label'** - String get editMetadataFieldLabel; - - /// Chip label for copyright field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Copyright'** - String get editMetadataFieldCopyright; - - /// Chip label for cover art field in auto-fill selector - /// - /// In en, this message translates to: - /// **'Cover Art'** - String get editMetadataFieldCover; - - /// Button to select all fields for auto-fill - /// - /// In en, this message translates to: - /// **'All'** - String get editMetadataSelectAll; - - /// Button to select only fields that are currently empty - /// - /// In en, this message translates to: - /// **'Empty only'** - String get editMetadataSelectEmpty; - - /// Header for active downloads section with count - /// - /// In en, this message translates to: - /// **'Downloading ({count})'** - String queueDownloadingCount(int count); - - /// Shown while filter results are being computed - /// - /// In en, this message translates to: - /// **'Filtering...'** - String get queueFilteringIndicator; - - /// Track count label with plural support - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 track} other{{count} tracks}}'** - String queueTrackCount(int count); - - /// Album count label with plural support - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 album} other{{count} albums}}'** - String queueAlbumCount(int count); - - /// Empty state title when no album downloads exist - /// - /// In en, this message translates to: - /// **'No album downloads'** - String get queueEmptyAlbums; - - /// Empty state subtitle for album downloads - /// - /// In en, this message translates to: - /// **'Download multiple tracks from an album to see them here'** - String get queueEmptyAlbumsSubtitle; - - /// Empty state title when no single track downloads exist - /// - /// In en, this message translates to: - /// **'No single downloads'** - String get queueEmptySingles; - - /// Empty state subtitle for single track downloads - /// - /// In en, this message translates to: - /// **'Single track downloads will appear here'** - String get queueEmptySinglesSubtitle; - - /// Playlist count label with plural support - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 playlist} other{{count} playlists}}'** - String queuePlaylistCount(int count); - - /// Empty state subtitle for the playlists library view - /// - /// In en, this message translates to: - /// **'Create a playlist to organize your tracks'** - String get queueEmptyPlaylistsSubtitle; - - /// Setting title - which library view opens when switching to the Library tab - /// - /// In en, this message translates to: - /// **'Default view'** - String get libraryDefaultView; - - /// Default view option - keep the last used library view - /// - /// In en, this message translates to: - /// **'Last used'** - String get libraryDefaultViewLastUsed; - - /// Empty state title when download history is empty - /// - /// In en, this message translates to: - /// **'No download history'** - String get queueEmptyHistory; - - /// Empty state subtitle for download history - /// - /// In en, this message translates to: - /// **'Downloaded tracks will appear here'** - String get queueEmptyHistorySubtitle; - - /// Shown when all playlists are selected in selection mode - /// - /// In en, this message translates to: - /// **'All playlists selected'** - String get selectionAllPlaylistsSelected; - - /// Hint shown in playlist selection mode - /// - /// In en, this message translates to: - /// **'Tap playlists to select'** - String get selectionTapPlaylistsToSelect; - - /// Hint shown when no playlists are selected for deletion - /// - /// In en, this message translates to: - /// **'Select playlists to delete'** - String get selectionSelectPlaylistsToDelete; - - /// Title for audio analysis section - /// - /// In en, this message translates to: - /// **'Audio Quality Analysis'** - String get audioAnalysisTitle; - - /// Description for audio analysis tap-to-analyze prompt - /// - /// In en, this message translates to: - /// **'Verify lossless quality with spectrum analysis'** - String get audioAnalysisDescription; - - /// Loading text while analyzing audio - /// - /// In en, this message translates to: - /// **'Analyzing audio...'** - String get audioAnalysisAnalyzing; - - /// Sample rate metric label - /// - /// In en, this message translates to: - /// **'Sample Rate'** - String get audioAnalysisSampleRate; - - /// Audio codec metric label - /// - /// In en, this message translates to: - /// **'Codec'** - String get audioAnalysisCodec; - - /// Audio container metric label - /// - /// In en, this message translates to: - /// **'Container'** - String get audioAnalysisContainer; - - /// Decoded sample format metric label - /// - /// In en, this message translates to: - /// **'Decoded Format'** - String get audioAnalysisDecodedFormat; - - /// Bit depth metric label - /// - /// In en, this message translates to: - /// **'Bit Depth'** - String get audioAnalysisBitDepth; - - /// Channels metric label - /// - /// In en, this message translates to: - /// **'Channels'** - String get audioAnalysisChannels; - - /// Duration metric label - /// - /// In en, this message translates to: - /// **'Duration'** - String get audioAnalysisDuration; - - /// Nyquist frequency metric label - /// - /// In en, this message translates to: - /// **'Nyquist'** - String get audioAnalysisNyquist; - - /// File size metric label - /// - /// In en, this message translates to: - /// **'Size'** - String get audioAnalysisFileSize; - - /// Dynamic range metric label - /// - /// In en, this message translates to: - /// **'Dynamic Range'** - String get audioAnalysisDynamicRange; - - /// Peak amplitude metric label - /// - /// In en, this message translates to: - /// **'Peak'** - String get audioAnalysisPeak; - - /// RMS level metric label - /// - /// In en, this message translates to: - /// **'RMS'** - String get audioAnalysisRms; - - /// Integrated loudness metric label - /// - /// In en, this message translates to: - /// **'LUFS'** - String get audioAnalysisLufs; - - /// True peak metric label - /// - /// In en, this message translates to: - /// **'True Peak'** - String get audioAnalysisTruePeak; - - /// Clipping metric label - /// - /// In en, this message translates to: - /// **'Clipping'** - String get audioAnalysisClipping; - - /// Displayed when no clipped samples were detected - /// - /// In en, this message translates to: - /// **'No clipping'** - String get audioAnalysisNoClipping; - - /// Estimated spectral cutoff metric label - /// - /// In en, this message translates to: - /// **'Spectral Cutoff'** - String get audioAnalysisSpectralCutoff; - - /// Displayed when no reliable broadband spectral cutoff can be detected - /// - /// In en, this message translates to: - /// **'Not detected'** - String get audioAnalysisCutoffNotDetected; - - /// Per-channel audio analysis section label - /// - /// In en, this message translates to: - /// **'Per-channel Stats'** - String get audioAnalysisChannelStats; - - /// Total samples metric label - /// - /// In en, this message translates to: - /// **'Samples'** - String get audioAnalysisSamples; - - /// Tooltip/label for the button that re-runs the audio analysis, discarding cached results - /// - /// In en, this message translates to: - /// **'Re-analyze'** - String get audioAnalysisRescan; - - /// Loading text while audio is being re-analyzed after an explicit refresh - /// - /// In en, this message translates to: - /// **'Re-analyzing audio...'** - String get audioAnalysisRescanning; - - /// Extensions page - label for home feed provider selector - /// - /// In en, this message translates to: - /// **'Home Feed Provider'** - String get extensionsHomeFeedProvider; - - /// Extensions page - description for home feed provider picker - /// - /// In en, this message translates to: - /// **'Choose which extension provides the home feed on the main screen'** - String get extensionsHomeFeedDescription; - - /// Label for auto-selected search provider - /// - /// In en, this message translates to: - /// **'Auto'** - String get extensionsHomeFeedAuto; - - /// Extensions page - subtitle for auto home feed option - /// - /// In en, this message translates to: - /// **'Automatically select the best available'** - String get extensionsHomeFeedAutoSubtitle; - - /// Extensions page - home feed provider option: off - /// - /// In en, this message translates to: - /// **'Off'** - String get extensionsHomeFeedOff; - - /// Extensions page - subtitle for off home feed option - /// - /// In en, this message translates to: - /// **'Do not show the home feed on the main screen'** - String get extensionsHomeFeedOffSubtitle; - - /// Extensions page - subtitle for a specific extension home feed option - /// - /// In en, this message translates to: - /// **'Use {extensionName} home feed'** - String extensionsHomeFeedUse(String extensionName); - - /// Extensions page - shown when no installed extension has home feed - /// - /// In en, this message translates to: - /// **'No extensions with home feed'** - String get extensionsNoHomeFeedExtensions; - - /// Dialog title when confirming cancellation of an active download - /// - /// In en, this message translates to: - /// **'Cancel download?'** - String get cancelDownloadTitle; - - /// Dialog body when confirming cancellation of an active download - /// - /// In en, this message translates to: - /// **'This will cancel the active download for \"{trackName}\".'** - String cancelDownloadContent(String trackName); - - /// Dialog button - keep the active download (do not cancel) - /// - /// In en, this message translates to: - /// **'Keep'** - String get cancelDownloadKeep; - - /// Dialog title when opening a cancelled queue item - /// - /// In en, this message translates to: - /// **'Download cancelled'** - String get queueCancelledTitle; - - /// Dialog body when opening a cancelled queue item - /// - /// In en, this message translates to: - /// **'This download was cancelled. Retry it or remove it from the queue.'** - String get queueCancelledMessage; - - /// Snackbar error when FFmpeg fails to write metadata - /// - /// In en, this message translates to: - /// **'Failed to save metadata via FFmpeg'** - String get metadataSaveFailedFfmpeg; - - /// Snackbar error when writing metadata file back to storage fails - /// - /// In en, this message translates to: - /// **'Failed to write metadata back to storage'** - String get metadataSaveFailedStorage; - - /// Snackbar shown when folder picker fails to open - /// - /// In en, this message translates to: - /// **'Failed to open folder picker: {error}'** - String snackbarFolderPickerFailed(String error); - - /// Notification title while downloading a track - /// - /// In en, this message translates to: - /// **'Downloading {trackName}'** - String notifDownloadingTrack(String trackName); - - /// Notification title while finalizing (embedding metadata) a track - /// - /// In en, this message translates to: - /// **'Finalizing {trackName}'** - String notifFinalizingTrack(String trackName); - - /// Notification body while embedding metadata into a downloaded track - /// - /// In en, this message translates to: - /// **'Embedding metadata...'** - String get notifEmbeddingMetadata; - - /// Notification title when track is already in library, with count - /// - /// In en, this message translates to: - /// **'Already in Library ({completed}/{total})'** - String notifAlreadyInLibraryCount(int completed, int total); - - /// Notification title when track is already in library - /// - /// In en, this message translates to: - /// **'Already in Library'** - String get notifAlreadyInLibrary; - - /// Notification title when download is complete, with count - /// - /// In en, this message translates to: - /// **'Download Complete ({completed}/{total})'** - String notifDownloadCompleteCount(int completed, int total); - - /// Notification title when a single download is complete - /// - /// In en, this message translates to: - /// **'Download Complete'** - String get notifDownloadComplete; - - /// Notification title when queue finishes with some failures - /// - /// In en, this message translates to: - /// **'Downloads Finished ({completed} done, {failed} failed)'** - String notifDownloadsFinished(int completed, int failed); - - /// Notification title shown when a download needs the user to complete a verification challenge but the app is in the background - /// - /// In en, this message translates to: - /// **'Verification required'** - String get notifVerificationRequiredTitle; - - /// Notification body prompting the user to return to the app to solve a verification challenge - /// - /// In en, this message translates to: - /// **'Open the app to complete verification and resume downloads'** - String get notifVerificationRequiredBody; - - /// Notification title when all downloads finish successfully - /// - /// In en, this message translates to: - /// **'All Downloads Complete'** - String get notifAllDownloadsComplete; - - /// Notification body for queue complete - how many tracks were downloaded - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 track downloaded successfully} other{{count} tracks downloaded successfully}}'** - String notifTracksDownloadedSuccess(int count); - - /// Notification body when queue finishes with failures - /// - /// In en, this message translates to: - /// **'{completed, plural, =1{1 track downloaded} other{{completed} tracks downloaded}}, {failed, plural, =1{1 failed} other{{failed} failed}}'** - String notifDownloadsFinishedBody(int completed, int failed); - - /// Notification title when downloads are canceled by the user - /// - /// In en, this message translates to: - /// **'Downloads canceled'** - String get notifDownloadsCanceledTitle; - - /// Notification body when downloads are canceled by the user - /// - /// In en, this message translates to: - /// **'{count, plural, =1{1 download canceled by user} other{{count} downloads canceled by user}}'** - String notifDownloadsCanceledBody(int count); - - /// Notification title while scanning local library - /// - /// In en, this message translates to: - /// **'Scanning local library'** - String get notifScanningLibrary; - - /// Notification body for library scan progress when total is known - /// - /// In en, this message translates to: - /// **'{scanned}/{total} files • {percentage}%'** - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ); - - /// Notification body for library scan progress when total is unknown - /// - /// In en, this message translates to: - /// **'{scanned} files scanned • {percentage}%'** - String notifLibraryScanProgressNoTotal(int scanned, int percentage); - - /// Notification title when library scan finishes - /// - /// In en, this message translates to: - /// **'Library scan complete'** - String get notifLibraryScanComplete; - - /// Notification body for library scan complete - number of indexed tracks - /// - /// In en, this message translates to: - /// **'{count} tracks indexed'** - String notifLibraryScanCompleteBody(int count); - - /// Library scan complete suffix - excluded track count - /// - /// In en, this message translates to: - /// **'{count} excluded'** - String notifLibraryScanExcluded(int count); - - /// Library scan complete suffix - error count - /// - /// In en, this message translates to: - /// **'{count} errors'** - String notifLibraryScanErrors(int count); - - /// Notification title when library scan fails - /// - /// In en, this message translates to: - /// **'Library scan failed'** - String get notifLibraryScanFailed; - - /// Notification title when library scan is cancelled by the user - /// - /// In en, this message translates to: - /// **'Library scan cancelled'** - String get notifLibraryScanCancelled; - - /// Notification body when library scan is cancelled - /// - /// In en, this message translates to: - /// **'Scan stopped before completion.'** - String get notifLibraryScanStopped; - - /// Notification title while downloading an app update - /// - /// In en, this message translates to: - /// **'Downloading SpotiFLAC Mobile v{version}'** - String notifDownloadingUpdate(String version); - - /// Notification body showing update download progress - /// - /// In en, this message translates to: - /// **'{received} / {total} MB • {percentage}%'** - String notifUpdateProgress(String received, String total, int percentage); - - /// Notification title when app update download is complete - /// - /// In en, this message translates to: - /// **'Update Ready'** - String get notifUpdateReady; - - /// Notification body when app update is ready to install - /// - /// In en, this message translates to: - /// **'SpotiFLAC Mobile v{version} downloaded. Tap to install.'** - String notifUpdateReadyBody(String version); - - /// Notification title when app update download fails - /// - /// In en, this message translates to: - /// **'Update Failed'** - String get notifUpdateFailed; - - /// Notification body when app update download fails - /// - /// In en, this message translates to: - /// **'Could not download update. Try again later.'** - String get notifUpdateFailedBody; - - /// Search filter label - tracks - /// - /// In en, this message translates to: - /// **'Tracks'** - String get searchTracks; - - /// Default placeholder for the main search field on Home - /// - /// In en, this message translates to: - /// **'Paste supported URL or search...'** - String get homeSearchHintDefault; - - /// Placeholder for the main search field when a provider is selected - /// - /// In en, this message translates to: - /// **'Search with {providerName}...'** - String homeSearchHintProvider(String providerName); - - /// Tooltip for importing a CSV or M3U playlist file into Home search - /// - /// In en, this message translates to: - /// **'Import playlist (CSV, M3U)'** - String get homeImportCsvTooltip; - - /// Tooltip for the Home search provider picker - /// - /// In en, this message translates to: - /// **'Change search provider'** - String get homeChangeSearchProviderTooltip; - - /// Generic action - paste from clipboard - /// - /// In en, this message translates to: - /// **'Paste'** - String get actionPaste; - - /// Placeholder shown in the tutorial search demo - /// - /// In en, this message translates to: - /// **'Paste or search...'** - String get tutorialSearchHint; - - /// Accessibility label for completed download state in tutorial demo - /// - /// In en, this message translates to: - /// **'Download completed'** - String get tutorialDownloadCompletedSemantics; - - /// Accessibility label for active download state in tutorial demo - /// - /// In en, this message translates to: - /// **'Download in progress'** - String get tutorialDownloadInProgressSemantics; - - /// Accessibility label for idle download button in tutorial demo - /// - /// In en, this message translates to: - /// **'Start download'** - String get tutorialStartDownloadSemantics; - - /// Settings toggle title for writing metadata into downloaded files - /// - /// In en, this message translates to: - /// **'Embed Metadata'** - String get optionsEmbedMetadata; - - /// Subtitle when metadata embedding is enabled - /// - /// In en, this message translates to: - /// **'Write metadata, cover art, and embedded lyrics to files'** - String get optionsEmbedMetadataSubtitleOn; - - /// Subtitle when metadata embedding is disabled - /// - /// In en, this message translates to: - /// **'Disabled (advanced): skip all metadata embedding'** - String get optionsEmbedMetadataSubtitleOff; - - /// Message shown when a track file has no embedded cover art - /// - /// In en, this message translates to: - /// **'No embedded album art found'** - String get trackCoverNoEmbeddedArt; - - /// Button label for replacing selected cover art - /// - /// In en, this message translates to: - /// **'Replace Cover'** - String get trackCoverReplace; - - /// Button label for selecting cover art - /// - /// In en, this message translates to: - /// **'Pick Cover'** - String get trackCoverPick; - - /// Tooltip for clearing the newly selected cover art - /// - /// In en, this message translates to: - /// **'Clear selected cover'** - String get trackCoverClearSelected; - - /// Label for the currently embedded cover preview - /// - /// In en, this message translates to: - /// **'Current cover'** - String get trackCoverCurrent; - - /// Label for the newly selected cover preview - /// - /// In en, this message translates to: - /// **'Selected cover'** - String get trackCoverSelected; - - /// Notice shown when a new cover has been selected but not saved yet - /// - /// In en, this message translates to: - /// **'The selected cover will replace the current embedded cover when you tap Save.'** - String get trackCoverReplaceNotice; - - /// Label for selecting the embedded cover art resolution - /// - /// In en, this message translates to: - /// **'Cover resolution'** - String get trackCoverResolution; - - /// Explanation below the embedded cover art resolution selector - /// - /// In en, this message translates to: - /// **'Sets the longest edge when saved. Enlarging does not add image detail.'** - String get trackCoverResolutionHint; - - /// Error shown when resizing cover art before saving metadata fails - /// - /// In en, this message translates to: - /// **'The cover image could not be resized. Please try another size or image.'** - String get trackCoverResizeFailed; - - /// Generic action - stop - /// - /// In en, this message translates to: - /// **'Stop'** - String get actionStop; - - /// Accessibility label for a queue item that is finalizing - /// - /// In en, this message translates to: - /// **'Finalizing download'** - String get queueFinalizingDownload; - - /// Tooltip on a queued download row; moves the item to the front of the queue so the next free slot downloads it - /// - /// In en, this message translates to: - /// **'Download next'** - String get queueDownloadNext; - - /// Queue item menu action - move the queued item one position earlier - /// - /// In en, this message translates to: - /// **'Move up'** - String get queueMoveUp; - - /// Queue item menu action - move the queued item one position later - /// - /// In en, this message translates to: - /// **'Move down'** - String get queueMoveDown; - - /// Tag editor button that fills genre and album artist from MusicBrainz by ISRC - /// - /// In en, this message translates to: - /// **'Fetch from MusicBrainz'** - String get editMetadataMusicBrainzButton; - - /// Snackbar after MusicBrainz suggestions were applied to the tag editor fields - /// - /// In en, this message translates to: - /// **'Updated from MusicBrainz'** - String get editMetadataMusicBrainzFilled; - - /// Snackbar when the MusicBrainz lookup returns no data - /// - /// In en, this message translates to: - /// **'Nothing found on MusicBrainz'** - String get editMetadataMusicBrainzNothing; - - /// Snackbar when the MusicBrainz lookup is tapped without an ISRC - /// - /// In en, this message translates to: - /// **'Requires an ISRC tag'** - String get editMetadataMusicBrainzNeedsIsrc; - - /// Repeat toggle tooltip when repeat is disabled - /// - /// In en, this message translates to: - /// **'Repeat off'** - String get nowPlayingRepeatOff; - - /// Repeat toggle tooltip when the whole queue repeats - /// - /// In en, this message translates to: - /// **'Repeat all'** - String get nowPlayingRepeatAll; - - /// Repeat toggle tooltip when the current track repeats - /// - /// In en, this message translates to: - /// **'Repeat one'** - String get nowPlayingRepeatOne; - - /// Snackbar shown when connectivity returns and network-failed downloads can be retried - /// - /// In en, this message translates to: - /// **'{count} downloads failed while offline'** - String queueNetworkFailedOffline(int count); - - /// Accessibility label when a downloaded file is missing from disk - /// - /// In en, this message translates to: - /// **'Downloaded file missing'** - String get queueDownloadedFileMissing; - - /// Accessibility label while the app checks whether a just-completed download has appeared at its final path yet. Not about authentication or a download session. - /// - /// In en, this message translates to: - /// **'Checking downloaded file...'** - String get queueCheckingDownloadedFile; - - /// Accessibility label for completed download state in queue - /// - /// In en, this message translates to: - /// **'Download completed'** - String get queueDownloadCompleted; - - /// Title shown on a failed queue item when the download service rate limits requests - /// - /// In en, this message translates to: - /// **'Service rate limited'** - String get queueRateLimitTitle; - - /// Explanation shown on a failed queue item when the download service rate limits requests - /// - /// In en, this message translates to: - /// **'This track may still be available. Wait a few minutes, reduce parallel downloads, then retry.'** - String get queueRateLimitMessage; - - /// Accessibility label for picking an accent color - /// - /// In en, this message translates to: - /// **'Select accent color {hex}'** - String appearanceSelectAccentColor(String hex); - - /// Tooltip when auto-scroll is enabled on the log screen - /// - /// In en, this message translates to: - /// **'Auto-scroll ON'** - String get logAutoScrollOn; - - /// Tooltip when auto-scroll is disabled on the log screen - /// - /// In en, this message translates to: - /// **'Auto-scroll OFF'** - String get logAutoScrollOff; - - /// Tooltip for copying logs - /// - /// In en, this message translates to: - /// **'Copy logs'** - String get logCopyLogs; - - /// Tooltip for clearing the log search field - /// - /// In en, this message translates to: - /// **'Clear search'** - String get logClearSearch; - - /// Diagnostic badge label when ISP blocking is detected - /// - /// In en, this message translates to: - /// **'ISP BLOCKING DETECTED'** - String get logIssueIspBlockingLabel; - - /// Diagnostic badge description for ISP blocking - /// - /// In en, this message translates to: - /// **'Your ISP may be blocking access to download services'** - String get logIssueIspBlockingDescription; - - /// Diagnostic badge suggestion for ISP blocking - /// - /// In en, this message translates to: - /// **'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'** - String get logIssueIspBlockingSuggestion; - - /// Diagnostic badge label when the service rate limits requests - /// - /// In en, this message translates to: - /// **'RATE LIMITED'** - String get logIssueRateLimitedLabel; - - /// Diagnostic badge description for rate limiting - /// - /// In en, this message translates to: - /// **'Too many requests to the service'** - String get logIssueRateLimitedDescription; - - /// Diagnostic badge suggestion for rate limiting - /// - /// In en, this message translates to: - /// **'Wait a few minutes before trying again'** - String get logIssueRateLimitedSuggestion; - - /// Diagnostic badge label for generic network errors - /// - /// In en, this message translates to: - /// **'NETWORK ERROR'** - String get logIssueNetworkErrorLabel; - - /// Diagnostic badge description for generic network errors - /// - /// In en, this message translates to: - /// **'Connection issues detected'** - String get logIssueNetworkErrorDescription; - - /// Diagnostic badge suggestion for generic network errors - /// - /// In en, this message translates to: - /// **'Check your internet connection'** - String get logIssueNetworkErrorSuggestion; - - /// Diagnostic badge label when a track is unavailable - /// - /// In en, this message translates to: - /// **'TRACK NOT FOUND'** - String get logIssueTrackNotFoundLabel; - - /// Diagnostic badge description when a track is unavailable - /// - /// In en, this message translates to: - /// **'Some tracks could not be found on download services'** - String get logIssueTrackNotFoundDescription; - - /// Diagnostic badge suggestion when a track is unavailable - /// - /// In en, this message translates to: - /// **'The track may not be available in lossless quality'** - String get logIssueTrackNotFoundSuggestion; - - /// Snackbar shown while clickable artist metadata is being resolved - /// - /// In en, this message translates to: - /// **'Looking up artist...'** - String get clickableLookingUpArtist; - - /// Snackbar shown when clickable metadata cannot open a destination - /// - /// In en, this message translates to: - /// **'{type} information not available'** - String clickableInformationUnavailable(String type); - - /// Section title for extension tags - /// - /// In en, this message translates to: - /// **'Tags'** - String get extensionDetailsTags; - - /// Section title for extension metadata information - /// - /// In en, this message translates to: - /// **'Information'** - String get extensionDetailsInformation; - - /// Capability label for utility-only extensions - /// - /// In en, this message translates to: - /// **'Utility Functions'** - String get extensionUtilityFunctions; - - /// Generic action - dismiss - /// - /// In en, this message translates to: - /// **'Dismiss'** - String get actionDismiss; - - /// Tooltip for editing the selected download folder - /// - /// In en, this message translates to: - /// **'Change folder'** - String get setupChangeFolderTooltip; - - /// Accessibility label for opening a track item - /// - /// In en, this message translates to: - /// **'Open track {trackName} by {artistName}'** - String a11yOpenTrackByArtist(String trackName, String artistName); - - /// Accessibility label for opening a generic item - /// - /// In en, this message translates to: - /// **'Open {itemType} {name}'** - String a11yOpenItem(String itemType, String name); - - /// Accessibility label for opening a grouped item with count - /// - /// In en, this message translates to: - /// **'Open {title}, {count} {count, plural, =1{item} other{items}}'** - String a11yOpenItemCount(String title, int count); - - /// Accessibility label for opening an album item with track count - /// - /// In en, this message translates to: - /// **'Open album {albumName} by {artistName}, {trackCount} tracks'** - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ); - - /// Accessibility label for a queue or list track item - /// - /// In en, this message translates to: - /// **'{trackName} by {artistName}'** - String a11yTrackByArtist(String trackName, String artistName); - - /// Accessibility label for selecting an album - /// - /// In en, this message translates to: - /// **'Select album {albumName}'** - String a11ySelectAlbum(String albumName); - - /// Accessibility label for opening an album - /// - /// In en, this message translates to: - /// **'Open album {albumName}'** - String a11yOpenAlbum(String albumName); - - /// Settings menu item - file and folder settings - /// - /// In en, this message translates to: - /// **'Files & Folders'** - String get settingsFiles; - - /// Subtitle for files & folders settings - /// - /// In en, this message translates to: - /// **'Download location, filename, folder structure'** - String get settingsFilesSubtitle; - - /// Settings menu item - metadata settings - /// - /// In en, this message translates to: - /// **'Metadata'** - String get settingsMetadata; - - /// Subtitle for metadata settings - /// - /// In en, this message translates to: - /// **'Cover art, tags, ReplayGain, providers'** - String get settingsMetadataSubtitle; - - /// Settings menu item - lyrics settings - /// - /// In en, this message translates to: - /// **'Lyrics'** - String get settingsLyrics; - - /// Subtitle for lyrics settings - /// - /// In en, this message translates to: - /// **'Embed, mode, providers, language options'** - String get settingsLyricsSubtitle; - - /// Settings menu item - app settings - /// - /// In en, this message translates to: - /// **'App'** - String get settingsApp; - - /// Subtitle for app settings - /// - /// In en, this message translates to: - /// **'Updates, data, extension repo, debug'** - String get settingsAppSubtitle; - - /// Settings section header for metadata providers - /// - /// In en, this message translates to: - /// **'Providers'** - String get sectionMetadataProviders; - - /// Settings section header for deduplication - /// - /// In en, this message translates to: - /// **'Duplicates'** - String get sectionDuplicates; - - /// Settings section header for per-provider lyrics options - /// - /// In en, this message translates to: - /// **'Provider Options'** - String get sectionLyricsProviderOptions; - - /// Settings item title for metadata provider order - /// - /// In en, this message translates to: - /// **'Metadata Provider Priority'** - String get metadataProvidersTitle; - - /// Subtitle for metadata provider priority item - /// - /// In en, this message translates to: - /// **'Drag to set search and metadata source order'** - String get metadataProvidersSubtitle; - - /// Setting - skip tracks already in download history - /// - /// In en, this message translates to: - /// **'Skip Duplicate Downloads'** - String get downloadDeduplication; - - /// Subtitle when deduplication is on - /// - /// In en, this message translates to: - /// **'Already-downloaded tracks will be skipped'** - String get downloadDeduplicationEnabled; - - /// Deduplication subtitle when separate quality versions are allowed - /// - /// In en, this message translates to: - /// **'Existing files at the selected quality will be skipped'** - String get downloadDeduplicationWithQualityVariants; - - /// Subtitle when deduplication is off - /// - /// In en, this message translates to: - /// **'All tracks will be downloaded regardless of history'** - String get downloadDeduplicationDisabled; - - /// Setting to retain multiple quality versions of the same track - /// - /// In en, this message translates to: - /// **'Allow different quality versions'** - String get downloadQualityVariants; - - /// Description for retaining multiple quality versions - /// - /// In en, this message translates to: - /// **'Keep every quality version; add its measured quality to the filename only when the name is already used'** - String get downloadQualityVariantsDescription; - - /// Track menu action to download another quality version - /// - /// In en, this message translates to: - /// **'Download another quality'** - String get trackOptionDownloadQualityVariant; - - /// Settings item for configuring fallback extension providers - /// - /// In en, this message translates to: - /// **'Fallback Extensions'** - String get downloadFallbackExtensions; - - /// Subtitle for fallback extensions item - /// - /// In en, this message translates to: - /// **'Choose which extensions can be used as fallback'** - String get downloadFallbackExtensionsSubtitle; - - /// Hint text for the edit metadata date field - /// - /// In en, this message translates to: - /// **'YYYY-MM-DD or YYYY'** - String get editMetadataFieldDateHint; - - /// Label for total tracks field in the edit metadata sheet - /// - /// In en, this message translates to: - /// **'Track Total'** - String get editMetadataFieldTrackTotal; - - /// Label for total discs field in the edit metadata sheet - /// - /// In en, this message translates to: - /// **'Disc Total'** - String get editMetadataFieldDiscTotal; - - /// Label for composer field in the edit metadata sheet - /// - /// In en, this message translates to: - /// **'Composer'** - String get editMetadataFieldComposer; - - /// Label for comment field in the edit metadata sheet - /// - /// In en, this message translates to: - /// **'Comment'** - String get editMetadataFieldComment; - - /// Label for an album or release type metadata value - /// - /// In en, this message translates to: - /// **'Release Type'** - String get trackAlbumType; - - /// Hint for the release type metadata field - /// - /// In en, this message translates to: - /// **'Album, single, EP, compilation...'** - String get editMetadataFieldAlbumTypeHint; - - /// Label for the explicit content metadata field - /// - /// In en, this message translates to: - /// **'Explicit'** - String get editMetadataFieldExplicit; - - /// Description for the explicit content metadata switch - /// - /// In en, this message translates to: - /// **'Mark this track as containing explicit content'** - String get editMetadataFieldExplicitHint; - - /// Displayed value when a track is marked explicit - /// - /// In en, this message translates to: - /// **'Explicit'** - String get metadataExplicitValue; - - /// Label for the release barcode metadata field - /// - /// In en, this message translates to: - /// **'UPC / Barcode'** - String get editMetadataFieldUpc; - - /// Hint for the release barcode metadata field - /// - /// In en, this message translates to: - /// **'Numeric UPC, EAN, or GTIN'** - String get editMetadataFieldUpcHint; - - /// Expandable section label for advanced metadata fields - /// - /// In en, this message translates to: - /// **'Advanced'** - String get editMetadataAdvanced; - - /// Filter option - items missing track number - /// - /// In en, this message translates to: - /// **'Missing track number'** - String get libraryFilterMetadataMissingTrackNumber; - - /// Filter option - items missing disc number - /// - /// In en, this message translates to: - /// **'Missing disc number'** - String get libraryFilterMetadataMissingDiscNumber; - - /// Filter option - items missing artist - /// - /// In en, this message translates to: - /// **'Missing artist'** - String get libraryFilterMetadataMissingArtist; - - /// Filter option - items with an invalid ISRC format - /// - /// In en, this message translates to: - /// **'Incorrect ISRC format'** - String get libraryFilterMetadataIncorrectIsrcFormat; - - /// Filter option - items without any ISRC tag - /// - /// In en, this message translates to: - /// **'Missing ISRC'** - String get libraryFilterMetadataMissingIsrc; - - /// Filter option - items missing record label - /// - /// In en, this message translates to: - /// **'Missing label'** - String get libraryFilterMetadataMissingLabel; - - /// Confirmation message for deleting selected playlists - /// - /// In en, this message translates to: - /// **'Delete {count} {count, plural, =1{playlist} other{playlists}}?'** - String collectionDeletePlaylistsMessage(int count); - - /// Snackbar after deleting selected playlists - /// - /// In en, this message translates to: - /// **'{count} {count, plural, =1{playlist} other{playlists}} deleted'** - String collectionPlaylistsDeleted(int count); - - /// Snackbar after adding multiple tracks to a playlist - /// - /// In en, this message translates to: - /// **'Added {count} {count, plural, =1{track} other{tracks}} to {playlistName}'** - String collectionAddedTracksToPlaylist(int count, String playlistName); - - /// Snackbar after adding multiple tracks to a playlist when some were already present - /// - /// In en, this message translates to: - /// **'Added {count} {count, plural, =1{track} other{tracks}} to {playlistName} ({alreadyCount} already in playlist)'** - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ); - - /// Generic item count label - /// - /// In en, this message translates to: - /// **'{count} {count, plural, =1{item} other{items}}'** - String itemCount(int count); - - /// Snackbar summary after batch metadata re-enrichment finishes with failures - /// - /// In en, this message translates to: - /// **'Metadata re-enriched successfully ({successCount}/{total}) - Failed: {failedCount}'** - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ); - - /// Button label for deleting selected tracks - /// - /// In en, this message translates to: - /// **'Delete {count} {count, plural, =1{track} other{tracks}}'** - String selectionDeleteTracksCount(int count); - - /// Queue status while downloading with speed - /// - /// In en, this message translates to: - /// **'Downloading - {speed} MB/s'** - String queueDownloadSpeedStatus(String speed); - - /// Queue status before download progress is available - /// - /// In en, this message translates to: - /// **'Starting...'** - String get queueDownloadStarting; - - /// Queue status while the download provider's session is being checked during preparation (preparationStage 'checking_session'). This is about the provider session, not about locating a finished file. - /// - /// In en, this message translates to: - /// **'Checking download session...'** - String get queueCheckingDownloadSession; - - /// No description provided for @queueResolvingDownloadMetadata. - /// - /// In en, this message translates to: - /// **'Resolving track metadata...'** - String get queueResolvingDownloadMetadata; - - /// No description provided for @queueResolvingDownloadStream. - /// - /// In en, this message translates to: - /// **'Preparing audio stream...'** - String get queueResolvingDownloadStream; - - /// No description provided for @queueWaitingForVerification. - /// - /// In en, this message translates to: - /// **'Waiting for verification...'** - String get queueWaitingForVerification; - - /// No description provided for @queueResumingAfterVerification. - /// - /// In en, this message translates to: - /// **'Resuming after verification...'** - String get queueResumingAfterVerification; - - /// Accessibility label for selecting a track - /// - /// In en, this message translates to: - /// **'Select track'** - String get a11ySelectTrack; - - /// Accessibility label for deselecting a track - /// - /// In en, this message translates to: - /// **'Deselect track'** - String get a11yDeselectTrack; - - /// Accessibility label for playing a local library track - /// - /// In en, this message translates to: - /// **'Play {trackName} by {artistName}'** - String a11yPlayTrackByArtist(String trackName, String artistName); - - /// Store extension result count - /// - /// In en, this message translates to: - /// **'{count} {count, plural, =1{extension} other{extensions}}'** - String storeExtensionsCount(int count); - - /// Store compatibility badge for minimum app version - /// - /// In en, this message translates to: - /// **'Requires v{version}+'** - String storeRequiresVersion(String version); - - /// Generic action button label - /// - /// In en, this message translates to: - /// **'Go'** - String get actionGo; - - /// Header for log issue analysis summary - /// - /// In en, this message translates to: - /// **'Issue Summary'** - String get logIssueSummary; - - /// Total error count in log issue analysis - /// - /// In en, this message translates to: - /// **'Total errors: {count}'** - String logTotalErrors(int count); - - /// Affected domains in log issue analysis - /// - /// In en, this message translates to: - /// **'Affected: {domains}'** - String logAffectedDomains(String domains); - - /// Library scan status when a scan was cancelled - /// - /// In en, this message translates to: - /// **'Scan cancelled'** - String get libraryScanCancelled; - - /// Library scan status subtitle after cancellation - /// - /// In en, this message translates to: - /// **'You can retry the scan when ready.'** - String get libraryScanCancelledSubtitle; - - /// Library count note for downloaded history items excluded from the local list - /// - /// In en, this message translates to: - /// **'{count} from Downloads history (excluded from list)'** - String libraryDownloadsHistoryExcluded(int count); - - /// Setting title for Android native download worker - /// - /// In en, this message translates to: - /// **'Native download worker'** - String get downloadNativeWorker; - - /// Setting subtitle for Android native download worker - /// - /// In en, this message translates to: - /// **'Android background service for extension downloads'** - String get downloadNativeWorkerSubtitle; - - /// Extension detail section header for service status - /// - /// In en, this message translates to: - /// **'Service Status'** - String get extensionServiceStatus; - - /// Extension capability label for service health checks - /// - /// In en, this message translates to: - /// **'Service health'** - String get extensionServiceHealth; - - /// Extension service health check count - /// - /// In en, this message translates to: - /// **'{count} {count, plural, =1{check} other{checks}} configured'** - String extensionHealthChecksConfigured(int count); - - /// Hint for an OAuth login link field before connecting Spotify - /// - /// In en, this message translates to: - /// **'Tap Connect to Spotify to fill this field.'** - String get extensionOauthConnectHint; - - /// Timestamp for the latest extension service health check - /// - /// In en, this message translates to: - /// **'Last checked {time}'** - String extensionLastChecked(String time); - - /// Tooltip for refreshing extension service health status - /// - /// In en, this message translates to: - /// **'Refresh status'** - String get extensionRefreshStatus; - - /// Extension detail section title for custom URL handling - /// - /// In en, this message translates to: - /// **'Custom URL Handling'** - String get extensionCustomUrlHandling; - - /// Extension detail subtitle for custom URL handling - /// - /// In en, this message translates to: - /// **'This extension can handle links from these sites'** - String get extensionCustomUrlHandlingSubtitle; - - /// Extension detail hint explaining share-to-app URL handling - /// - /// In en, this message translates to: - /// **'Share links from these sites to SpotiFLAC Mobile and this extension will handle them.'** - String get extensionCustomUrlHandlingShareHint; - - /// Count of settings exposed by an extension quality option - /// - /// In en, this message translates to: - /// **'{count} {count, plural, =1{setting} other{settings}}'** - String extensionSettingsCount(int count); - - /// Extension service health status - online - /// - /// In en, this message translates to: - /// **'Online'** - String get extensionHealthOnline; - - /// Extension service health status - degraded - /// - /// In en, this message translates to: - /// **'Degraded'** - String get extensionHealthDegraded; - - /// Extension service health status - offline - /// - /// In en, this message translates to: - /// **'Offline'** - String get extensionHealthOffline; - - /// Extension service health status - not configured - /// - /// In en, this message translates to: - /// **'Not configured'** - String get extensionHealthNotConfigured; - - /// Extension service health status - unknown - /// - /// In en, this message translates to: - /// **'Unknown'** - String get extensionHealthUnknown; - - /// Label for a required extension service health check - /// - /// In en, this message translates to: - /// **'required'** - String get extensionHealthRequired; - - /// Value shown when an extension setting has no value - /// - /// In en, this message translates to: - /// **'Not set'** - String get extensionSettingNotSet; - - /// Fallback error when an extension action fails without details - /// - /// In en, this message translates to: - /// **'Action failed'** - String get extensionActionFailed; - - /// Hint for editing an extension setting value - /// - /// In en, this message translates to: - /// **'Enter value'** - String get extensionEnterValue; - - /// Tooltip for online extension service - /// - /// In en, this message translates to: - /// **'Service online'** - String get extensionHealthServiceOnline; - - /// Tooltip for degraded extension service - /// - /// In en, this message translates to: - /// **'Service degraded'** - String get extensionHealthServiceDegraded; - - /// Tooltip for offline extension service - /// - /// In en, this message translates to: - /// **'Service offline'** - String get extensionHealthServiceOffline; - - /// Tooltip for unknown extension service health - /// - /// In en, this message translates to: - /// **'Service status unknown'** - String get extensionHealthServiceUnknown; - - /// Audio channel layout label - stereo - /// - /// In en, this message translates to: - /// **'Stereo'** - String get audioAnalysisStereo; - - /// Audio channel layout label - mono - /// - /// In en, this message translates to: - /// **'Mono'** - String get audioAnalysisMono; - - /// Button label to open a track in a named music service - /// - /// In en, this message translates to: - /// **'Open in {serviceName}'** - String trackOpenInService(String serviceName); - - /// Lyrics source label for embedded lyrics - /// - /// In en, this message translates to: - /// **'Embedded'** - String get trackLyricsEmbeddedSource; - - /// Fallback album name when metadata is missing - /// - /// In en, this message translates to: - /// **'Unknown Album'** - String get unknownAlbum; - - /// Fallback artist name when metadata is missing - /// - /// In en, this message translates to: - /// **'Unknown Artist'** - String get unknownArtist; - - /// Audio permission type label - /// - /// In en, this message translates to: - /// **'Audio'** - String get permissionAudio; - - /// Storage permission type label - /// - /// In en, this message translates to: - /// **'Storage'** - String get permissionStorage; - - /// Notification permission type label - /// - /// In en, this message translates to: - /// **'Notification'** - String get permissionNotification; - - /// Error when the selected folder is invalid - /// - /// In en, this message translates to: - /// **'Invalid folder selected'** - String get errorInvalidFolderSelected; - - /// Store detail value when any app version is accepted - /// - /// In en, this message translates to: - /// **'Any'** - String get storeAnyVersion; - - /// Store extension category - metadata - /// - /// In en, this message translates to: - /// **'Metadata'** - String get storeCategoryMetadata; - - /// Store extension category - download - /// - /// In en, this message translates to: - /// **'Download'** - String get storeCategoryDownload; - - /// Store extension category - utility - /// - /// In en, this message translates to: - /// **'Utility'** - String get storeCategoryUtility; - - /// Store extension category - lyrics - /// - /// In en, this message translates to: - /// **'Lyrics'** - String get storeCategoryLyrics; - - /// Store extension category - integration - /// - /// In en, this message translates to: - /// **'Integration'** - String get storeCategoryIntegration; - - /// Section header for all artist releases - /// - /// In en, this message translates to: - /// **'Releases'** - String get artistReleases; - - /// Button to clear selected fields for auto-fill - /// - /// In en, this message translates to: - /// **'None'** - String get editMetadataSelectNone; - - /// Button to retry every failed download in the queue - /// - /// In en, this message translates to: - /// **'Retry {count} failed'** - String queueRetryAllFailed(int count); - - /// Settings switch title for storing completed downloads in history - /// - /// In en, this message translates to: - /// **'Save download history'** - String get settingsSaveDownloadHistory; - - /// Settings switch subtitle for storing completed downloads in history - /// - /// In en, this message translates to: - /// **'Keep completed downloads in history and library views'** - String get settingsSaveDownloadHistorySubtitle; - - /// Confirmation dialog title shown before disabling download history - /// - /// In en, this message translates to: - /// **'Turn off download history?'** - String get dialogDisableHistoryTitle; - - /// Confirmation dialog message shown before disabling download history - /// - /// In en, this message translates to: - /// **'Existing history will be cleared. Downloaded files will not be deleted.'** - String get dialogDisableHistoryMessage; - - /// Confirmation action to disable download history and clear existing entries - /// - /// In en, this message translates to: - /// **'Turn off and clear'** - String get dialogDisableAndClear; - - /// Title and tooltip for finding the current collection in other services - /// - /// In en, this message translates to: - /// **'Open in Other Services'** - String get openInOtherServices; - - /// Empty state when no extensions can be searched for cross-service links - /// - /// In en, this message translates to: - /// **'No other compatible services'** - String get shareSheetNoExtensions; - - /// Cross-service share sheet row subtitle when a service has no match - /// - /// In en, this message translates to: - /// **'Not found'** - String get shareSheetNotFound; - - /// Tooltip for copying a cross-service link - /// - /// In en, this message translates to: - /// **'Copy Link'** - String get shareSheetCopyLink; - - /// Snackbar after copying a cross-service link - /// - /// In en, this message translates to: - /// **'{service} link copied'** - String shareSheetLinkCopied(Object service); - - /// Section header for playback settings in library settings - /// - /// In en, this message translates to: - /// **'Playback'** - String get libraryPlayback; - - /// Setting option to use an external music player - /// - /// In en, this message translates to: - /// **'External player'** - String get libraryExternalPlayer; - - /// Subtitle for external player option - /// - /// In en, this message translates to: - /// **'Recommended for listening, best quality, gapless playback, EQ, and wider format support'** - String get libraryExternalPlayerSubtitle; - - /// Setting option to use the built-in preview player - /// - /// In en, this message translates to: - /// **'Built-in preview player'** - String get libraryBuiltInPreviewPlayer; - - /// Subtitle for built-in preview player option - /// - /// In en, this message translates to: - /// **'Only for quick local previews inside SpotiFLAC Mobile, not recommended for regular listening'** - String get libraryBuiltInPreviewPlayerSubtitle; - - /// Info note explaining the built-in player is for previews only - /// - /// In en, this message translates to: - /// **'The built-in player is a preview tool for checking local tracks quickly. Use an external music player for actual listening.'** - String get libraryBuiltInPlayerInfo; - - /// Title for the now playing screen - /// - /// In en, this message translates to: - /// **'Now Playing'** - String get nowPlayingTitle; - - /// Empty state when no track is currently playing - /// - /// In en, this message translates to: - /// **'Nothing is playing'** - String get nowPlayingNothingPlaying; - - /// Tooltip for minimizing the now playing screen - /// - /// In en, this message translates to: - /// **'Minimize'** - String get nowPlayingMinimize; - - /// Title for the playback queue sheet - /// - /// In en, this message translates to: - /// **'Up next'** - String get nowPlayingUpNext; - - /// Tooltip for the previous-track playback control - /// - /// In en, this message translates to: - /// **'Previous track'** - String get nowPlayingPreviousTrack; - - /// Tooltip for the next-track playback control - /// - /// In en, this message translates to: - /// **'Next track'** - String get nowPlayingNextTrack; - - /// Menu item and section title for track metadata details - /// - /// In en, this message translates to: - /// **'Details'** - String get nowPlayingDetails; - - /// Menu item to open the current track in an external player - /// - /// In en, this message translates to: - /// **'Open in external player'** - String get nowPlayingOpenInExternalPlayer; - - /// Tab label for the player view - /// - /// In en, this message translates to: - /// **'Player'** - String get nowPlayingTabPlayer; - - /// Tab label for the lyrics view - /// - /// In en, this message translates to: - /// **'Lyrics'** - String get nowPlayingTabLyrics; - - /// Empty state when the playing file has no embedded lyrics - /// - /// In en, this message translates to: - /// **'No lyrics in this file'** - String get nowPlayingNoLyrics; - - /// Snackbar when shuffle library is requested but library has no tracks - /// - /// In en, this message translates to: - /// **'Your library is empty'** - String get nowPlayingLibraryEmpty; - - /// Snackbar when shuffling the library fails - /// - /// In en, this message translates to: - /// **'Could not shuffle library: {error}'** - String nowPlayingShuffleLibraryFailed(String error); - - /// Tooltip when shuffle mode is enabled - /// - /// In en, this message translates to: - /// **'Shuffle on'** - String get nowPlayingShuffleOn; - - /// Tooltip when shuffle mode is disabled - /// - /// In en, this message translates to: - /// **'Play in order'** - String get nowPlayingPlayInOrder; - - /// Button label to shuffle and play the entire local library - /// - /// In en, this message translates to: - /// **'Shuffle library'** - String get nowPlayingShuffleLibrary; - - /// Empty state when the playback queue has no items - /// - /// In en, this message translates to: - /// **'Queue is empty'** - String get nowPlayingQueueEmpty; - - /// Empty state when track metadata cannot be loaded - /// - /// In en, this message translates to: - /// **'No metadata available'** - String get nowPlayingNoMetadata; - - /// Snackbar shown when an announcement CTA link cannot be opened - /// - /// In en, this message translates to: - /// **'Unable to open link. Please try again.'** - String get announcementUnableToOpenLink; - - /// Hint shown when lossless conversion will cap bit depth or sample rate - /// - /// In en, this message translates to: - /// **'Lossless output with {quality} cap'** - String trackConvertLosslessOutputWithCap(String quality); - - /// Confirmation dialog message for capped lossless conversion of a single file - /// - /// In en, this message translates to: - /// **'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.'** - String trackConvertConfirmMessageLosslessCapped( - String sourceFormat, - String targetFormat, - String quality, - ); - - /// Confirmation dialog message for capped lossless batch conversion - /// - /// In en, this message translates to: - /// **'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.'** - String selectionBatchConvertConfirmMessageLosslessCapped( - int count, - String format, - String quality, - ); - - /// Convert button label for lossless conversion with quality cap - /// - /// In en, this message translates to: - /// **'{sourceFormat} → {targetFormat} ({quality})'** - String trackConvertActionLabelLossless( - String sourceFormat, - String targetFormat, - String quality, - ); - - /// Convert button label for lossy conversion - /// - /// In en, this message translates to: - /// **'{sourceFormat} → {targetFormat} @ {bitrate}'** - String trackConvertActionLabelLossy( - String sourceFormat, - String targetFormat, - String bitrate, - ); - - /// Subtitle for Paxsenix special thanks entry on the about page - /// - /// In en, this message translates to: - /// **'Lyrics proxy for Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou, and Genius'** - String get aboutPaxsenixSubtitle; - - /// Snackbar when a track is inserted as the next queue item - /// - /// In en, this message translates to: - /// **'Playing next'** - String get snackbarPlayingNext; - - /// Snackbar when a track is added to the playback queue without naming it - /// - /// In en, this message translates to: - /// **'Added to queue'** - String get snackbarAddedToQueueGeneric; - - /// Button label for deleting multiple selected playlists - /// - /// In en, this message translates to: - /// **'Delete {count} {count, plural, =1{playlist} other{playlists}}'** - String selectionDeletePlaylistsCount(int count); - - /// Tooltip for shuffle playback action - /// - /// In en, this message translates to: - /// **'Shuffle'** - String get actionShuffle; - - /// Status label when primary-artist-only folder naming is enabled - /// - /// In en, this message translates to: - /// **'Primary only: On'** - String get downloadPrimaryArtistOnlyOn; - - /// Status label when primary-artist-only folder naming is disabled - /// - /// In en, this message translates to: - /// **'Primary only: Off'** - String get downloadPrimaryArtistOnlyOff; - - /// Status label when album-artist folder filtering uses primary artist only - /// - /// In en, this message translates to: - /// **'Album Artist metadata: Primary only'** - String get downloadAlbumArtistMetadataPrimaryOnly; - - /// Status label when album-artist folder filtering uses full metadata - /// - /// In en, this message translates to: - /// **'Album Artist metadata: Full'** - String get downloadAlbumArtistMetadataFull; - - /// Label for keeping original bit depth or sample rate during conversion - /// - /// In en, this message translates to: - /// **'Original'** - String get trackConvertOriginal; - - /// Label when no bit depth or sample rate cap is applied during lossless conversion - /// - /// In en, this message translates to: - /// **'Original quality'** - String get trackConvertOriginalQuality; - - /// Suffix used in converted lossless quality labels - /// - /// In en, this message translates to: - /// **'Lossless'** - String get trackConvertLosslessSuffix; - - /// Section label for lossless conversion dithering options - /// - /// In en, this message translates to: - /// **'Dithering'** - String get trackConvertDithering; - - /// Section label for lossless conversion resampler options - /// - /// In en, this message translates to: - /// **'Resampler'** - String get trackConvertResampler; - - /// Lossless conversion dither option with no dithering applied - /// - /// In en, this message translates to: - /// **'None'** - String get trackConvertDitherNone; - - /// Lossless conversion triangular probability density function dither option - /// - /// In en, this message translates to: - /// **'TPDF'** - String get trackConvertDitherTriangular; - - /// Lossless conversion high-pass triangular dither option - /// - /// In en, this message translates to: - /// **'Triangular HP'** - String get trackConvertDitherTriangularHp; - - /// Lossless conversion default FFmpeg swresample resampler option - /// - /// In en, this message translates to: - /// **'SWR'** - String get trackConvertResamplerSwr; - - /// Lossless conversion SoX resampler option - /// - /// In en, this message translates to: - /// **'SoXr'** - String get trackConvertResamplerSoxr; - - /// Fallback changelog text when release notes cannot be parsed - /// - /// In en, this message translates to: - /// **'See release notes for details.'** - String get updateSeeReleaseNotes; - - /// Fallback track title when metadata is missing - /// - /// In en, this message translates to: - /// **'Unknown title'** - String get unknownTitle; - - /// Menu action to play a track as the next queue item - /// - /// In en, this message translates to: - /// **'Play next'** - String get trackPlayNext; - - /// Menu action to add a track to the playback queue - /// - /// In en, this message translates to: - /// **'Add to queue'** - String get trackAddToQueue; - - /// Snackbar after installing an extension from the repo tab - /// - /// In en, this message translates to: - /// **'{extensionName} installed. Enable it in Settings > Extensions'** - String snackbarExtensionInstalledEnable(String extensionName); - - /// Snackbar after updating an extension from the repo tab - /// - /// In en, this message translates to: - /// **'{extensionName} updated to v{version}'** - String snackbarExtensionUpdatedVersion(String extensionName, String version); - - /// Snackbar when extension install fails in the repo tab - /// - /// In en, this message translates to: - /// **'Failed to install {extensionName}'** - String snackbarFailedToInstallNamed(String extensionName); - - /// Snackbar when extension update fails in the repo tab - /// - /// In en, this message translates to: - /// **'Failed to update {extensionName}'** - String snackbarFailedToUpdateNamed(String extensionName); - - /// Badge label for EP releases - /// - /// In en, this message translates to: - /// **'EP'** - String get releaseTypeEp; - - /// Badge label for single releases - /// - /// In en, this message translates to: - /// **'Single'** - String get releaseTypeSingle; - - /// Label shown when metadata autofill downloaded cover art from the internet - /// - /// In en, this message translates to: - /// **'Online cover'** - String get trackCoverOnline; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'United States'** - String get regionCountryUS; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'United Kingdom'** - String get regionCountryGB; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'France'** - String get regionCountryFR; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Germany'** - String get regionCountryDE; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Japan'** - String get regionCountryJP; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'South Korea'** - String get regionCountryKR; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'India'** - String get regionCountryIN; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Indonesia'** - String get regionCountryID; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Brazil'** - String get regionCountryBR; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Mexico'** - String get regionCountryMX; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Australia'** - String get regionCountryAU; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Canada'** - String get regionCountryCA; - - /// Country name for SongLink region picker - /// - /// In en, this message translates to: - /// **'Kosovo'** - String get regionCountryXK; - - /// Settings option title for extension verification browser preference - /// - /// In en, this message translates to: - /// **'Verification browser'** - String get extensionVerificationBrowserTitle; - - /// Subtitle when external browser is preferred for extension verification - /// - /// In en, this message translates to: - /// **'Open challenges in the default browser first'** - String get extensionVerificationBrowserSubtitleExternal; - - /// Subtitle when in-app browser is preferred for extension verification - /// - /// In en, this message translates to: - /// **'Open challenges in the in-app browser first'** - String get extensionVerificationBrowserSubtitleInApp; - - /// Chip label for external browser verification mode - /// - /// In en, this message translates to: - /// **'External'** - String get extensionVerificationBrowserExternal; - - /// Chip label for in-app browser verification mode - /// - /// In en, this message translates to: - /// **'In-app'** - String get extensionVerificationBrowserInApp; - - /// Dialog title when automatic browser launch for verification fails - /// - /// In en, this message translates to: - /// **'Open verification manually'** - String get extensionVerificationHelpTitleManual; - - /// Dialog title when verification is taking longer than expected - /// - /// In en, this message translates to: - /// **'Verification still waiting'** - String get extensionVerificationHelpTitleWaiting; - - /// Dialog message when automatic browser launch for verification fails - /// - /// In en, this message translates to: - /// **'SpotiFLAC Mobile could not open the browser automatically. Open this link in your browser, or copy it manually.'** - String get extensionVerificationHelpMessageManual; - - /// Dialog message when verification may need manual browser help - /// - /// In en, this message translates to: - /// **'If the browser did not open, or verification finished but did not return to SpotiFLAC Mobile, open this link again or copy it manually.'** - String get extensionVerificationHelpMessageWaiting; - - /// Button to dismiss the extension verification help dialog - /// - /// In en, this message translates to: - /// **'Close'** - String get extensionVerificationClose; - - /// Button to copy the extension verification URL - /// - /// In en, this message translates to: - /// **'Copy link'** - String get extensionVerificationCopyLink; - - /// Snackbar after copying the extension verification URL - /// - /// In en, this message translates to: - /// **'Verification link copied'** - String get extensionVerificationLinkCopied; - - /// Button to open the extension verification URL in a browser - /// - /// In en, this message translates to: - /// **'Open browser'** - String get extensionVerificationOpenBrowser; - - /// Placeholder of the search field on the Settings tab - /// - /// In en, this message translates to: - /// **'Search settings'** - String get settingsSearchHint; - - /// Shown when a Settings search returns nothing - /// - /// In en, this message translates to: - /// **'No settings match \"{query}\"'** - String settingsSearchNoResults(String query); - - /// Settings group covering look and feel - /// - /// In en, this message translates to: - /// **'Extensions & appearance'** - String get settingsGroupInterface; - - /// Settings group covering the library, metadata and lyrics - /// - /// In en, this message translates to: - /// **'Content & metadata'** - String get settingsGroupContent; - - /// Settings group covering download behaviour and storage - /// - /// In en, this message translates to: - /// **'Downloads & files'** - String get settingsGroupDownloads; - - /// Settings group covering app-level data, cache and logs - /// - /// In en, this message translates to: - /// **'System'** - String get settingsGroupSystem; - - /// Settings group covering the about page and donations - /// - /// In en, this message translates to: - /// **'About & support'** - String get settingsGroupHelp; - - /// Filter option for tracks without embedded or sidecar lyrics - /// - /// In en, this message translates to: - /// **'Missing lyrics'** - String get libraryFilterMetadataMissingLyrics; - - /// Track menu action that copies the track title - /// - /// In en, this message translates to: - /// **'Copy track name'** - String get trackOptionCopyTrackName; - - /// Track menu action that copies the artist name - /// - /// In en, this message translates to: - /// **'Copy artist'** - String get trackOptionCopyArtist; - - /// Track menu action that copies the track title and artist - /// - /// In en, this message translates to: - /// **'Copy track and artist'** - String get trackOptionCopyTrackAndArtist; - - /// Metadata menu action that copies only the selected value - /// - /// In en, this message translates to: - /// **'Copy value'** - String get metadataCopyValue; - - /// Metadata menu action that copies the selected key and value - /// - /// In en, this message translates to: - /// **'Copy field and value'** - String get metadataCopyField; - - /// Metadata menu action that copies every visible key and value - /// - /// In en, this message translates to: - /// **'Copy all metadata'** - String get metadataCopyAll; - - /// Metadata setting that limits downloaded artwork resolution before it is embedded - /// - /// In en, this message translates to: - /// **'Embedded Cover Size'** - String get optionsEmbeddedCoverSize; - - /// Description shown in the embedded cover size picker - /// - /// In en, this message translates to: - /// **'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'** - String get optionsEmbeddedCoverSizeDescription; - - /// Option that preserves the provider artwork at its original resolution - /// - /// In en, this message translates to: - /// **'Original resolution'** - String get optionsEmbeddedCoverSizeOriginal; -} - -class _AppLocalizationsDelegate - extends LocalizationsDelegate { - const _AppLocalizationsDelegate(); - - @override - Future load(Locale locale) { - return SynchronousFuture(lookupAppLocalizations(locale)); - } - - @override - bool isSupported(Locale locale) => [ - 'de', - 'en', - 'es', - 'fr', - 'id', - 'ja', - 'ko', - 'pt', - 'ru', - 'tr', - 'uk', - ].contains(locale.languageCode); - - @override - bool shouldReload(_AppLocalizationsDelegate old) => false; -} - -AppLocalizations lookupAppLocalizations(Locale locale) { - // Lookup logic when language+country codes are specified. - switch (locale.languageCode) { - case 'es': - { - switch (locale.countryCode) { - case 'ES': - return AppLocalizationsEsEs(); - } - break; - } - case 'pt': - { - switch (locale.countryCode) { - case 'PT': - return AppLocalizationsPtPt(); - } - break; - } - } - - // Lookup logic when only language code is specified. - switch (locale.languageCode) { - case 'de': - return AppLocalizationsDe(); - case 'en': - return AppLocalizationsEn(); - case 'es': - return AppLocalizationsEs(); - case 'fr': - return AppLocalizationsFr(); - case 'id': - return AppLocalizationsId(); - case 'ja': - return AppLocalizationsJa(); - case 'ko': - return AppLocalizationsKo(); - case 'pt': - return AppLocalizationsPt(); - case 'ru': - return AppLocalizationsRu(); - case 'tr': - return AppLocalizationsTr(); - case 'uk': - return AppLocalizationsUk(); - } - - throw FlutterError( - 'AppLocalizations.delegate failed to load unsupported locale "$locale". This is likely ' - 'an issue with the localizations generation tool. Please file an issue ' - 'on GitHub with a reproducible sample app and the gen-l10n configuration ' - 'that was used.', - ); -} diff --git a/lib/l10n/app_localizations_de.dart b/lib/l10n/app_localizations_de.dart deleted file mode 100644 index 0b5ed610..00000000 --- a/lib/l10n/app_localizations_de.dart +++ /dev/null @@ -1,5060 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for German (`de`). -class AppLocalizationsDe extends AppLocalizations { - AppLocalizationsDe([String locale = 'de']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Startseite'; - - @override - String get navLibrary => 'Bibliothek'; - - @override - String get navSettings => 'Einstellungen'; - - @override - String get navStore => 'Repo'; - - @override - String get homeTitle => 'Startseite'; - - @override - String get homeSubtitle => 'Unterstützte URL einfügen oder nach Namen suchen'; - - @override - String get homeEmptyTitle => 'Noch keine Suchanbieter'; - - @override - String get homeEmptySubtitle => - 'Installiere eine Erweiterung um fortzufahren.'; - - @override - String get homeSupports => - 'Unterstützt: Titel, Album, Playlist, Künstler-URLs'; - - @override - String get homeRecent => 'Zuletzt'; - - @override - String get historyFilterAll => 'Alle'; - - @override - String get historyFilterAlbums => 'Alben'; - - @override - String get historyFilterSingles => 'Singles'; - - @override - String get historySearchHint => 'Suchverlauf...'; - - @override - String get settingsTitle => 'Einstellungen'; - - @override - String get settingsDownload => 'Herunterladen'; - - @override - String get settingsAppearance => 'Erscheinungsbild'; - - @override - String get settingsExtensions => 'Erweiterungen'; - - @override - String get settingsAbout => 'Über'; - - @override - String get downloadTitle => 'Herunterladen'; - - @override - String get downloadAskQualitySubtitle => - 'Qualitätsauswahl für jeden Download anzeigen'; - - @override - String get downloadFilenameFormat => 'Dateinamenformat'; - - @override - String get downloadSingleFilenameFormat => 'Einzelnes Dateinamenformat'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Dateinamenmuster für Singles und EPs. Verwendet die gleichen Tags wie das Albumformat.'; - - @override - String get downloadFolderOrganization => 'Ordnerstruktur'; - - @override - String get appearanceTitle => 'Erscheinungsbild'; - - @override - String get appearanceThemeSystem => 'System'; - - @override - String get appearanceThemeLight => 'Hell'; - - @override - String get appearanceThemeDark => 'Dunkel'; - - @override - String get appearanceDynamicColor => 'Dynamische Farben'; - - @override - String get appearanceDynamicColorSubtitle => - 'Farben deines Hintergrundbilds verwenden'; - - @override - String get appearanceHistoryView => 'Verlaufsansicht'; - - @override - String get appearanceHistoryViewList => 'Liste'; - - @override - String get appearanceHistoryViewGrid => 'Raster'; - - @override - String get optionsPrimaryProvider => 'Primärer Anbieter'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Dienst zur Suche nach Titel oder Albumnamen'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Erweiterung verwenden: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Standard Such-Tab'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Wähle aus, welcher Tab zuerst für neue Suchergebnisse geöffnet wird.'; - - @override - String get optionsAutoFallback => 'Automatischer Fallback'; - - @override - String get optionsAutoFallbackSubtitle => - 'Andere Dienste versuchen, wenn Download fehlschlägt'; - - @override - String get optionsEmbedLyrics => 'Liedtexte einbetten'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Speichere synchronisierte Liedtexte zusammen mit heruntergeladenen Titeln'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Scanne Lautstärke und füge ReplayGain-Tags ein (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Deaktiviert: keine Lautstärke-Normalisierungs-Tags'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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 => 'Künstler Tag-Modus'; - - @override - String get optionsArtistTagModeDescription => - 'Wähle aus, wie mehrere Künstler in eingebetteten Tags geschrieben sind.'; - - @override - String get optionsArtistTagModeJoined => 'Einzelne beigefügte Werte'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Einen Künstler wert wie \"Artist A, Artist B\" für maximale Spieler-Kompatibilität schreiben.'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Tags für FLAC/Opus aufteilen'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Schreibe einen Künstler Tag pro Künstler für FLAC und Opus; MP3 und M4A bleiben beigetreten.'; - - @override - String get optionsExtensionStore => 'Erweiterungs-Repo'; - - @override - String get optionsExtensionStoreSubtitle => - 'Repo-Tab in der Navigation anzeigen'; - - @override - String get optionsCheckUpdates => 'Nach Updates suchen'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Benachrichtigen, wenn neue Version verfügbar'; - - @override - String get optionsUpdateChannel => 'Update-Kanal'; - - @override - String get optionsUpdateChannelStable => 'Nur stabile Versionen'; - - @override - String get optionsUpdateChannelPreview => 'Vorschau-Versionen erhalten'; - - @override - String get optionsUpdateChannelWarning => - 'Vorschau kann Fehler oder unvollständige Funktionen enthalten'; - - @override - String get optionsClearHistory => 'Download-Verlauf löschen'; - - @override - String get optionsClearHistorySubtitle => - 'Alle heruntergeladenen Titel aus dem Verlauf entfernen'; - - @override - String get optionsDetailedLogging => 'Detaillierte Protokollierung'; - - @override - String get optionsDetailedLoggingOn => - 'Detaillierte Logs werden aufgezeichnet'; - - @override - String get optionsDetailedLoggingOff => 'Für Fehlerberichte aktivieren'; - - @override - String get extensionsTitle => 'Erweiterungen'; - - @override - String get extensionsDisabled => 'Deaktiviert'; - - @override - String extensionsVersion(String version) { - return 'Version $version'; - } - - @override - String get extensionsUninstall => 'Deinstallieren'; - - @override - String get storeTitle => 'Erweiterungs-Repo'; - - @override - String get storeSearch => 'Erweiterungen suchen...'; - - @override - String get storeInstall => 'Installieren'; - - @override - String get storeInstalled => 'Installiert'; - - @override - String get storeUpdate => 'Aktualisieren'; - - @override - String get aboutTitle => 'Über'; - - @override - String get aboutContributors => 'Mitwirkende'; - - @override - String get aboutMobileDeveloper => 'Mobile-Version Entwickler'; - - @override - String get aboutOriginalCreator => 'Schöpfer des ursprünglichen SpotiFLAC'; - - @override - String get aboutLogoArtist => - 'Der talentierte Künstler, der unser wunderschönes App-Logo entworfen hat!'; - - @override - String get aboutTranslators => 'Übersetzer'; - - @override - String get aboutSpecialThanks => 'Besonderer Dank'; - - @override - String get aboutLinks => 'Links'; - - @override - String get aboutMobileSource => 'Mobiler Quellcode'; - - @override - String get aboutPCSource => 'PC Quellcode'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => 'Problem melden'; - - @override - String get aboutReportIssueSubtitle => 'Melde Probleme, die dir auffallen'; - - @override - String get aboutFeatureRequest => 'Feature vorschlagen'; - - @override - String get aboutFeatureRequestSubtitle => - 'Schlage neue Funktionen für die App vor'; - - @override - String get aboutTelegramChannel => 'Telegram Kanal'; - - @override - String get aboutTelegramChannelSubtitle => 'Ankündigungen und Updates'; - - @override - String get aboutTelegramChat => 'Telegram Community'; - - @override - String get aboutTelegramChatSubtitle => 'Mit anderen Nutzern chatten'; - - @override - String get aboutSocial => 'Sozial'; - - @override - String get aboutApp => 'App'; - - @override - String get aboutVersion => 'Version'; - - @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'Ersteller von I Don\'t Have Spotify (IDHS). Der Fallback-Link-Resolver, der den Tag rettet!'; - - @override - String get aboutAppDescription => - 'Musik-Metadaten durchsuchen, Erweiterungen verwalten und deine Bibliothek organisieren.'; - - @override - String get artistAlbums => 'Alben'; - - @override - String get artistSingles => 'Singles & EPs'; - - @override - String get artistCompilations => 'Zusammenstellungen'; - - @override - String get artistPopular => 'Beliebt'; - - @override - String artistMonthlyListeners(String count) { - return '$count monatliche Hörer'; - } - - @override - String get trackMetadataService => 'Anbieter'; - - @override - String get trackMetadataPlay => 'Abspielen'; - - @override - String get trackMetadataShare => 'Teilen'; - - @override - String get trackMetadataDelete => 'Löschen'; - - @override - String get setupGrantPermission => 'Berechtigung erlauben'; - - @override - String get setupSkip => 'Vorerst überspringen'; - - @override - String get setupStorageAccessRequired => 'Speicherzugriff erforderlich'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11+ benötigt die Berechtigung „Auf alle Dateien“, um Dateien im ausgewählten Download-Ordner zu speichern.'; - - @override - String get setupOpenSettings => 'Einstellungen öffnen'; - - @override - String get setupPermissionDeniedMessage => - 'Berechtigung verweigert. Bitte erteile alle Berechtigungen um fortzufahren.'; - - @override - String setupPermissionRequired(String permissionType) { - return '$permissionType-Berechtigung erforderlich'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return '$permissionType-Berechtigung ist erforderlich für\ndie beste Benutzererfahrung. Du kannst dies später in den Einstellungen ändern.'; - } - - @override - String get setupUseDefaultFolder => 'Als Standardordner verwenden?'; - - @override - String get setupNoFolderSelected => - 'Kein Ordner ausgewählt. Soll der Standard-Musikordner verwendet werden?'; - - @override - String get setupUseDefault => 'Standard verwenden'; - - @override - String get setupDownloadLocationTitle => 'Speicherort'; - - @override - String get setupDownloadLocationIosMessage => - 'Auf iOS werden Downloads im Dokumentenordner der App gespeichert. Du kannst sie über die Datei-App aufrufen.'; - - @override - String get setupAppDocumentsFolder => 'App-Dokumentenordner'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Empfohlen - zugänglich über die Datei-App'; - - @override - String get setupChooseFromFiles => 'Aus Dateien auswählen'; - - @override - String get setupChooseFromFilesSubtitle => - 'Wähle iCloud oder einen anderen Speicherort'; - - @override - String get setupIosEmptyFolderWarning => - 'iOS-Einschränkung: Leere Ordner können nicht ausgewählt werden. Wähle einen Ordner mit mindestens einer Datei.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive wird nicht unterstützt. Bitte verwende den \"Dokumente\" Ordner.'; - - @override - String get setupDownloadInFlac => - 'Musik in verlustfreier und Hi-Res-Qualität herunterladen'; - - @override - String get setupStorageGranted => 'Speicherberechtigung erlaubt!'; - - @override - String get setupStorageRequired => 'Speicherzugriff erforderlich'; - - @override - String get setupStorageDescription => - 'SpotiFLAC benötigt Speicherrechte, um die heruntergeladenen Musikdateien zu speichern.'; - - @override - String get setupNotificationGranted => - 'Benachrichtigungs-Berechtigung erteilt'; - - @override - String get setupNotificationEnable => 'Benachrichtigungen aktivieren'; - - @override - String get setupFolderChoose => 'Speicherort auswählen'; - - @override - String get setupFolderDescription => - 'Wähle einen Ordner, in dem die heruntergeladene Musik gespeichert wird.'; - - @override - String get setupSelectFolder => 'Ordner wählen'; - - @override - String get setupEnableNotifications => 'Benachrichtigungen aktivieren'; - - @override - String get setupNotificationBackgroundDescription => - 'Erhalte Benachrichtigungen über den Fortschritt und die Fertigstellung deiner Downloads, selbst wenn die App im Hintergrund läuft.'; - - @override - String get setupSkipForNow => 'Vorerst überspringen'; - - @override - String get setupNext => 'Weiter'; - - @override - String get setupGetStarted => 'Los geht‘s'; - - @override - String get setupAllowAccessToManageFiles => - 'Bitte aktiviere \"Zugriff auf alle Dateien erlauben\" auf dem nächsten Bildschirm.'; - - @override - String get setupLanguageTitle => 'Sprache auswählen'; - - @override - String get setupLanguageDescription => - 'Wählen deine bevorzugte Sprache für die App. Dies kann später in den Einstellungen geändert werden.'; - - @override - String get setupLanguageSystemDefault => 'Systemstandard'; - - @override - String get dialogCancel => 'Abbrechen'; - - @override - String get dialogSave => 'Speichern'; - - @override - String get dialogDelete => 'Löschen'; - - @override - String get dialogRetry => 'Wiederholen'; - - @override - String get dialogClear => 'Leeren'; - - @override - String get dialogDone => 'Fertig'; - - @override - String get dialogImport => 'Importieren'; - - @override - String get dialogDownload => 'Herunterladen'; - - @override - String get previewPlay => 'Vorschau abspielen'; - - @override - String get previewStop => 'Vorschau stoppen'; - - @override - String get previewUnavailable => 'Preview unavailable'; - - @override - String get dialogDiscard => 'Verwerfen'; - - @override - String get dialogRemove => 'Entfernen'; - - @override - String get dialogUninstall => 'Deinstallieren'; - - @override - String get dialogDiscardChanges => 'Änderungen verwerfen?'; - - @override - String get dialogUnsavedChanges => - 'Du hast ungespeicherte Änderungen. Möchtest du sie verwerfen?'; - - @override - String get dialogClearAll => 'Alles löschen'; - - @override - String get dialogRemoveExtension => 'Erweiterung entfernen'; - - @override - String get dialogRemoveExtensionMessage => - 'Bist du sicher, dass du diese Erweiterung entfernen möchtest? Diese Aktion kann nicht rückgängig gemacht werden.'; - - @override - String get dialogUninstallExtension => 'Erweiterung deinstallieren?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Bist du sicher, dass du $extensionName entfernen möchtest?'; - } - - @override - String get dialogClearHistoryTitle => 'Verlauf löschen'; - - @override - String get dialogClearHistoryMessage => - 'Bist du sicher, dass du den gesamten Downloadverlauf löschen möchtest? Dies kann nicht rückgängig gemacht werden.'; - - @override - String get dialogDeleteSelectedTitle => 'Ausgewählte löschen'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Tracks', - one: 'Track', - ); - return 'Lösche $count $_temp0 aus dem Verlauf?\n\nDies löscht auch die Dateien aus dem Speicher.'; - } - - @override - String get dialogImportPlaylistTitle => 'Playlist importieren'; - - @override - String dialogImportPlaylistMessage(int count) { - return '$count Titel gefunden hinzufügen?'; - } - - @override - String csvImportTracks(int count) { - return '$count Titel aus CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return '\"$trackName\" hinzugefügt'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return '$count Titel hinzugefügt'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" bereits heruntergeladen'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" existiert bereits in deiner Bibliothek'; - } - - @override - String get snackbarHistoryCleared => 'Verlauf gelöscht'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return '$count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Datei kann nicht geöffnet werden: $error'; - } - - @override - String get snackbarViewQueue => 'Warteschlange anzeigen'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform URL in die Zwischenablage kopiert'; - } - - @override - String get snackbarFileNotFound => 'Datei nicht gefunden'; - - @override - String get snackbarSelectExtFile => 'Bitte wähle eine .spotiflac-ext Datei'; - - @override - String get snackbarProviderPrioritySaved => 'Anbieterpriorität gespeichert'; - - @override - String get snackbarMetadataProviderSaved => - 'Priorität des Metadaten-Anbieters gespeichert'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName installiert.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName aktualisiert.'; - } - - @override - String get snackbarFailedToInstall => - 'Erweiterung konnte nicht installiert werden'; - - @override - String get snackbarFailedToUpdate => - 'Erweiterung konnte nicht aktualisiert werden'; - - @override - String get errorRateLimited => 'Anfragelimit überschritten'; - - @override - String get errorRateLimitedMessage => - 'Zu viele Anfragen. Bitte warte einen Moment, bevor du es erneut suchst.'; - - @override - String get errorNoTracksFound => 'Keine Titel gefunden'; - - @override - String get searchEmptyResultSubtitle => 'Try another keyword'; - - @override - String get errorUrlNotRecognized => 'Link wurde nicht erkannt'; - - @override - String get errorUrlNotRecognizedMessage => - 'Dieser Link ist inkompatibel. Prüfe die URL und stelle sicher, dass eine kompatible Erweiterung installiert ist.'; - - @override - String get errorUrlFetchFailed => - 'Laden fehlgeschlagen. Bitte erneut versuchen.'; - - @override - String errorMissingExtensionSource(String item) { - return 'Kann $item nicht laden wegen fehlender Erweiterungsquelle'; - } - - @override - String get actionPause => 'Pause'; - - @override - String get actionResume => 'Fortfahren'; - - @override - String get actionCancel => 'Abbrechen'; - - @override - String get actionSelectAll => 'Alles Auswählen'; - - @override - String get actionDeselect => 'Alle abwählen'; - - @override - String selectionSelected(int count) { - return '$count ausgewählt'; - } - - @override - String get selectionAllSelected => 'Alle Titel sind ausgewählt'; - - @override - String get selectionSelectToDelete => 'Titel zum Löschen wählen'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Lade Metadaten... $current/$total'; - } - - @override - String get progressReadingCsv => 'CSV wird gelesen...'; - - @override - String get searchSongs => 'Titel'; - - @override - String get searchArtists => 'Künstler'; - - @override - String get searchAlbums => 'Alben'; - - @override - String get searchPlaylists => 'Playlists'; - - @override - String get searchSortTitle => 'Ergebnisse sortieren'; - - @override - String get searchSortDefault => 'Standard'; - - @override - String get searchSortTitleAZ => 'Titel (A-Z)'; - - @override - String get searchSortTitleZA => 'Titel (Z-A)'; - - @override - String get searchSortArtistAZ => 'Künstler (A-Z)'; - - @override - String get searchSortArtistZA => 'Künstler (Z-A)'; - - @override - String get searchSortDurationShort => 'Dauer (kürzeste)'; - - @override - String get searchSortDurationLong => 'Dauer (längste)'; - - @override - String get searchSortDateOldest => 'Veröffentlichungsdatum (älteste)'; - - @override - String get searchSortDateNewest => 'Veröffentlichungsdatum (Neueste)'; - - @override - String get tooltipPlay => 'Abspielen'; - - @override - String get filenameFormat => 'Dateinamenformat'; - - @override - String get filenameShowAdvancedTags => 'Erweiterte Tags anzeigen'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Formatierte Tags für Track-Padding und Datumsmuster aktivieren'; - - @override - String get folderOrganizationNone => 'Keine Organisation'; - - @override - String get folderOrganizationByPlaylist => 'Nach Playlist'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Ordner für jede Playlist trennen'; - - @override - String get folderOrganizationByArtist => 'Nach Künstler'; - - @override - String get folderOrganizationByAlbum => 'Nach Album'; - - @override - String get folderOrganizationByArtistAlbum => 'Künstler/Album'; - - @override - String get folderOrganizationDescription => - 'Heruntergeladene Dateien in Ordner organisieren'; - - @override - String get folderOrganizationNoneSubtitle => - 'Alle Dateien im Download-Ordner'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Trenne Ordner nach Künstler'; - - @override - String get folderOrganizationByAlbumSubtitle => 'Trenne Ordner nach Album'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Verschachtelte Ordner für Künstler und Album'; - - @override - String get updateAvailable => 'Update verfügbar'; - - @override - String get updateLater => 'Später'; - - @override - String get updateStartingDownload => 'Download wird gestartet...'; - - @override - String get updateDownloadFailed => 'Download fehlgeschlagen'; - - @override - String get updateFailedMessage => - 'Das Update konnte nicht heruntergeladen werden'; - - @override - String get updateNewVersionReady => 'Eine neue Version ist verfügbar'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Aktuell'; - - @override - String get updateNew => 'Neu'; - - @override - String get updateDownloading => 'Wird heruntergeladen...'; - - @override - String get updateWhatsNew => 'Was ist neu'; - - @override - String get updateDownloadInstall => 'Herunterladen & Installieren'; - - @override - String get updateDontRemind => 'Nicht erinnern'; - - @override - String get providerPriorityTitle => 'Anbieterpriorität'; - - @override - String get providerPriorityDescription => - 'Ziehen, um Download-Anbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn Titel heruntergeladen werden.'; - - @override - String get providerPriorityInfo => - 'Wenn kein Titel bei dem ersten Anbieter nicht verfügbar ist, wird die App automatisch den nächsten versuchen.'; - - @override - String get providerPriorityFallbackExtensionsDescription => - 'Wähle aus, welche installierten Download-Erweiterungen beim automatischen Fallback verwendet werden sollen.'; - - @override - String get providerPriorityFallbackExtensionsHint => - 'Hier werden nur aktivierte Erweiterungen mit Download-Provider-Funktion aufgelistet.'; - - @override - String get providerExtension => 'Erweiterung'; - - @override - String get metadataProviderPriorityTitle => 'Metadaten Priorität'; - - @override - String get metadataProviderPriorityDescription => - 'Ziehe, um Metadatenanbieter neu zu ordnen. Die App versucht Anbieter von oben nach unten, wenn sie nach Tracks suchen und Metadaten abrufen.'; - - @override - String get metadataProviderPriorityInfo => - 'Deezer hat keine Limits und wird als primäre empfohlen. Spotify kann nach vielen Anfragen begrenzen.'; - - @override - String get logTitle => 'Protokolle'; - - @override - String get logCopied => 'Logs in Zwischenablage kopiert'; - - @override - String get logSearchHint => 'Logs durchsuchen ...'; - - @override - String get logFilterLevel => 'Stufe'; - - @override - String get logFilterSection => 'Filter'; - - @override - String get logShareLogs => 'Logs teilen'; - - @override - String get logClearLogs => 'Logs löschen'; - - @override - String get logClearLogsTitle => 'Logs leeren'; - - @override - String get logClearLogsMessage => - 'Bist du dir sicher, dass Sie alle Logs löschen möchtest?'; - - @override - String get logFilterBySeverity => 'Logs nach Schweregrad filtern'; - - @override - String get logNoLogsYet => 'Noch keine Logs'; - - @override - String get logNoLogsYetSubtitle => - 'Logs werden hier angezeigt, während du die App benutzt'; - - @override - String logEntriesFiltered(int count) { - return 'Einträge ($count gefiltert)'; - } - - @override - String logEntries(int count) { - return '$count Einträge'; - } - - @override - String get channelStable => 'Stabil'; - - @override - String get channelPreview => 'Vorschau'; - - @override - String get sectionSearchSource => 'Suchquelle'; - - @override - String get sectionDownload => 'Herunterladen'; - - @override - String get sectionPerformance => 'Performance'; - - @override - String get sectionApp => 'App'; - - @override - String get sectionData => 'Daten'; - - @override - String get sectionDebug => 'Debug'; - - @override - String get sectionService => 'Anbieter'; - - @override - String get sectionAudioQuality => 'Audioqualität'; - - @override - String get sectionFileSettings => 'Datei-Einstellungen'; - - @override - String get sectionLyrics => 'Lyrics'; - - @override - String get lyricsMode => 'Lyrics-Modus'; - - @override - String get lyricsModeDescription => - 'Wähle wie Songtexte mit deinen Downloads gespeichert werden'; - - @override - String get lyricsModeEmbed => 'In Datei einbetten'; - - @override - String get lyricsModeEmbedSubtitle => 'Lyrics in FLAC Metadaten gespeichert'; - - @override - String get lyricsModeExternal => 'Externe .lrc Datei'; - - @override - String get lyricsModeExternalSubtitle => - 'Separate .lrc Datei für Player wie Samsung Music'; - - @override - String get lyricsModeBoth => 'Beides'; - - @override - String get lyricsModeBothSubtitle => - 'Lyrics einbetten und als .lrc speichern'; - - @override - String get sectionColor => 'Farbe'; - - @override - String get sectionTheme => 'Design'; - - @override - String get sectionLayout => 'Layout'; - - @override - String get sectionLanguage => 'Sprache'; - - @override - String get appearanceLanguage => 'App Sprache'; - - @override - String get settingsAppearanceSubtitle => 'Design, Farben, Anzeige'; - - @override - String get settingsDownloadSubtitle => 'Anbieter, Qualität, Rückfall'; - - @override - String get settingsExtensionsSubtitle => 'Download-Anbieter verwalten'; - - @override - String get settingsLogsSubtitle => 'App-Logs zum Debuggen anzeigen'; - - @override - String get loadingSharedLink => 'Link wird geladen...'; - - @override - String get pressBackAgainToExit => - 'Drücke wieder \"zurück\" um die App zu beenden'; - - @override - String downloadAllCount(int count) { - return 'Alle $count Titel herunterladen'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Titel', - one: '1 Titel', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'Dateipfad kopieren'; - - @override - String get trackRemoveFromDevice => 'Vom Gerät entfernen'; - - @override - String get trackLoadLyrics => 'Lade Lyrics'; - - @override - String get trackMetadata => 'Metadaten'; - - @override - String get trackFileInfo => 'Datei-Info'; - - @override - String get trackLyrics => 'Lyrics'; - - @override - String get trackFileNotFound => 'Datei nicht gefunden'; - - @override - String get trackOpenInDeezer => 'In Deezer öffnen'; - - @override - String get trackOpenInSpotify => 'In Spotify öffnen'; - - @override - String get trackTrackName => 'Name des Titels'; - - @override - String get trackArtist => 'Künstler'; - - @override - String get trackAlbumArtist => 'Album Künstler'; - - @override - String get trackAlbum => 'Album'; - - @override - String get trackTrackNumber => 'Titelnummer'; - - @override - String get trackDiscNumber => 'CD-Nummer'; - - @override - String get trackDuration => 'Länge'; - - @override - String get trackAudioQuality => 'Audioqualität'; - - @override - String get libraryQualityLabelFileFormat => 'File format'; - - @override - String get trackReleaseDate => 'Erscheinungsdatum'; - - @override - String get trackGenre => 'Genre'; - - @override - String get trackLabel => 'Label'; - - @override - String get trackCopyright => 'Urheberrecht'; - - @override - String get trackDownloaded => 'Heruntergeladen'; - - @override - String get trackCopyLyrics => 'Lyrics kopieren'; - - @override - String trackLyricsSource(String source) { - return 'Quelle: $source'; - } - - @override - String get trackLyricsNotAvailable => - 'Lyrics sind für diesen Titel nicht verfügbar'; - - @override - String get trackLyricsNotInFile => 'Keine Lyrics in dieser Datei gefunden'; - - @override - String get trackFetchOnlineLyrics => 'Online abrufen'; - - @override - String get trackLyricsTimeout => - 'Anfrage Timeout. Versuche es später erneut.'; - - @override - String get trackLyricsLoadFailed => 'Fehler beim Laden der Lyrics'; - - @override - String get trackEmbedLyrics => 'Lyrics einbetten'; - - @override - String get trackLyricsEmbedded => 'Lyrics erfolgreich eingebettet'; - - @override - String get trackInstrumental => 'Instrumentalspur'; - - @override - String get trackCopiedToClipboard => 'In Zwischenablage kopiert'; - - @override - String get trackDeleteConfirmTitle => 'Vom Gerät entfernen?'; - - @override - String get trackDeleteConfirmMessage => - 'Dies wird die heruntergeladene Datei dauerhaft löschen und sie aus deinem Verlauf entfernen.'; - - @override - String get dateToday => 'Heute'; - - @override - String get dateYesterday => 'Gestern'; - - @override - String dateDaysAgo(int count) { - return 'Vor $count Tagen'; - } - - @override - String dateWeeksAgo(int count) { - return 'Vor $count Wochen'; - } - - @override - String dateMonthsAgo(int count) { - return 'Vor $count Monaten'; - } - - @override - String get storeFilterAll => 'Alle'; - - @override - String get storeFilterMetadata => 'Metadaten'; - - @override - String get storeFilterDownload => 'Herunterladen'; - - @override - String get storeFilterUtility => 'Utility'; - - @override - String get storeFilterLyrics => 'Lyrics'; - - @override - String get storeFilterIntegration => 'Integration'; - - @override - String get storeClearFilters => 'Filter entfernen'; - - @override - String get storeAddRepoTitle => 'Erweiterungs-Repository hinzufügen'; - - @override - String get storeAddRepoDescription => - 'Gib eine GitHub Repository-URL ein, die eine Registry.json Datei enthält, um Erweiterungen zu durchsuchen und zu installieren.'; - - @override - String get storeRepoUrlLabel => 'Repository-URL'; - - @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; - - @override - String get storeAddRepoButton => 'Repository hinzufügen'; - - @override - String get storeChangeRepoTooltip => 'Repository ändern'; - - @override - String get storeRepoDialogTitle => 'Erweiterungs-Repository'; - - @override - String get storeRepoDialogCurrent => 'Aktuelles Repository:'; - - @override - String get storeNewRepoUrlLabel => 'Neue Repository-URL'; - - @override - String get storeLoadError => 'Fehler beim Laden der Repository'; - - @override - String get storeEmptyNoExtensions => 'Keine Erweiterung verfügbar'; - - @override - String get storeEmptyNoResults => 'Keine Erweiterungen gefunden'; - - @override - String get extensionId => 'ID'; - - @override - String get extensionError => 'Fehler'; - - @override - String get extensionCapabilities => 'Eigenschaften'; - - @override - String get extensionMetadataProvider => 'Metadaten-Anbieter'; - - @override - String get extensionDownloadProvider => 'Download-Anbieter'; - - @override - String get extensionLyricsProvider => 'Lyrics-Anbieter'; - - @override - String get extensionUrlHandler => 'URL Handler'; - - @override - String get extensionQualityOptions => 'Qualitätsoptionen'; - - @override - String get extensionPostProcessingHooks => 'Post-Processing Hooks'; - - @override - String get extensionPermissions => 'Berechtigungen'; - - @override - String get extensionSettings => 'Einstellungen'; - - @override - String get extensionRemoveButton => 'Erweiterung entfernen'; - - @override - String get extensionUpdated => 'Aktualisiert'; - - @override - String get extensionMinAppVersion => 'Min App-Version'; - - @override - String get extensionCustomTrackMatching => - 'Benutzerdefiniertes Track-Matching'; - - @override - String get extensionPostProcessing => 'Post-processing'; - - @override - String extensionHooksAvailable(int count) { - return '$count Hook(s) verfügbar'; - } - - @override - String extensionPatternsCount(int count) { - return '$count Muster'; - } - - @override - String extensionStrategy(String strategy) { - return 'Strategie: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'Provider-Priorität'; - - @override - String get extensionsInstalledSection => 'Installierte Erweiterungen'; - - @override - String get extensionsNoExtensions => 'Keine Erweiterungen installiert'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Installiere .spotiflac-ext Dateien um neue Anbieter hinzuzufügen'; - - @override - String get extensionsInstallButton => 'Erweiterung installieren'; - - @override - String get extensionsInfoTip => - 'Erweiterungen können neue Metadaten und Download-Anbieter hinzufügen. Installiere nur Erweiterungen von vertrauenswürdigen Quellen.'; - - @override - String get extensionsInstalledSuccess => - 'Erweiterung erfolgreich installiert'; - - @override - String extensionsInstalledCount(int count) { - return '$count Erweiterungen erfolgreich installiert'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return '$installed von $attempted Erweiterungen installiert'; - } - - @override - String get extensionsDownloadPriority => 'Download-Priorität'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'Download-Service-Reihenfolge festlegen'; - - @override - String get extensionsFallbackTitle => 'Fallback-Erweiterungen'; - - @override - String get extensionsFallbackSubtitle => - 'Wähle welche installierten Download-Erweiterungen als Fallback verwendet werden sollen'; - - @override - String get extensionsNoDownloadProvider => - 'Keine Erweiterungen mit Download-Provider'; - - @override - String get extensionsMetadataPriority => 'Metadaten Priorität'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Reihenfolge der Such- und Metadaten quellen festlegen'; - - @override - String get extensionsNoMetadataProvider => - 'Keine Erweiterungen mit Metadaten-Anbieter'; - - @override - String get extensionsSearchProvider => 'Such-Provider'; - - @override - String get extensionsNoCustomSearch => - 'Keine Erweiterungen mit benutzerdefinierter Suche'; - - @override - String get extensionsSearchProviderDescription => - 'Wähle den Dienst für die Suche von Titel'; - - @override - String get extensionsCustomSearch => 'Benutzerdefinierte Suche'; - - @override - String get extensionsErrorLoading => 'Fehler beim Laden der Erweiterung'; - - @override - String get qualityFlacLossless => 'FLAC Verlustfrei'; - - @override - String get qualityFlacLosslessSubtitle => '16-bit / 44,1kHz'; - - @override - String get qualityHiResFlac => 'Hi-Res FLAC'; - - @override - String get qualityHiResFlacSubtitle => '24-Bit / bis 96kHz'; - - @override - String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-Bit / bis 192kHz'; - - @override - String get downloadLossy320 => 'Verlustbehaftet 320kbps'; - - @override - String get downloadLossyFormat => 'Verlustbehaftetes Format'; - - @override - String get downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Verlustbehaftetes 320kbps-Format'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => - 'Beste Kompatibilität, ~10MB pro Titel'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Beste mobile Kompatibilität, M4A Container'; - - @override - String get downloadLossyOpus256 => 'Opus 256kbps'; - - @override - String get downloadLossyOpus256Subtitle => 'Beste Qualität, ~8MB pro Titel'; - - @override - String get downloadLossyOpus128 => 'Opus 128kbps'; - - @override - String get downloadLossyOpus128Subtitle => 'Kleinste Größe, ~4MB pro Track'; - - @override - String get downloadAskBeforeDownload => 'Qualität vor Download fragen'; - - @override - String get downloadDirectory => 'Download-Ordner'; - - @override - String get downloadSeparateSinglesFolder => 'Singles Ordner trennen'; - - @override - String get downloadAlbumFolderStructure => 'Album-Ordnerstruktur'; - - @override - String get albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @override - String get downloadUseAlbumArtistForFolders => - 'Album-Künstler für Ordner verwenden'; - - @override - String get downloadUsePrimaryArtistOnly => 'Primärer Künstler nur für Ordner'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - 'Vorgestellte Künstler aus dem Ordnernamen entfernt (z.B. Justin Bieber, Quavo → Justin Bieber)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - 'Vollständiger Künstler für Ordnername'; - - @override - String get downloadSelectQuality => 'Qualität wählen'; - - @override - String get downloadFrom => 'Herunterladen von'; - - @override - String get appearanceAmoledDark => 'AMOLED Schwarz'; - - @override - String get appearanceAmoledDarkSubtitle => 'AMOLED Hintergrund'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => 'Alles löschen'; - - @override - String get queueClearAllMessage => - 'Bist du dir sicher, dass du alle Downloads löschen möchten?'; - - @override - String get settingsAutoExportFailed => - 'Auto-Export fehlgeschlagener Downloads'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Fehlgeschlagene Downloads automatisch in eine TXT-Datei speichern'; - - @override - String get settingsDownloadNetwork => 'Download Netzwerk'; - - @override - String get settingsDownloadNetworkAny => 'WLAN + Mobile Daten'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Nur WLAN'; - - @override - String get settingsDownloadNetworkSubtitle => - 'Wähle aus, welches Netzwerk für Downloads verwendet werden soll. Wenn nur WLAN aktiviert wird, werden Downloads auf mobilen Daten angehalten.'; - - @override - String get settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'Künstler/Album'; - - @override - String get albumFolderArtistAlbumSubtitle => 'Alben/Künster Name/Album Name/'; - - @override - String get albumFolderArtistYearAlbum => 'Künstler / [Year] Album'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Alben/Künster Name/[2005] Album Name/'; - - @override - String get albumFolderAlbumOnly => 'Nur Alben'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Alben/Album Name/'; - - @override - String get albumFolderYearAlbum => '[Year] Album'; - - @override - String get albumFolderYearAlbumSubtitle => 'Alben/[2005] Album Name/'; - - @override - String get albumFolderArtistAlbumSingles => 'Künstler / Album + Singles'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Künstler/Album/ und Künstler/Singles/'; - - @override - String get albumFolderArtistAlbumFlat => 'Künstler / Album (Singles flach)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Künstler/Album/ Und Künstler/Lied.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Ausgewählte löschen'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return '$count $_temp0 aus diesem Album löschen?\n\nDadurch werden auch die Dateien aus dem Speicher gelöscht.'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return '$count ausgewählt'; - } - - @override - String get downloadedAlbumTapToSelect => 'Tippe auf Titel zum Auswählen'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return 'Lösche $count $_temp0'; - } - - @override - String get downloadedAlbumSelectToDelete => 'Titel zum Löschen wählen'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Disc $discNumber'; - } - - @override - String get recentTypeArtist => 'Künstler'; - - @override - String get recentTypeAlbum => 'Album'; - - @override - String get recentTypeSong => 'Titel'; - - @override - String get recentTypePlaylist => 'Playlist'; - - @override - String get recentEmpty => 'Noch keine aktuellen Einträge'; - - @override - String get recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @override - String get recentShowAllDownloads => 'Alle Downloads anzeigen'; - - @override - String recentPlaylistInfo(String name) { - return 'Playlist: $name'; - } - - @override - String get discographyDownload => 'Diskographie herunterladen'; - - @override - String get discographyDownloadAll => 'Alle Herunterladen'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$count Titel von $albumCount Releases'; - } - - @override - String get discographyAlbumsOnly => 'Nur Alben'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count Titel aus $albumCount Alben'; - } - - @override - String get discographySinglesOnly => 'Nur Singles & EPs'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count Titel von $albumCount Singles'; - } - - @override - String get discographySelectAlbums => 'Alben auswählen...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Wähle bestimmte Alben oder Singles'; - - @override - String get discographyFetchingTracks => 'Lade Titel...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return 'Lade $current von $total...'; - } - - @override - String discographySelectedCount(int count) { - return '$count ausgewählt'; - } - - @override - String get discographyDownloadSelected => 'Auswahl herunterladen'; - - @override - String discographyAddedToQueue(int count) { - return '$count Titel zur Warteschlange hinzugefügt'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added hinzugefügt, $skipped bereits heruntergeladen'; - } - - @override - String get discographyNoAlbums => 'Es sind keine Alben verfügbar'; - - @override - String get discographyFailedToFetch => 'Fehler beim Abrufen einiger Alben'; - - @override - String get sectionStorageAccess => 'Speicherzugriff'; - - @override - String get allFilesAccess => 'Zugriff auf alle Dateien'; - - @override - String get allFilesAccessEnabledSubtitle => 'Darf in jeden Ordner schreiben'; - - @override - String get allFilesAccessDisabledSubtitle => 'Nur auf Medienordner begrenzt'; - - @override - String get allFilesAccessDescription => - 'Option bei Schreibfehlern bitte aktivieren (erforderlich ab Android 13).'; - - @override - String get allFilesAccessDeniedMessage => - 'Zugriff verweigert. Bitte aktiviere \"Zugriff auf alle Dateien\" manuell in den Systemeinstellungen.'; - - @override - String get allFilesAccessDisabledMessage => - 'Zugriff auf alle Dateien ist deaktiviert. Die App verwendet nur begrenzten Zugriff auf den Speicher.'; - - @override - String get settingsLocalLibrary => 'Lokale Bibliothek'; - - @override - String get settingsLocalLibrarySubtitle => - 'Musik scannen & Duplikate erkennen'; - - @override - String get settingsCache => 'Speicher & Cache'; - - @override - String get settingsCacheSubtitle => - 'Größe anzeigen und Daten im Cache leeren'; - - @override - String get libraryTitle => 'Lokale Bibliothek'; - - @override - String get libraryScanSettings => 'Scan Einstellungen'; - - @override - String get libraryEnableLocalLibrary => 'Lokale Bibliothek aktivieren'; - - @override - String get libraryEnableLocalLibrarySubtitle => - 'Scan und verfolge deine bestehende Musik'; - - @override - String get libraryFolder => 'Bibliotheksordner'; - - @override - String get libraryFolderHint => 'Tippe um Ordner auszuwählen'; - - @override - String get libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @override - String get libraryShowDuplicateIndicator => 'Duplikat Indikator anzeigen'; - - @override - String get libraryShowDuplicateIndicatorSubtitle => - 'Bei der Suche nach vorhandenen Titeln anzeigen'; - - @override - String get libraryAutoScan => 'Auto-Scan'; - - @override - String get libraryAutoScanSubtitle => - 'Scanne die Bibliothek automatisch nach neuen Dateien'; - - @override - String get libraryAutoScanOff => 'Aus'; - - @override - String get libraryAutoScanOnOpen => 'Bei jeder App Öffnung'; - - @override - String get libraryAutoScanDaily => 'Täglich'; - - @override - String get libraryAutoScanWeekly => 'Wöchentlich'; - - @override - String get libraryActions => 'Aktionen'; - - @override - String get libraryScan => 'Bibliothek scannen'; - - @override - String get libraryScanSubtitle => 'Suche nach Audiodateien'; - - @override - String get libraryScanSelectFolderFirst => 'Wähle zuerst einen Ordner'; - - @override - String get libraryCleanupMissingFiles => 'Fehlende Dateien bereinigen'; - - @override - String get libraryCleanupMissingFilesSubtitle => - 'Verlaufseinträge für Dateien löschen, die nicht mehr existieren'; - - @override - String get libraryClear => 'Bibliothek löschen'; - - @override - String get libraryClearSubtitle => 'Alle gescannten Titel entfernen'; - - @override - String get libraryClearConfirmTitle => 'Bibliothek löschen'; - - @override - String get libraryClearConfirmMessage => - 'Dadurch werden alle gescannten Titel aus deiner Bibliothek entfernt. Deine eigentlichen Musikdateien werden nicht gelöscht.'; - - @override - String get libraryAbout => 'Über die lokale Bibliothek'; - - @override - String get 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.'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Titel', - one: '1 Titel', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Datein', - one: '1 Datei', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Zuletzt gescannt: $time'; - } - - @override - String get libraryLastScannedNever => 'Nie'; - - @override - String get libraryScanning => 'Scannen...'; - - @override - String get libraryScanFinalizing => 'Bibliothek wird aktualisiert...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$progress% von $total Dateien'; - } - - @override - String get libraryInLibrary => 'In Bibliothek'; - - @override - String libraryRemovedMissingFiles(int count) { - return 'Entfernte $count fehlende Dateien aus der Bibliothek'; - } - - @override - String get libraryCleared => 'Bibliothek geleert'; - - @override - String get libraryStorageAccessRequired => 'Speicherzugriff erforderlich'; - - @override - String get libraryStorageAccessMessage => - 'SpotiFLAC benötigt Speicherzugriff, um deine Musikbibliothek zu scannen. Bitte erteile die Berechtigung in den Einstellungen.'; - - @override - String get libraryFolderNotExist => 'Der ausgewählte Ordner existiert nicht'; - - @override - String get librarySourceDownloaded => 'Heruntergeladen'; - - @override - String get librarySourceLocal => 'Lokal'; - - @override - String get libraryFilterAll => 'Alle'; - - @override - String get libraryFilterDownloaded => 'Heruntergeladen'; - - @override - String get libraryFilterLocal => 'Lokal'; - - @override - String get libraryFilterTitle => 'Filter'; - - @override - String get libraryFilterReset => 'Zurücksetzen'; - - @override - String get libraryFilterApply => 'Anwenden'; - - @override - String get libraryFilterSource => 'Quelle'; - - @override - String get libraryFilterQuality => 'Qualität'; - - @override - String get libraryFilterQualityHiRes => 'Hi-Res (24bit)'; - - @override - String get libraryFilterQualityCD => 'CD (16bit)'; - - @override - String get libraryFilterQualityLossy => 'Verlustbehaftet'; - - @override - String get libraryFilterFormat => 'Format'; - - @override - String get libraryFilterMetadata => 'Metadaten'; - - @override - String get libraryFilterMetadataComplete => 'Komplette Metadaten'; - - @override - String get libraryFilterMetadataMissingAny => 'Metadaten fehlen'; - - @override - String get libraryFilterMetadataMissingYear => 'Jahr fehlt'; - - @override - String get libraryFilterMetadataMissingGenre => 'Genre fehlt'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => - 'Fehlender Album-Künstler'; - - @override - String get libraryFilterSort => 'Sortieren'; - - @override - String get libraryFilterSortLatest => 'Neuste'; - - @override - String get libraryFilterSortOldest => 'Älteste'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @override - String get timeJustNow => 'Gerade eben'; - - @override - String timeMinutesAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'vor $count Minuten', - one: 'vor 1 Minute', - ); - return '$_temp0'; - } - - @override - String timeHoursAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'vor $count Stunden', - one: 'vor 1 Stunde', - ); - return '$_temp0'; - } - - @override - String get tutorialWelcomeTitle => 'Willkommen bei SpotiFLAC Mobile!'; - - @override - String get tutorialWelcomeDesc => - 'Lass uns lernen, wie du deine Lieblingsmusik in verlustfreier Qualität herunterlädst. Dieses schnelle Tutorial zeigt dir die Grundlagen.'; - - @override - String get tutorialWelcomeTip1 => - 'Mit einer installierten Erweiterung suchen oder einen unterstützten Link einfügen'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @override - String get tutorialWelcomeTip3 => - 'Automatische Metadaten, Cover und Lyrics einbetten'; - - @override - String get tutorialSearchTitle => 'Suche Musik'; - - @override - String get tutorialSearchDesc => - 'Es gibt zwei einfache Möglichkeiten, Musik zu finden, die du herunterladen möchtest.'; - - @override - String get tutorialDownloadTitle => 'Musik wird heruntergeladen'; - - @override - String get tutorialDownloadDesc => - 'Das Herunterladen von Musik ist einfach und schnell. So funktioniert es.'; - - @override - String get tutorialLibraryTitle => 'Deine Bibliothek'; - - @override - String get tutorialLibraryDesc => - 'Die gesamte heruntergeladene Musik ist in der Bibliothek organisiert.'; - - @override - String get tutorialLibraryTip1 => - 'Fortschritt und Warteschlange im Bibliothek‑Tab anzeigen'; - - @override - String get tutorialLibraryTip2 => - 'Tippe auf einen Titel, um ihn mit deinem Musikplayer abzuspielen'; - - @override - String get tutorialLibraryTip3 => - 'Wechsle zwischen Listen- und Gitteransicht für ein besseres Surfen'; - - @override - String get tutorialExtensionsTitle => 'Erweiterungen'; - - @override - String get tutorialExtensionsDesc => - 'Erweitere die Fähigkeiten der App mit Community-Erweiterungen.'; - - @override - String get tutorialExtensionsTip1 => - 'Im Repo Tab findest du nützliche Erweiterungen'; - - @override - String get tutorialExtensionsTip2 => - 'Neue Download- oder Suchanbieter hinzufügen'; - - @override - String get tutorialExtensionsTip3 => - 'Lyrics, erweiterte Metadaten und mehr Funktionen erhalten'; - - @override - String get tutorialSettingsTitle => 'Passe deine Benutzererfahrung an'; - - @override - String get tutorialSettingsDesc => - 'Personalisiere die App in den Einstellungen nach deiner Präferenz.'; - - @override - String get tutorialSettingsTip1 => - 'Download-Ordner und Ordner-Organisation ändern'; - - @override - String get tutorialSettingsTip2 => - 'Standard Audioqualität und Formateinstellungen festlegen'; - - @override - String get tutorialSettingsTip3 => 'App-Design und Aussehen anpassen'; - - @override - String get tutorialReadyMessage => - 'Das ist alles! Lade jetzt deine Lieblingsmusik herunter.'; - - @override - String get libraryForceFullScan => 'Vollen Neu-Scan erzwingen'; - - @override - String get libraryForceFullScanSubtitle => - 'Alle Dateien erneut scannen und Cache ignorieren'; - - @override - String get cleanupOrphanedDownloads => 'Verwaiste Downloads bereinigen'; - - @override - String get cleanupOrphanedDownloadsSubtitle => - 'Verlaufseinträge für Dateien löschen, die nicht mehr existieren'; - - @override - String cleanupOrphanedDownloadsResult(int count) { - return 'Entfernte $count verwaiste Einträge aus dem Verlauf'; - } - - @override - String get cleanupOrphanedDownloadsNone => - 'Keine verwaisten Einträge gefunden'; - - @override - String get cacheTitle => 'Speicher & Cache'; - - @override - String get cacheSummaryTitle => 'Cache-Übersicht'; - - @override - String get cacheSummarySubtitle => - 'Das Leeren des Caches entfernt nicht heruntergeladene Musikdateien.'; - - @override - String cacheEstimatedTotal(String size) { - return 'Geschätzte Cache-Größe: $size'; - } - - @override - String get cacheSectionStorage => 'Zwischengespeicherte Daten'; - - @override - String get cacheSectionMaintenance => 'Wartung'; - - @override - String get cacheAppDirectory => 'App-Cache Ordner'; - - @override - String get cacheAppDirectoryDesc => - 'HTTP-Antworten, WebView Daten und andere temporäre App-Daten.'; - - @override - String get cacheTempDirectory => 'Temporärer Ordner'; - - @override - String get cacheTempDirectoryDesc => - 'Temporäre Dateien von Downloads und Audio-Konvertierung.'; - - @override - String get cacheCoverImage => 'Cover-Cache'; - - @override - String get cacheCoverImageDesc => - 'Album- und Titelcover heruntergeladen. Werden erneut heruntergeladen.'; - - @override - String get cacheLibraryCover => 'Bibliotheks-Cover-Cache'; - - @override - String get cacheLibraryCoverDesc => - 'Cover aus lokalen Musikdateien extrahiert. Wird beim nächsten Scannen neu extrahiert.'; - - @override - String get libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @override - String get cacheExploreFeed => 'Feed-Cache entdecken'; - - @override - String get cacheExploreFeedDesc => - 'Startseiten-Inhalt (neue Releases, Trends). Wird bei einem Neustart aktualisiert.'; - - @override - String get cacheTrackLookup => 'Titel Such-Cache'; - - @override - String get cacheTrackLookupDesc => - 'Spotify/Deezer Track-ID-Lookups. Das Löschen kann die nächsten Suchergebnisse verlangsamen.'; - - @override - String get cacheCleanupUnusedDesc => - 'Verwaisten Downloadverlauf und Bibliothekseinträge für fehlende Dateien entfernen.'; - - @override - String get cacheNoData => 'Keine gecachten Daten'; - - @override - String cacheSizeWithFiles(String size, int count) { - return '$size in $count Dateien'; - } - - @override - String cacheSizeOnly(String size) { - return '$size'; - } - - @override - String cacheEntries(int count) { - return '$count Einträge'; - } - - @override - String cacheClearSuccess(String target) { - return 'Entfernt: $target'; - } - - @override - String get cacheClearConfirmTitle => 'Cache leeren?'; - - @override - String cacheClearConfirmMessage(String target) { - return 'Dies löscht zwischengespeicherte Daten in $target. Die Musikdateien werden nicht gelöscht.'; - } - - @override - String get cacheClearAllConfirmTitle => 'Gesamten Cache leeren?'; - - @override - String get cacheClearAllConfirmMessage => - 'Dadurch werden alle Cache-Kategorien auf dieser Seite gelöscht. Heruntergeladene Musikdateien werden nicht gelöscht.'; - - @override - String get cacheClearAll => 'Gesamten Cache leeren'; - - @override - String get cacheCleanupUnused => 'Unbenutzte Daten bereinigen'; - - @override - String get cacheCleanupUnusedSubtitle => - 'Verwaisten Downloadverlauf und fehlende Bibliothekseinträge löschen'; - - @override - String cacheCleanupResult(int downloadCount, int libraryCount) { - return 'Bereinigung: $downloadCount verwaiste Downloads, $libraryCount fehlende Bibliothekseinträge'; - } - - @override - String get cacheRefreshStats => 'Statistik aktualisieren'; - - @override - String get trackSaveCoverArt => 'Cover speichern'; - - @override - String get trackSaveLyrics => 'Lyrics als .lrc speichern'; - - @override - String get trackSaveLyricsProgress => 'Speichere Lyrics...'; - - @override - String get trackReEnrich => 'Neu-anreichern'; - - @override - String get trackReEnrichOnlineSubtitle => - 'Metadaten online suchen und in Datei einbinden'; - - @override - String get trackReEnrichFieldCover => 'Cover-Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album-Künstler'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Nummer'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Datum & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Alles Auswählen'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @override - String get trackEditMetadata => 'Metadaten bearbeiten'; - - @override - String trackCoverSaved(String fileName) { - return 'Cover in $fileName gespeichert'; - } - - @override - String get trackCoverNoSource => 'Keine Cover Quelle vorhanden'; - - @override - String trackLyricsSaved(String fileName) { - return 'Lyrics in $fileName gespeichert'; - } - - @override - String get trackReEnrichProgress => 'Metadaten neu anreichern...'; - - @override - String get trackReEnrichSearching => 'Suche Metadaten online...'; - - @override - String get trackReEnrichSuccess => 'Metadaten erfolgreich neu angereichert'; - - @override - String get trackReEnrichFfmpegFailed => - 'FFmpeg Metadaten-Einbettung fehlgeschlagen'; - - @override - String get queueFlacAction => 'Warteschlange FLAC'; - - @override - String queueFlacConfirmMessage(int count) { - return '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'; - } - - @override - String get queueFlacNoReliableMatches => - 'Keine zuverlässigen Online-Übereinstimmungen für die Auswahl gefunden'; - - @override - String queueFlacQueuedWithSkipped(int addedCount, int skippedCount) { - return '$addedCount Titel zur Warteschlange hinzugefügt, $skippedCount übersprungen'; - } - - @override - String trackSaveFailed(String error) { - return 'Fehler: $error'; - } - - @override - String get trackConvertFormat => 'Format konvertieren'; - - @override - String get trackConvertTitle => 'Audio konvertieren'; - - @override - String get trackConvertTargetFormat => 'Zielformat'; - - @override - String get trackConvertBitrate => 'Bitrate'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @override - String get trackConvertConfirmTitle => 'Konvertierung bestätigen'; - - @override - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ) { - return 'Konvertieren von $sourceFormat in $targetFormat bei $bitrate?\n\nDie Originaldatei wird nach der Konvertierung gelöscht.'; - } - - @override - String trackConvertConfirmMessageLossless( - String sourceFormat, - String targetFormat, - ) { - return 'Konvertieren von $sourceFormat in $targetFormat? (kein Qualitätsverlust)\n\nDie Originaldatei wird nach der Konvertierung gelöscht.'; - } - - @override - String trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @override - String get trackConvertLosslessHint => - 'Verlustfreie Konvertierung kein Qualitätsverlust'; - - @override - String get trackConvertConverting => 'Konvertiere Audio...'; - - @override - String trackConvertSuccess(String format) { - return 'Konvertiert in $format erfolgreich'; - } - - @override - String get trackConvertFailed => 'Konvertierung fehlgeschlagen'; - - @override - String get cueSplitTitle => 'CUE-Sheet aufteilen'; - - @override - String cueSplitAlbum(String album) { - return 'Album: $album'; - } - - @override - String cueSplitArtist(String artist) { - return 'Künstler: $artist'; - } - - @override - String cueSplitTrackCount(int count) { - return '$count Titel'; - } - - @override - String get cueSplitConfirmTitle => 'CUE-Album aufteilen'; - - @override - String cueSplitConfirmMessage(String album, int count) { - return 'Soll „$album“ in $count einzelne FLAC-Dateien aufgeteilt werden?\n\nDie Dateien werden im selben Ordner gespeichert.'; - } - - @override - String cueSplitSplitting(int current, int total) { - return 'CUE-Sheet wird geteilt... ($current/$total)'; - } - - @override - String cueSplitSuccess(int count) { - return '$count Titel erfolgreich aufgeteilt'; - } - - @override - String get cueSplitFailed => 'CUE-Aufteilung fehlgeschlagen'; - - @override - String get cueSplitNoAudioFile => - 'Audiodatei für dieses CUE-Sheet nicht gefunden'; - - @override - String get cueSplitButton => 'In Titel aufteilen'; - - @override - String get actionCreate => 'Erstellen'; - - @override - String get collectionFoldersTitle => 'Meine Ordner'; - - @override - String get collectionWishlist => 'Wunschliste'; - - @override - String get collectionLoved => 'Lieblingssongs'; - - @override - String get collectionFavoriteArtists => 'Lieblingskünstler'; - - @override - String get collectionPlaylist => 'Playlist'; - - @override - String get collectionAddToPlaylist => 'Zur Playlist hinzufügen'; - - @override - String get collectionCreatePlaylist => 'Playlist erstellen'; - - @override - String get collectionNoPlaylistsYet => 'Noch keine Playlists'; - - @override - String collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Titel', - one: '1 Titel', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Künstler', - one: '1 Künstler', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Zu \"$playlistName \" hinzugefügt'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Bereits in \"$playlistName\"'; - } - - @override - String get collectionPlaylistNameHint => 'Playlist-Name'; - - @override - String get collectionPlaylistNameRequired => 'Playlist-Name ist erforderlich'; - - @override - String get collectionRenamePlaylist => 'Playlist umbenennen'; - - @override - String get collectionDeletePlaylist => 'Playlist löschen'; - - @override - String get collectionPlaylistRenamed => 'Playlist umbenannt'; - - @override - String get collectionWishlistEmptyTitle => 'Wunschliste ist leer'; - - @override - String get collectionWishlistEmptySubtitle => - 'Tippe auf das + bei den Titeln, um sie zum späteren Herunterladen zu speichern'; - - @override - String get collectionLovedEmptyTitle => 'Lieblingssongs sind leer'; - - @override - String get collectionLovedEmptySubtitle => - 'Tippe auf das Herz, um deine Favoriten zu behalten'; - - @override - String get collectionFavoriteArtistsEmptyTitle => - 'Noch keine Lieblingskünstler'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tippe auf das Herz auf einer Künstlerseite, um sie hier zu sehen'; - - @override - String get collectionPlaylistEmptyTitle => 'Die Playlist ist leer'; - - @override - String get collectionPlaylistEmptySubtitle => - 'Drücke lange + auf einem beliebigen Titel, um ihn hier hinzuzufügen'; - - @override - String get collectionRemoveFromPlaylist => 'Von Playlist entfernen'; - - @override - String get collectionRemoveFromFolder => 'Aus Ordner entfernen'; - - @override - String collectionAddedToLoved(String trackName) { - return '\"$trackName\" zu Lieblingssongs hinzugefügt'; - } - - @override - String collectionRemovedFromLoved(String trackName) { - return '\"$trackName\" aus Lieblingssongs entfernt'; - } - - @override - String collectionAddedToWishlist(String trackName) { - return '\"$trackName\" zur Wunschliste hinzugefügt'; - } - - @override - String collectionRemovedFromWishlist(String trackName) { - return '\"$trackName\" aus der Wunschliste entfernt'; - } - - @override - String collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" zu Lieblingskünstlern hinzugefügt'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" entfernt aus Lieblingskünstlern'; - } - - @override - String get trackOptionAddToLoved => 'Zu Lieblingssongs hinzufügen'; - - @override - String get trackOptionRemoveFromLoved => 'Aus Lieblingssongs entfernt'; - - @override - String get trackOptionAddToWishlist => 'Zur Wunschliste hinzufügen'; - - @override - String get trackOptionRemoveFromWishlist => 'Von der Wunschliste entfernen'; - - @override - String get artistOptionAddToFavorites => 'Zu Favoriten hinzufügen'; - - @override - String get artistOptionRemoveFromFavorites => 'Aus Favoriten entfernen'; - - @override - String get collectionPlaylistChangeCover => 'Coverbild ändern'; - - @override - String get collectionPlaylistRemoveCover => 'Cover entfernen'; - - @override - String selectionShareCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return 'Teile $count $_temp0'; - } - - @override - String get selectionShareNoFiles => 'Keine teilbare Dateien gefunden'; - - @override - String selectionConvertCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return 'Konvertiere $count $_temp0'; - } - - @override - String get selectionConvertNoConvertible => - 'Keine konvertierbare Titel ausgewählt'; - - @override - String get selectionBatchConvertConfirmTitle => 'Batch-Konvertierung'; - - @override - String selectionBatchConvertConfirmMessage( - int count, - String format, - String bitrate, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return 'Konvertiere $count $format $_temp0 zu $bitrate?\n\nOriginaldateien werden nach der Konvertierung gelöscht.'; - } - - @override - String selectionBatchConvertConfirmMessageLossless(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return 'Konvertiere $count $_temp0 in $format? (kein Qualitätsverlust)\n\nOriginaldateien werden nach der Konvertierung gelöscht.'; - } - - @override - String selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return '$success von $total Titeln in $format konvertiert'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count heruntergeladen'; - } - - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Ordner benannt nach dem Tag des Albumkünstlers'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Ordner benannt nach dem Tag des Künstlers'; - - @override - String get lyricsProvidersTitle => 'Priorität des Lyrics-Anbieters'; - - @override - String get lyricsProvidersDescription => - 'Lyrics aktivieren, deaktivieren und neu ordnen. Anbieter werden von oben nach unten ausprobiert, bis Lyrics gefunden werden.'; - - @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 '($count) aktiviert'; - } - - @override - String lyricsProvidersDisabledSection(int count) { - return '($count) deaktiviert'; - } - - @override - String get lyricsProvidersAtLeastOne => - 'Mindestens ein Anbieter muss aktiviert bleiben'; - - @override - String get lyricsProvidersSaved => - 'Priorität des Lyrics-Anbieters gespeichert'; - - @override - String get lyricsProvidersDiscardContent => - 'Ungespeicherte Änderungen die verloren gehen.'; - - @override - String get lyricsProviderLrclibDesc => - 'Open-Source-Synchronisierte Lyrics-Datenbank'; - - @override - String get lyricsProviderNeteaseDesc => - 'NetEase Cloud Music (gut für asiatische Lieder)'; - - @override - String get lyricsProviderMusixmatchDesc => - 'Größte Lyrics-Datenbank (mehrsprachig)'; - - @override - String get lyricsProviderAppleMusicDesc => - 'Wort-für-Wort-synchronisierte Lyrics (via Proxy)'; - - @override - String get lyricsProviderQqMusicDesc => - 'QQ Music (gut für chinesische Lieder, via Proxy)'; - - @override - String get lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; - - @override - String get lyricsProviderExtensionDesc => 'Erweiterungsanbieter'; - - @override - String get safMigrationTitle => 'Speicheraktualisierung erforderlich'; - - @override - String get safMigrationMessage1 => - 'SpotiFLAC verwendet jetzt Android Storage Access Framework (SAF) beim Herunterladen. Dies behebt Fehler bei Android 10+.'; - - @override - String get safMigrationMessage2 => - 'Bitte wähle dein Download-Ordner erneut aus, um zum neuen System zu wechseln.'; - - @override - String get safMigrationSuccess => - 'Download-Ordner auf SAF-Modus aktualisiert'; - - @override - String get settingsDonate => 'Unterstütze die Entwicklung'; - - @override - String get settingsDonateSubtitle => 'Kaufe dem Entwickler einen Kaffee'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 => 'Appeinstellungen'; - - @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 repo.'; - } - - @override - String get tooltipLoveAll => 'Alle lieben'; - - @override - String get tooltipAddToPlaylist => 'Zur Wiedergabeliste hinzufügen'; - - @override - String snackbarRemovedTracksFromLoved(int count) { - return '$count Titel von geliebt entfernt'; - } - - @override - String snackbarAddedTracksToLoved(int count) { - return '$count titel zu geliebt hinzugefügt'; - } - - @override - String get dialogDownloadAllTitle => 'Alle Herunterladen'; - - @override - String dialogDownloadAllMessage(int count) { - return '$count titel herunterladen?'; - } - - @override - String get homeSkipAlreadyDownloaded => - 'Bereits heruntergeladene Titel überspringen'; - - @override - String get homeGoToAlbum => 'Zum Album gehen'; - - @override - String get homeAlbumInfoUnavailable => 'Albuminfo nicht verfügbar'; - - @override - String get snackbarLoadingCueSheet => 'CAE-Sheet wird geladen...'; - - @override - String get snackbarMetadataSaved => 'Metadaten erfolgreich gespeichert'; - - @override - String get snackbarFailedToEmbedLyrics => 'Fehler beim Einbinden der Lyrics'; - - @override - String get snackbarFailedToWriteStorage => - 'Fehler beim Zurückschreiben in den Speicher'; - - @override - String snackbarError(String error) { - return 'Fehler: $error'; - } - - @override - String get snackbarNoActionDefined => 'Keine Aktion für Taste definiert'; - - @override - String get noTracksFoundForAlbum => 'Keine Titel in diesem Album gefunden'; - - @override - String get downloadLocationSubtitle => - 'Wählen Sie den Speicherort für Ihre heruntergeladenen Titel'; - - @override - String get storageModeAppFolder => 'App-Ordner (empfohlen)'; - - @override - String get storageModeAppFolderSubtitle => - 'Standardmäßig in Music/SpotiFLAC speichern'; - - @override - String get storageModeSaf => 'Benutzerdefinierter Ordner (SAF)'; - - @override - String get storageModeSafSubtitle => - 'Wähle einen beliebigen Ordner, inklusive SD-Karte'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Verwende $artist, $title, $album, $track, $year, $date, $disc als Platzhalter.'; - } - - @override - String get downloadFilenameInsertTag => 'Tippe, um Tag einzufügen:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles und EPs werden in einem separaten Ordner gespeichert'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles und Alben im selben Ordner gespeichert'; - - @override - String get downloadArtistNameFilters => 'Künstlernamen-Filter'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist-Quellordner'; - - @override - String get downloadCreatePlaylistSourceFolderEnabled => - 'Für jede Playlist wird ein Unterordner erstellt'; - - @override - String get downloadCreatePlaylistSourceFolderDisabled => - 'Alle Titel direkt im Download-Ordner gespeichert'; - - @override - String get downloadCreatePlaylistSourceFolderRedundant => - 'Wird durch die Ordnerorganisationseinstellung verarbeitet'; - - @override - String get downloadSongLinkRegion => 'SongLink-Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Netzwerkkompatibilitätsmodus'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Legacy-HTTP-Endpunkte erlaubt; TLS-Prüfung bleibt aktiviert'; - - @override - String get downloadNetworkCompatibilityModeDisabled => - 'Standard-Netzwerkeinstellungen verwenden'; - - @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'; - - @override - String get downloadEmbedLyricsDisabled => - 'Metadaten-Einbettung zuerst aktivieren'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Übersetzung einschließen'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinesische Übersetzungszeilen enthalten'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original Lyrics verwenden'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Romanisierung einschließen'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanisierungszeilen enthalten'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => - 'Keine Romanisierung'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Personen-Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Sängerlabel für Duette und Gruppentitel enthalten'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standardlyrics ohne Lautsprecher-Labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => 'Rohe Zeitstempel erhalten'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Sichere Line-by-line Apple Music Texte'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Sprache'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (Originalsprache)'; - - @override - String get downloadFilterContributing => 'Mitwirkende Künstler filtern'; - - @override - String get downloadFilterContributingEnabled => - 'Mitwirkende Künstler vom Albumname des Künstlers entfernt'; - - @override - String get downloadFilterContributingDisabled => - 'Volle Album Künstler String verwendet'; - - @override - String get downloadProvidersNoneEnabled => 'Keine Anbieter aktiviert'; - - @override - String get downloadMusixmatchLanguageCode => 'Sprach-Code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Gib einen BCP-47 Sprachcode ein (z.B. en, de, ja), um übersetzte Lyrics von Musixmatch anzufordern.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'WLAN oder mobile Daten verwenden'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads bei mobilen Daten pausieren'; - - @override - String get downloadSongLinkRegionDesc => - 'Region, die beim Auflösen von Titellinks über SongLink verwendet wird. Wähle das Land, in dem der Streaming-Dienste verfügbar sind.'; - - @override - String get snackbarUnsupportedAudioFormat => - 'Nicht unterstütztes Audioformat'; - - @override - String get cacheRefresh => 'Aktualisieren'; - - @override - String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount) { - String _temp0 = intl.Intl.pluralLogic( - trackCount, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - String _temp1 = intl.Intl.pluralLogic( - playlistCount, - locale: localeName, - other: 'Playlists', - one: 'Playlist', - ); - return 'Lade $trackCount $_temp0 von $playlistCount $_temp1?'; - } - - @override - String bulkDownloadPlaylistsButton(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Playlists', - one: 'Playlist', - ); - return 'Lade $count $_temp0 herunter'; - } - - @override - String get bulkDownloadSelectPlaylists => 'Playlist zum Herunterladen wählen'; - - @override - String get snackbarSelectedPlaylistsEmpty => - 'Ausgewählte Playlisten haben keine Titel'; - - @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 => 'Aus online ausfüllen'; - - @override - String get editMetadataAutoFillDesc => - 'Wähle Felder aus, die automatisch aus Online-Metadaten ausgefüllt werden sollen'; - - @override - String get editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @override - String get editMetadataAutoFillFetch => 'Abrufen & Ausfüllen'; - - @override - String get editMetadataAutoFillSearching => 'Online suchen...'; - - @override - String get editMetadataAutoFillNoResults => - 'Keine passenden Metadaten online gefunden'; - - @override - String editMetadataAutoFillDone(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Felder', - one: 'Feld', - ); - return '$count $_temp0 aus Online-Metadaten gefüllt'; - } - - @override - String get editMetadataAutoFillNoneSelected => - 'Wähle mindestens ein Feld zum automatischen Ausfüllen aus'; - - @override - String get editMetadataFieldTitle => 'Titel'; - - @override - String get editMetadataFieldArtist => 'Künstler'; - - @override - String get editMetadataFieldAlbum => 'Album'; - - @override - String get editMetadataFieldAlbumArtist => 'Album Künstler'; - - @override - String get editMetadataFieldDate => 'Datum'; - - @override - String get editMetadataFieldTrackNum => 'Titel #'; - - @override - String get editMetadataFieldDiscNum => 'Disk #'; - - @override - String get editMetadataFieldGenre => 'Genre'; - - @override - String get editMetadataFieldIsrc => 'ISRC'; - - @override - String get editMetadataFieldLabel => 'Label'; - - @override - String get editMetadataFieldCopyright => 'Urheberrecht'; - - @override - String get editMetadataFieldCover => 'Cover-Art'; - - @override - String get editMetadataSelectAll => 'Alle'; - - @override - String get editMetadataSelectEmpty => 'Nur leer'; - - @override - String queueDownloadingCount(int count) { - return '$count werden heruntergeladen'; - } - - @override - String get queueFilteringIndicator => 'Filtere...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Titel', - one: '1 Titel', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Alben', - one: '1 Album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'Keine Album-Downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Lade mehrere Titel eines Albums herunter, um sie hier zu sehen'; - - @override - String get queueEmptySingles => 'Kein Single Download'; - - @override - String get queueEmptySinglesSubtitle => - 'Einzelne Titel-Downloads werden hier angezeigt'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'Kein Download-Verlauf'; - - @override - String get queueEmptyHistorySubtitle => - 'Heruntergeladene Titel werden hier angezeigt'; - - @override - String get selectionAllPlaylistsSelected => 'Alle Playlists ausgewählt'; - - @override - String get selectionTapPlaylistsToSelect => - 'Zum Auswählen auf Playlists tippen'; - - @override - String get selectionSelectPlaylistsToDelete => 'Playlist zum Löschen wählen'; - - @override - String get audioAnalysisTitle => 'Audio-Qualitätsanalyse'; - - @override - String get audioAnalysisDescription => - 'Verlustfreie Qualität mit Spektrumanalyse überprüfen'; - - @override - String get audioAnalysisAnalyzing => 'Audio wird analysiert...'; - - @override - String get audioAnalysisSampleRate => 'Abtastrate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Dekodiertes Format'; - - @override - String get audioAnalysisBitDepth => 'Bit-Tiefe'; - - @override - String get audioAnalysisChannels => 'Kanäle'; - - @override - String get audioAnalysisDuration => 'Länge'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Größe'; - - @override - String get audioAnalysisDynamicRange => 'Dynamischer Bereich'; - - @override - String get audioAnalysisPeak => 'Maximum'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'Kein Clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spektralschnitt'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Pro Kanal Statistik'; - - @override - String get audioAnalysisSamples => 'Proben'; - - @override - String get audioAnalysisRescan => 'Neu analysieren'; - - @override - String get audioAnalysisRescanning => 'Audio wird analysiert...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Anbieter'; - - @override - String get extensionsHomeFeedDescription => - 'Wählen Sie die Erweiterung aus, die den Start-Feed auf dem Hauptbildschirm anzeigt'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatisch die besten verfügbaren auswählen'; - - @override - String get extensionsHomeFeedOff => 'Aus'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Start-Feed nicht auf dem Hauptbildschirm anzeigen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return '$extensionName Home Feed verwenden'; - } - - @override - String get extensionsNoHomeFeedExtensions => - 'Keine Erweiterungen mit Home-Feed'; - - @override - String get cancelDownloadTitle => 'Download abbrechen?'; - - @override - String cancelDownloadContent(String trackName) { - return 'Dadurch wird der aktive Download für \"$trackName\" abgebrochen.'; - } - - @override - String get cancelDownloadKeep => 'Behalten'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => - 'Fehler beim Speichern der Metadaten über FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Metadaten konnten nicht zurück in den Speicher geschrieben werden'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Fehler beim Öffnen des Ordners: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return '$trackName wird heruntergeladen'; - } - - @override - String notifFinalizingTrack(String trackName) { - return '$trackName wird fertiggestellt'; - } - - @override - String get notifEmbeddingMetadata => 'Bette Metadaten ein...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Bereits in der Bibliothek ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Bereits in der Bibliothek'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download abgeschlossen ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download abgeschlossen'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads abgeschlossen ($completed fertig, $failed fehlgeschlagen)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'Alle Downloads abgeschlossen'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Titel erfolgreich heruntergeladen', - one: '1 Titel erfolgreich heruntergeladen', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed Titel heruntergeladen', - one: '1 Titel heruntergeladen', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed fehlgeschlagen', - one: '1 fehlgeschlagen', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads abgebrochen'; - - @override - String notifDownloadsCanceledBody(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count Downloads vom Nutzer abgebrochen', - one: '1 Download vom Nutzer abgebrochen', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanne lokale Bibliothek'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total Dateien • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned gescannte Dateien • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Bibliotheksscan abgeschlossen'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count titel indiziert'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count ausgeschlossen'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count Fehler'; - } - - @override - String get notifLibraryScanFailed => 'Bibliotheksscan fehlgeschlagen'; - - @override - String get notifLibraryScanCancelled => 'Bibliotheksscan abgebrochen'; - - @override - String get notifLibraryScanStopped => 'Scan wurde vor Abschluss gestoppt.'; - - @override - String notifDownloadingUpdate(String version) { - return 'SpotiFLAC Mobile v$version wird heruntergeladen'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Update bereit'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version heruntergeladen. Zum Installieren tippen.'; - } - - @override - String get notifUpdateFailed => 'Update fehlgeschlagen'; - - @override - String get notifUpdateFailedBody => - 'Update konnte nicht heruntergeladen werden. Versuche es später erneut.'; - - @override - String get searchTracks => 'Titel'; - - @override - String get homeSearchHintDefault => - 'Unterstützte URL einfügen oder suchen...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Mit $providerName suchen...'; - } - - @override - String get homeImportCsvTooltip => 'CSV-Datei importieren'; - - @override - String get homeChangeSearchProviderTooltip => 'Suchanbieter ändern'; - - @override - String get actionPaste => 'Einfügen'; - - @override - String get tutorialSearchHint => 'Einfügen oder suchen...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download abgeschlossen'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download wird ausgeführt'; - - @override - String get tutorialStartDownloadSemantics => 'Download starten'; - - @override - String get optionsEmbedMetadata => 'Eingebettete Metadaten'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Schreibe Metadaten, Cover und eingebettete Songtexte in Dateien'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Deaktiviert (erweitert): Metadateneinbettung überspringen'; - - @override - String get trackCoverNoEmbeddedArt => - 'Kein eingebettetes Albumcover gefunden'; - - @override - String get trackCoverReplace => 'Cover ersetzen'; - - @override - String get trackCoverPick => 'Cover auswählen'; - - @override - String get trackCoverClearSelected => 'Ausgewähltes Cover löschen'; - - @override - String get trackCoverCurrent => 'Aktuelles Cover'; - - @override - String get trackCoverSelected => 'Ausgewähltes Cover'; - - @override - String get trackCoverReplaceNotice => - 'Das ausgewählte Cover ersetzt das aktuell eingebettete Cover, wenn auf speichern gedrückt wird.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Download wird abgeschlossen'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Heruntergeladene Datei fehlt'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download abgeschlossen'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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 'Wähle Akzentfarbe $hex'; - } - - @override - String get logAutoScrollOn => 'Auto-Scrollen AN'; - - @override - String get logAutoScrollOff => 'Auto-Scrollen AUS'; - - @override - String get logCopyLogs => 'Logs kopieren'; - - @override - String get logClearSearch => 'Suche löschen'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKIERUNG ERKANNT'; - - @override - String get logIssueIspBlockingDescription => - 'Dein ISP blockiert möglicherweise den Zugriff auf den Download Dienst'; - - @override - String get logIssueIspBlockingSuggestion => - 'Versuche es einem VPN oder ändere DNS auf 1.1.1.1 oder 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'LIMIT ERKANNT'; - - @override - String get logIssueRateLimitedDescription => - 'Zu viele Anfragen an den Dienst'; - - @override - String get logIssueRateLimitedSuggestion => - 'Warte ein paar Minuten, bevor du es erneut versuchst'; - - @override - String get logIssueNetworkErrorLabel => 'NETZWERKFEHLER'; - - @override - String get logIssueNetworkErrorDescription => 'Verbindungsprobleme erkannt'; - - @override - String get logIssueNetworkErrorSuggestion => - 'Überprüfe deine Internetverbindung'; - - @override - String get logIssueTrackNotFoundLabel => 'TITEL NICHT GEFUNDEN'; - - @override - String get logIssueTrackNotFoundDescription => - 'Einige Titel konnten auf Download-Diensten nicht gefunden werden'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'Der Titel ist möglicherweise nicht in verlustfreier Qualität verfügbar'; - - @override - String get clickableLookingUpArtist => 'Künstler wird gesucht...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type Informationen nicht verfügbar'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Info'; - - @override - String get extensionUtilityFunctions => 'Hilfsfunktionen'; - - @override - String get actionDismiss => 'Schließen'; - - @override - String get setupChangeFolderTooltip => 'Ordner ändern'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Öffne Track $trackName von $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return '$itemType $name öffnen'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Items', - one: 'Item', - ); - return 'Öffne $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Öffne Album $albumName von $artistName, $trackCount Titel'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName von $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Wähle Album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Album öffnen $albumName'; - } - - @override - String get settingsFiles => 'Dateien & Ordner'; - - @override - String get settingsFilesSubtitle => 'Speicherort, Dateiname, Ordnerstruktur'; - - @override - String get settingsMetadata => 'Metadaten'; - - @override - String get settingsMetadataSubtitle => - 'Cover Art, Tags, ReplayGain, Anbieter'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Einbetten, Modus, Anbieter, Sprachoptionen'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, Daten, Erweiterungsrepo, Debug'; - - @override - String get sectionMetadataProviders => 'Anbieter'; - - @override - String get sectionDuplicates => 'Duplikate'; - - @override - String get sectionLyricsProviderOptions => 'Anbieter-Optionen'; - - @override - String get metadataProvidersTitle => 'Priorität des Metadaten-Anbieters'; - - @override - String get metadataProvidersSubtitle => - 'Zieh, um Such- und Metadatenquellenreihenfolge zu setzen'; - - @override - String get downloadDeduplication => 'Doppelte Downloads überspringen'; - - @override - String get downloadDeduplicationEnabled => - 'Bereits heruntergeladene Titel werden übersprungen'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'Alle Titel werden unabhängig vom Verlauf heruntergeladen'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Jede Qualitätsversion behalten; die gemessene Qualität nur dann zum Dateinamen hinzufügen, wenn der Name bereits verwendet wird'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback-Erweiterungen'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Wähle, welche Erweiterungen als Fallback verwendet werden können'; - - @override - String get editMetadataFieldDateHint => 'JJJJ-MM-TT oder JJJJJ'; - - @override - String get editMetadataFieldTrackTotal => 'Titel insgesamt'; - - @override - String get editMetadataFieldDiscTotal => 'Disc gesamt'; - - @override - String get editMetadataFieldComposer => 'Komponist'; - - @override - String get editMetadataFieldComment => 'Kommentar'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Erweitert'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Fehlende Tracknummer'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Fehlende Disc-Nummer'; - - @override - String get libraryFilterMetadataMissingArtist => 'Fehlender Künstler'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => 'Falsches ISRC-Format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Label fehlt'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Playlists', - one: 'Playlist', - ); - return 'Lösche $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Playlists', - one: 'Playlist', - ); - return '$count $_temp0 gelöscht'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return '$count $_temp0 zu $playlistName hinzugefügt'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return '$count $_temp0 zu $playlistName ($alreadyCount bereits in der Playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Sachen', - one: 'Sache', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadaten erfolgreich neu angereichert ($successCount/$total) - fehlgeschlagen: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Titel', - one: 'Titel', - ); - return 'Lösche $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Herunterladen - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starte...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Titel auswählen'; - - @override - String get a11yDeselectTrack => 'Titel abwählen'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Spiele $trackName von $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Erweiterungen', - one: 'Erweiterung', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Benötigt v$version+'; - } - - @override - String get actionGo => 'Los'; - - @override - String get logIssueSummary => 'Problemübersicht'; - - @override - String logTotalErrors(int count) { - return 'Gesamte Fehler: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Betroffen: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan abgebrochen'; - - @override - String get libraryScanCancelledSubtitle => - 'Du kannst erneut Scannen, wenn er fertig ist.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count aus dem Download-Verlauf (von der Liste ausgeschlossen)'; - } - - @override - String get downloadNativeWorker => 'Nativer Download Dienst'; - - @override - String get downloadNativeWorkerSubtitle => - 'Android-Hintergrunddienst für Downloads von Erweiterungen'; - - @override - String get extensionServiceStatus => 'Dienststatus'; - - @override - String get extensionServiceHealth => 'Service-Gesundheit'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Prüfungen', - one: 'Prüfung', - ); - return '$count $_temp0 konfiguriert'; - } - - @override - String get extensionOauthConnectHint => - 'Tippe auf \"Mit Spotify verbinden\" um dieses Feld auszufüllen.'; - - @override - String extensionLastChecked(String time) { - return 'Zuletzt geprüft $time'; - } - - @override - String get extensionRefreshStatus => 'Status aktualisieren'; - - @override - String get extensionCustomUrlHandling => 'Benutzerdefinierte URL-Handling'; - - @override - String get extensionCustomUrlHandlingSubtitle => - 'Diese Erweiterung kann Links von diesen Seiten benutzen'; - - @override - String get extensionCustomUrlHandlingShareHint => - 'Teile Links von diesen Seiten mit SpotiFLAC Mobile und diese Erweiterung wird sie verarbeiten.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'Einstellungen', - one: 'Einstellung', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Eingeschränkt'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Nicht konfiguriert'; - - @override - String get extensionHealthUnknown => 'Unbekannt'; - - @override - String get extensionHealthRequired => 'benötigt'; - - @override - String get extensionSettingNotSet => 'Nicht eingestellt'; - - @override - String get extensionActionFailed => 'Aktion fehlgeschlagen'; - - @override - String get extensionEnterValue => 'Wert eingeben'; - - @override - String get extensionHealthServiceOnline => 'Dienste online'; - - @override - String get extensionHealthServiceDegraded => 'Dienst Eingeschränkt'; - - @override - String get extensionHealthServiceOffline => 'Dienst offline'; - - @override - String get extensionHealthServiceUnknown => 'Dienst-Status unbekannt'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Öffne in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Eingebettet'; - - @override - String get unknownAlbum => 'Unbekanntes Album'; - - @override - String get unknownArtist => 'Unbekannter Künstler'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Speicher'; - - @override - String get permissionNotification => 'Benachrichtigung'; - - @override - String get errorInvalidFolderSelected => 'Ungültiger Ordner ausgewählt'; - - @override - String get storeAnyVersion => 'Alle'; - - @override - String get storeCategoryMetadata => 'Metadaten'; - - @override - String get storeCategoryDownload => 'Herunterladen'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'Keine'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 => 'Jetzt läuft'; - - @override - String get nowPlayingNothingPlaying => 'Nothing is playing'; - - @override - String get nowPlayingMinimize => 'Minimize'; - - @override - String get nowPlayingUpNext => 'Up next'; - - @override - String get nowPlayingPreviousTrack => 'Vorheriger Titel'; - - @override - String get nowPlayingNextTrack => 'Nächster Titel'; - - @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 => 'Als nächstes'; - - @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 => 'Keine'; - - @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 => 'Südkorea'; - - @override - String get regionCountryIN => 'Indien'; - - @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 => 'Schließen'; - - @override - String get extensionVerificationCopyLink => 'Copy link'; - - @override - String get extensionVerificationLinkCopied => 'Verification link copied'; - - @override - String get extensionVerificationOpenBrowser => 'Open browser'; - - @override - String get settingsSearchHint => 'Einstellungen durchsuchen'; - - @override - String settingsSearchNoResults(String query) { - return 'Keine Einstellungen für \"$query\" gefunden'; - } - - @override - String get settingsGroupInterface => 'Erweiterungen & Darstellung'; - - @override - String get settingsGroupContent => 'Inhalte & Metadaten'; - - @override - String get settingsGroupDownloads => 'Downloads & Dateien'; - - @override - String get settingsGroupSystem => 'System'; - - @override - String get settingsGroupHelp => 'Info & Unterstützung'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/l10n/app_localizations_en.dart b/lib/l10n/app_localizations_en.dart deleted file mode 100644 index f4bff599..00000000 --- a/lib/l10n/app_localizations_en.dart +++ /dev/null @@ -1,5015 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for English (`en`). -class AppLocalizationsEn extends AppLocalizations { - AppLocalizationsEn([String locale = 'en']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Home'; - - @override - String get navLibrary => 'Library'; - - @override - String get navSettings => 'Settings'; - - @override - String get navStore => 'Repo'; - - @override - String get homeTitle => 'Home'; - - @override - String get homeSubtitle => 'Paste a supported URL or search by name'; - - @override - String get homeEmptyTitle => 'No search providers yet'; - - @override - String get homeEmptySubtitle => 'Install an extension to continue.'; - - @override - String get homeSupports => 'Supports: Track, Album, Playlist, Artist URLs'; - - @override - String get homeRecent => 'Recent'; - - @override - String get historyFilterAll => 'All'; - - @override - String get historyFilterAlbums => 'Albums'; - - @override - String get historyFilterSingles => 'Singles'; - - @override - String get historySearchHint => 'Search history...'; - - @override - String get settingsTitle => 'Settings'; - - @override - String get settingsDownload => 'Download'; - - @override - String get settingsAppearance => 'Appearance'; - - @override - String get settingsExtensions => 'Extensions'; - - @override - String get settingsAbout => 'About'; - - @override - String get downloadTitle => 'Download'; - - @override - String get downloadAskQualitySubtitle => - 'Show quality picker for each download'; - - @override - String get downloadFilenameFormat => 'Filename Format'; - - @override - String get downloadSingleFilenameFormat => 'Single Filename Format'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Filename pattern for singles and EPs. Uses the same tags as the album format.'; - - @override - String get downloadFolderOrganization => 'Folder Organization'; - - @override - String get appearanceTitle => 'Appearance'; - - @override - String get appearanceThemeSystem => 'System'; - - @override - String get appearanceThemeLight => 'Light'; - - @override - String get appearanceThemeDark => 'Dark'; - - @override - String get appearanceDynamicColor => 'Dynamic Color'; - - @override - String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - - @override - String get appearanceHistoryView => 'History View'; - - @override - String get appearanceHistoryViewList => 'List'; - - @override - String get appearanceHistoryViewGrid => 'Grid'; - - @override - String get optionsPrimaryProvider => 'Primary Provider'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Service used for searching by track or album name'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Using extension: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Default Search Tab'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; - - @override - String get optionsAutoFallback => 'Auto Fallback'; - - @override - String get optionsAutoFallbackSubtitle => - 'Try other services if download fails'; - - @override - String get optionsEmbedLyrics => 'Embed Lyrics'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Save synced lyrics alongside your downloaded tracks'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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'; - - @override - String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; - - @override - String get optionsArtistTagModeJoined => 'Single joined value'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; - - @override - String get optionsExtensionStore => 'Extension Repo'; - - @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; - - @override - String get optionsCheckUpdates => 'Check for Updates'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Notify when new version is available'; - - @override - String get optionsUpdateChannel => 'Update Channel'; - - @override - String get optionsUpdateChannelStable => 'Stable releases only'; - - @override - String get optionsUpdateChannelPreview => 'Get preview releases'; - - @override - String get optionsUpdateChannelWarning => - 'Preview may contain bugs or incomplete features'; - - @override - String get optionsClearHistory => 'Clear Download History'; - - @override - String get optionsClearHistorySubtitle => - 'Remove all downloaded tracks from history'; - - @override - String get optionsDetailedLogging => 'Detailed Logging'; - - @override - String get optionsDetailedLoggingOn => 'Detailed logs are being recorded'; - - @override - String get optionsDetailedLoggingOff => 'Enable for bug reports'; - - @override - String get extensionsTitle => 'Extensions'; - - @override - String get extensionsDisabled => 'Disabled'; - - @override - String extensionsVersion(String version) { - return 'Version $version'; - } - - @override - String get extensionsUninstall => 'Uninstall'; - - @override - String get storeTitle => 'Extension Repo'; - - @override - String get storeSearch => 'Search extensions...'; - - @override - String get storeInstall => 'Install'; - - @override - String get storeInstalled => 'Installed'; - - @override - String get storeUpdate => 'Update'; - - @override - String get aboutTitle => 'About'; - - @override - String get aboutContributors => 'Contributors'; - - @override - String get aboutMobileDeveloper => 'Mobile version developer'; - - @override - String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; - - @override - String get aboutLogoArtist => - 'The talented artist who created our beautiful app logo!'; - - @override - String get aboutTranslators => 'Translators'; - - @override - String get aboutSpecialThanks => 'Special Thanks'; - - @override - String get aboutLinks => 'Links'; - - @override - String get aboutMobileSource => 'Mobile source code'; - - @override - String get aboutPCSource => 'PC source code'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => 'Report an issue'; - - @override - String get aboutReportIssueSubtitle => 'Report any problems you encounter'; - - @override - String get aboutFeatureRequest => 'Feature request'; - - @override - String get aboutFeatureRequestSubtitle => 'Suggest new features for the app'; - - @override - String get aboutTelegramChannel => 'Telegram Channel'; - - @override - String get aboutTelegramChannelSubtitle => 'Announcements and updates'; - - @override - String get aboutTelegramChat => 'Telegram Community'; - - @override - String get aboutTelegramChatSubtitle => 'Chat with other users'; - - @override - String get aboutSocial => 'Social'; - - @override - String get aboutApp => 'App'; - - @override - String get aboutVersion => 'Version'; - - @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - - @override - String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; - - @override - String get artistAlbums => 'Albums'; - - @override - String get artistSingles => 'Singles & EPs'; - - @override - String get artistCompilations => 'Compilations'; - - @override - String get artistPopular => 'Popular'; - - @override - String artistMonthlyListeners(String count) { - return '$count monthly listeners'; - } - - @override - String get trackMetadataService => 'Service'; - - @override - String get trackMetadataPlay => 'Play'; - - @override - String get trackMetadataShare => 'Share'; - - @override - String get trackMetadataDelete => 'Delete'; - - @override - String get setupGrantPermission => 'Grant Permission'; - - @override - String get setupSkip => 'Skip for now'; - - @override - String get setupStorageAccessRequired => 'Storage Access Required'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; - - @override - String get setupOpenSettings => 'Open Settings'; - - @override - String get setupPermissionDeniedMessage => - 'Permission denied. Please grant all permissions to continue.'; - - @override - String setupPermissionRequired(String permissionType) { - return '$permissionType Permission Required'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return '$permissionType permission is required for the best experience. You can change this later in Settings.'; - } - - @override - String get setupUseDefaultFolder => 'Use Default Folder?'; - - @override - String get setupNoFolderSelected => - 'No folder selected. Would you like to use the default Music folder?'; - - @override - String get setupUseDefault => 'Use Default'; - - @override - String get setupDownloadLocationTitle => 'Download Location'; - - @override - String get setupDownloadLocationIosMessage => - 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; - - @override - String get setupAppDocumentsFolder => 'App Documents Folder'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Recommended - accessible via Files app'; - - @override - String get setupChooseFromFiles => 'Choose from Files'; - - @override - String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; - - @override - String get setupIosEmptyFolderWarning => - 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive is not supported. Please use the app Documents folder.'; - - @override - String get setupDownloadInFlac => - 'Download music in lossless and Hi-Res quality'; - - @override - String get setupStorageGranted => 'Storage Permission Granted!'; - - @override - String get setupStorageRequired => 'Storage Permission Required'; - - @override - String get setupStorageDescription => - 'SpotiFLAC needs storage permission to save your downloaded music files.'; - - @override - String get setupNotificationGranted => 'Notification Permission Granted!'; - - @override - String get setupNotificationEnable => 'Enable Notifications'; - - @override - String get setupFolderChoose => 'Choose Download Folder'; - - @override - String get setupFolderDescription => - 'Select a folder where your downloaded music will be saved.'; - - @override - String get setupSelectFolder => 'Select Folder'; - - @override - String get setupEnableNotifications => 'Enable Notifications'; - - @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'; - - @override - String get setupNext => 'Next'; - - @override - String get setupGetStarted => 'Get Started'; - - @override - String get setupAllowAccessToManageFiles => - 'Please enable \"Allow access to manage all files\" in the next screen.'; - - @override - String get setupLanguageTitle => 'Choose Language'; - - @override - String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; - - @override - String get setupLanguageSystemDefault => 'System Default'; - - @override - String get dialogCancel => 'Cancel'; - - @override - String get dialogSave => 'Save'; - - @override - String get dialogDelete => 'Delete'; - - @override - String get dialogRetry => 'Retry'; - - @override - String get dialogClear => 'Clear'; - - @override - String get dialogDone => 'Done'; - - @override - String get dialogImport => 'Import'; - - @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'; - - @override - String get dialogRemove => 'Remove'; - - @override - String get dialogUninstall => 'Uninstall'; - - @override - String get dialogDiscardChanges => 'Discard Changes?'; - - @override - String get dialogUnsavedChanges => - 'You have unsaved changes. Do you want to discard them?'; - - @override - String get dialogClearAll => 'Clear All'; - - @override - String get dialogRemoveExtension => 'Remove Extension'; - - @override - String get dialogRemoveExtensionMessage => - 'Are you sure you want to remove this extension? This cannot be undone.'; - - @override - String get dialogUninstallExtension => 'Uninstall Extension?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Are you sure you want to remove $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Clear History'; - - @override - String get dialogClearHistoryMessage => - 'Are you sure you want to clear all download history? This cannot be undone.'; - - @override - String get dialogDeleteSelectedTitle => 'Delete Selected'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; - } - - @override - String get dialogImportPlaylistTitle => 'Import Playlist'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Found $count tracks in the playlist file. Add them to download queue?'; - } - - @override - String csvImportTracks(int count) { - return '$count tracks from CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return 'Added \"$trackName\" to queue'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return 'Added $count tracks to queue'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" already downloaded'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" already exists in your library'; - } - - @override - String get snackbarHistoryCleared => 'History cleared'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Deleted $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Cannot open file: $error'; - } - - @override - String get snackbarViewQueue => 'View Queue'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform URL copied to clipboard'; - } - - @override - String get snackbarFileNotFound => 'File not found'; - - @override - String get snackbarSelectExtFile => 'Please select a .spotiflac-ext file'; - - @override - String get snackbarProviderPrioritySaved => 'Provider priority saved'; - - @override - String get snackbarMetadataProviderSaved => - 'Metadata provider priority saved'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName installed.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName updated.'; - } - - @override - String get snackbarFailedToInstall => 'Failed to install extension'; - - @override - String get snackbarFailedToUpdate => 'Failed to update extension'; - - @override - String get errorRateLimited => 'Rate Limited'; - - @override - String get errorRateLimitedMessage => - 'Too many requests. Please wait a moment before searching again.'; - - @override - String get errorNoTracksFound => 'No tracks found'; - - @override - String get searchEmptyResultSubtitle => 'Try another keyword'; - - @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 'Cannot load $item: missing extension source'; - } - - @override - String get actionPause => 'Pause'; - - @override - String get actionResume => 'Resume'; - - @override - String get actionCancel => 'Cancel'; - - @override - String get actionSelectAll => 'Select All'; - - @override - String get actionDeselect => 'Deselect'; - - @override - String selectionSelected(int count) { - return '$count selected'; - } - - @override - String get selectionAllSelected => 'All tracks selected'; - - @override - String get selectionSelectToDelete => 'Select tracks to delete'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Fetching metadata... $current/$total'; - } - - @override - String get progressReadingCsv => 'Reading CSV...'; - - @override - String get searchSongs => 'Songs'; - - @override - String get searchArtists => 'Artists'; - - @override - String get searchAlbums => 'Albums'; - - @override - String get searchPlaylists => 'Playlists'; - - @override - String get searchSortTitle => 'Sort Results'; - - @override - String get searchSortDefault => 'Default'; - - @override - String get searchSortTitleAZ => 'Title (A-Z)'; - - @override - String get searchSortTitleZA => 'Title (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artist (A-Z)'; - - @override - String get searchSortArtistZA => 'Artist (Z-A)'; - - @override - String get searchSortDurationShort => 'Duration (Shortest)'; - - @override - String get searchSortDurationLong => 'Duration (Longest)'; - - @override - String get searchSortDateOldest => 'Release Date (Oldest)'; - - @override - String get searchSortDateNewest => 'Release Date (Newest)'; - - @override - String get tooltipPlay => 'Play'; - - @override - String get filenameFormat => 'Filename 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 => 'No organization'; - - @override - String get folderOrganizationByPlaylist => 'By Playlist'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Separate folder for each playlist'; - - @override - String get folderOrganizationByArtist => 'By Artist'; - - @override - String get folderOrganizationByAlbum => 'By Album'; - - @override - String get folderOrganizationByArtistAlbum => 'Artist/Album'; - - @override - String get folderOrganizationDescription => - 'Organize downloaded files into folders'; - - @override - String get folderOrganizationNoneSubtitle => 'All files in download folder'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Separate folder for each artist'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Separate folder for each album'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Nested folders for artist and album'; - - @override - String get updateAvailable => 'Update Available'; - - @override - String get updateLater => 'Later'; - - @override - String get updateStartingDownload => 'Starting download...'; - - @override - String get updateDownloadFailed => 'Download failed'; - - @override - String get updateFailedMessage => 'Failed to download update'; - - @override - String get updateNewVersionReady => 'A new version is ready'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Current'; - - @override - String get updateNew => 'New'; - - @override - String get updateDownloading => 'Downloading...'; - - @override - String get updateWhatsNew => 'What\'s New'; - - @override - String get updateDownloadInstall => 'Download & Install'; - - @override - String get updateDontRemind => 'Don\'t remind'; - - @override - String get providerPriorityTitle => 'Provider Priority'; - - @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 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 providerExtension => 'Extension'; - - @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 logTitle => 'Logs'; - - @override - String get logCopied => 'Logs copied to clipboard'; - - @override - String get logSearchHint => 'Search logs...'; - - @override - String get logFilterLevel => 'Level'; - - @override - String get logFilterSection => 'Filter'; - - @override - String get logShareLogs => 'Share logs'; - - @override - String get logClearLogs => 'Clear logs'; - - @override - String get logClearLogsTitle => 'Clear Logs'; - - @override - String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - - @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 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, fallback'; - - @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 libraryQualityLabelFileFormat => 'File format'; - - @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 trackLyricsSource(String source) { - return 'Source: $source'; - } - - @override - String get trackLyricsNotAvailable => 'Lyrics not available for this track'; - - @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; - - @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; - - @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 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 repository'; - - @override - String get storeEmptyNoExtensions => 'No extensions available'; - - @override - String get storeEmptyNoResults => 'No extensions found'; - - @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 extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; - } - - @override - String get extensionsDownloadPriority => 'Download Priority'; - - @override - String get extensionsDownloadPrioritySubtitle => 'Set download service order'; - - @override - String get extensionsFallbackTitle => 'Fallback Extensions'; - - @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'; - - @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 downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Lossy 320kbps Format'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; - - @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 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 albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @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 appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @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 settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @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 albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; - - @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 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 recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @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 libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @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, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF, and APE 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 libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'files', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Last scanned: $time'; - } - - @override - String get libraryLastScannedNever => 'Never'; - - @override - String get libraryScanning => 'Scanning...'; - - @override - String get libraryScanFinalizing => 'Finalizing library...'; - - @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 libraryFilterMetadata => 'Metadata'; - - @override - String get libraryFilterMetadataComplete => 'Complete metadata'; - - @override - String get libraryFilterMetadataMissingAny => 'Missing any metadata'; - - @override - String get libraryFilterMetadataMissingYear => 'Missing year'; - - @override - String get libraryFilterMetadataMissingGenre => 'Missing genre'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; - - @override - String get libraryFilterSort => 'Sort'; - - @override - String get libraryFilterSortLatest => 'Latest'; - - @override - String get libraryFilterSortOldest => 'Oldest'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @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 Mobile!'; - - @override - String get tutorialWelcomeDesc => - 'Learn how to find music with extensions, choose the quality you want, and manage downloads in SpotiFLAC Mobile.'; - - @override - String get tutorialWelcomeTip1 => - 'Search with an installed extension or paste a supported music link'; - - @override - String get tutorialWelcomeTip2 => - 'Choose from the audio qualities offered by your download provider'; - - @override - String get tutorialWelcomeTip3 => - 'Embed metadata, cover art, lyrics, and release information automatically'; - - @override - String get tutorialSearchTitle => 'Finding Music'; - - @override - String get tutorialSearchDesc => - 'Search with your selected extension or paste a supported music link.'; - - @override - String get tutorialDownloadTitle => 'Downloading Music'; - - @override - String get tutorialDownloadDesc => - 'Pick an available quality, start the download, and follow its progress in the queue.'; - - @override - String get tutorialLibraryTitle => 'Your Library'; - - @override - String get tutorialLibraryDesc => - 'Downloaded and locally scanned music is organized in your Library.'; - - @override - String get tutorialLibraryTip1 => - 'Manage active, pending, and completed downloads from the Library queue'; - - @override - String get tutorialLibraryTip2 => - 'Tap a track to play it with the built-in player'; - - @override - String get tutorialLibraryTip3 => - 'Browse tracks, albums, and playlists in list or grid views'; - - @override - String get tutorialExtensionsTitle => 'Extensions'; - - @override - String get tutorialExtensionsDesc => - 'Extensions add search, download, metadata, lyrics, and other integrations.'; - - @override - String get tutorialExtensionsTip1 => - 'Browse the Repo tab to discover useful extensions'; - - @override - String get tutorialExtensionsTip2 => - 'Choose providers for search, downloads, metadata, and fallbacks'; - - @override - String get tutorialExtensionsTip3 => - 'Connect accounts when required and keep extensions up to date'; - - @override - String get tutorialSettingsTitle => 'Customize Your Experience'; - - @override - String get tutorialSettingsDesc => - 'Fine-tune downloads, playback, Library behavior, appearance, and storage.'; - - @override - String get tutorialSettingsTip1 => - 'Change download location and folder organization'; - - @override - String get tutorialSettingsTip2 => - 'Set quality, concurrency, filenames, and conversion preferences'; - - @override - String get tutorialSettingsTip3 => 'Customize app theme and appearance'; - - @override - String get tutorialReadyMessage => - 'You\'re ready. Select your extensions, then search or paste a supported link.'; - - @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 libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @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 trackSaveLyrics => 'Save Lyrics (.lrc)'; - - @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 trackReEnrichFieldCover => 'Cover Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Select All'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @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 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 trackConvertTitle => 'Convert Audio'; - - @override - String get trackConvertTargetFormat => 'Target Format'; - - @override - String get trackConvertBitrate => 'Bitrate'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @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 trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @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 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 collectionFavoriteArtists => 'Favorite Artists'; - - @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 collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Added to \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Already in \"$playlistName\"'; - } - - @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 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 collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @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 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 collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @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 artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @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 => - 'Folder named after Album Artist tag'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Folder named after Track Artist tag'; - - @override - String get lyricsProvidersTitle => 'Lyrics Provider Priority'; - - @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)'; - } - - @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 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 lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, 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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @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 where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => 'Custom Folder (SAF)'; - - @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'SongLink Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Language code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @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 => - 'Choose a metadata extension, select fields, then review its data before applying'; - - @override - String get editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @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'; - - @override - String queueDownloadingCount(int count) { - return 'Downloading ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtering...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'No download history'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Sample Rate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Bit Depth'; - - @override - String get audioAnalysisChannels => 'Channels'; - - @override - String get audioAnalysisDuration => 'Duration'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Size'; - - @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Samples'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Cancel download?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Keep'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download Complete'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks downloaded successfully', - one: '1 track downloaded successfully', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanning local library'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Library scan complete'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count errors'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; - - @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Update Ready'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import playlist (CSV, M3U)'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Keep every quality version; add its measured quality to the filename only when the name is already used'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Android background service for extension downloads'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Previous track'; - - @override - String get nowPlayingNextTrack => 'Next track'; - - @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'; - - @override - String get settingsSearchHint => 'Search settings'; - - @override - String settingsSearchNoResults(String query) { - return 'No settings match \"$query\"'; - } - - @override - String get settingsGroupInterface => 'Extensions & appearance'; - - @override - String get settingsGroupContent => 'Content & metadata'; - - @override - String get settingsGroupDownloads => 'Downloads & files'; - - @override - String get settingsGroupSystem => 'System'; - - @override - String get settingsGroupHelp => 'About & support'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/l10n/app_localizations_es.dart b/lib/l10n/app_localizations_es.dart deleted file mode 100644 index 0159940f..00000000 --- a/lib/l10n/app_localizations_es.dart +++ /dev/null @@ -1,9737 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Spanish Castilian (`es`). -class AppLocalizationsEs extends AppLocalizations { - AppLocalizationsEs([String locale = 'es']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Home'; - - @override - String get navLibrary => 'Library'; - - @override - String get navSettings => 'Settings'; - - @override - String get navStore => 'Repo'; - - @override - String get homeTitle => 'Home'; - - @override - String get homeSubtitle => 'Paste a Spotify link or search by name'; - - @override - String get homeEmptyTitle => 'No search providers yet'; - - @override - String get homeEmptySubtitle => 'Install an extension to continue.'; - - @override - String get homeSupports => 'Supports: Track, Album, Playlist, Artist URLs'; - - @override - String get homeRecent => 'Recent'; - - @override - String get historyFilterAll => 'All'; - - @override - String get historyFilterAlbums => 'Albums'; - - @override - String get historyFilterSingles => 'Singles'; - - @override - String get historySearchHint => 'Search history...'; - - @override - String get settingsTitle => 'Settings'; - - @override - String get settingsDownload => 'Download'; - - @override - String get settingsAppearance => 'Appearance'; - - @override - String get settingsExtensions => 'Extensions'; - - @override - String get settingsAbout => 'About'; - - @override - String get downloadTitle => 'Download'; - - @override - String get downloadAskQualitySubtitle => - 'Show quality picker for each download'; - - @override - String get downloadFilenameFormat => 'Filename Format'; - - @override - String get downloadSingleFilenameFormat => 'Single Filename Format'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Filename pattern for singles and EPs. Uses the same tags as the album format.'; - - @override - String get downloadFolderOrganization => 'Folder Organization'; - - @override - String get appearanceTitle => 'Appearance'; - - @override - String get appearanceThemeSystem => 'System'; - - @override - String get appearanceThemeLight => 'Light'; - - @override - String get appearanceThemeDark => 'Dark'; - - @override - String get appearanceDynamicColor => 'Dynamic Color'; - - @override - String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - - @override - String get appearanceHistoryView => 'History View'; - - @override - String get appearanceHistoryViewList => 'List'; - - @override - String get appearanceHistoryViewGrid => 'Grid'; - - @override - String get optionsPrimaryProvider => 'Primary Provider'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Service used when searching by track name.'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Using extension: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Default Search Tab'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; - - @override - String get optionsAutoFallback => 'Auto Fallback'; - - @override - String get optionsAutoFallbackSubtitle => - 'Try other services if download fails'; - - @override - String get optionsEmbedLyrics => 'Embed Lyrics'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Embed synced lyrics into FLAC files'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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'; - - @override - String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; - - @override - String get optionsArtistTagModeJoined => 'Single joined value'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; - - @override - String get optionsExtensionStore => 'Extension Repo'; - - @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; - - @override - String get optionsCheckUpdates => 'Check for Updates'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Notify when new version is available'; - - @override - String get optionsUpdateChannel => 'Update Channel'; - - @override - String get optionsUpdateChannelStable => 'Stable releases only'; - - @override - String get optionsUpdateChannelPreview => 'Get preview releases'; - - @override - String get optionsUpdateChannelWarning => - 'Preview may contain bugs or incomplete features'; - - @override - String get optionsClearHistory => 'Clear Download History'; - - @override - String get optionsClearHistorySubtitle => - 'Remove all downloaded tracks from history'; - - @override - String get optionsDetailedLogging => 'Detailed Logging'; - - @override - String get optionsDetailedLoggingOn => 'Detailed logs are being recorded'; - - @override - String get optionsDetailedLoggingOff => 'Enable for bug reports'; - - @override - String get extensionsTitle => 'Extensions'; - - @override - String get extensionsDisabled => 'Disabled'; - - @override - String extensionsVersion(String version) { - return 'Version $version'; - } - - @override - String get extensionsUninstall => 'Uninstall'; - - @override - String get storeTitle => 'Extension Repo'; - - @override - String get storeSearch => 'Search extensions...'; - - @override - String get storeInstall => 'Install'; - - @override - String get storeInstalled => 'Installed'; - - @override - String get storeUpdate => 'Update'; - - @override - String get aboutTitle => 'About'; - - @override - String get aboutContributors => 'Contributors'; - - @override - String get aboutMobileDeveloper => 'Mobile version developer'; - - @override - String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; - - @override - String get aboutLogoArtist => - 'The talented artist who created our beautiful app logo!'; - - @override - String get aboutTranslators => 'Translators'; - - @override - String get aboutSpecialThanks => 'Special Thanks'; - - @override - String get aboutLinks => 'Links'; - - @override - String get aboutMobileSource => 'Mobile source code'; - - @override - String get aboutPCSource => 'PC source code'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => 'Report an issue'; - - @override - String get aboutReportIssueSubtitle => 'Report any problems you encounter'; - - @override - String get aboutFeatureRequest => 'Feature request'; - - @override - String get aboutFeatureRequestSubtitle => 'Suggest new features for the app'; - - @override - String get aboutTelegramChannel => 'Telegram Channel'; - - @override - String get aboutTelegramChannelSubtitle => 'Announcements and updates'; - - @override - String get aboutTelegramChat => 'Telegram Community'; - - @override - String get aboutTelegramChatSubtitle => 'Chat with other users'; - - @override - String get aboutSocial => 'Social'; - - @override - String get aboutApp => 'App'; - - @override - String get aboutVersion => 'Version'; - - @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - - @override - String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; - - @override - String get artistAlbums => 'Albums'; - - @override - String get artistSingles => 'Singles & EPs'; - - @override - String get artistCompilations => 'Compilations'; - - @override - String get artistPopular => 'Popular'; - - @override - String artistMonthlyListeners(String count) { - return '$count monthly listeners'; - } - - @override - String get trackMetadataService => 'Service'; - - @override - String get trackMetadataPlay => 'Play'; - - @override - String get trackMetadataShare => 'Share'; - - @override - String get trackMetadataDelete => 'Delete'; - - @override - String get setupGrantPermission => 'Grant Permission'; - - @override - String get setupSkip => 'Skip for now'; - - @override - String get setupStorageAccessRequired => 'Storage Access Required'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; - - @override - String get setupOpenSettings => 'Open Settings'; - - @override - String get setupPermissionDeniedMessage => - 'Permission denied. Please grant all permissions to continue.'; - - @override - String setupPermissionRequired(String permissionType) { - return '$permissionType Permission Required'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return '$permissionType permission is required for the best experience. You can change this later in Settings.'; - } - - @override - String get setupUseDefaultFolder => 'Use Default Folder?'; - - @override - String get setupNoFolderSelected => - 'No folder selected. Would you like to use the default Music folder?'; - - @override - String get setupUseDefault => 'Use Default'; - - @override - String get setupDownloadLocationTitle => 'Download Location'; - - @override - String get setupDownloadLocationIosMessage => - 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; - - @override - String get setupAppDocumentsFolder => 'App Documents Folder'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Recommended - accessible via Files app'; - - @override - String get setupChooseFromFiles => 'Choose from Files'; - - @override - String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; - - @override - String get setupIosEmptyFolderWarning => - 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive is not supported. Please use the app Documents folder.'; - - @override - String get setupDownloadInFlac => - 'Descarga música con calidad sin pérdida y Hi-Res'; - - @override - String get setupStorageGranted => 'Storage Permission Granted!'; - - @override - String get setupStorageRequired => 'Storage Permission Required'; - - @override - String get setupStorageDescription => - 'SpotiFLAC needs storage permission to save your downloaded music files.'; - - @override - String get setupNotificationGranted => 'Notification Permission Granted!'; - - @override - String get setupNotificationEnable => 'Enable Notifications'; - - @override - String get setupFolderChoose => 'Choose Download Folder'; - - @override - String get setupFolderDescription => - 'Select a folder where your downloaded music will be saved.'; - - @override - String get setupSelectFolder => 'Select Folder'; - - @override - String get setupEnableNotifications => 'Enable Notifications'; - - @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'; - - @override - String get setupNext => 'Next'; - - @override - String get setupGetStarted => 'Get Started'; - - @override - String get setupAllowAccessToManageFiles => - 'Please enable \"Allow access to manage all files\" in the next screen.'; - - @override - String get setupLanguageTitle => 'Choose Language'; - - @override - String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; - - @override - String get setupLanguageSystemDefault => 'System Default'; - - @override - String get dialogCancel => 'Cancel'; - - @override - String get dialogSave => 'Save'; - - @override - String get dialogDelete => 'Delete'; - - @override - String get dialogRetry => 'Retry'; - - @override - String get dialogClear => 'Clear'; - - @override - String get dialogDone => 'Done'; - - @override - String get dialogImport => 'Import'; - - @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'; - - @override - String get dialogRemove => 'Remove'; - - @override - String get dialogUninstall => 'Uninstall'; - - @override - String get dialogDiscardChanges => 'Discard Changes?'; - - @override - String get dialogUnsavedChanges => - 'You have unsaved changes. Do you want to discard them?'; - - @override - String get dialogClearAll => 'Clear All'; - - @override - String get dialogRemoveExtension => 'Remove Extension'; - - @override - String get dialogRemoveExtensionMessage => - 'Are you sure you want to remove this extension? This cannot be undone.'; - - @override - String get dialogUninstallExtension => 'Uninstall Extension?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Are you sure you want to remove $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Clear History'; - - @override - String get dialogClearHistoryMessage => - 'Are you sure you want to clear all download history? This cannot be undone.'; - - @override - String get dialogDeleteSelectedTitle => 'Delete Selected'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; - } - - @override - String get dialogImportPlaylistTitle => 'Import Playlist'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Found $count tracks in CSV. Add them to download queue?'; - } - - @override - String csvImportTracks(int count) { - return '$count tracks from CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return 'Added \"$trackName\" to queue'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return 'Added $count tracks to queue'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" already downloaded'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" already exists in your library'; - } - - @override - String get snackbarHistoryCleared => 'History cleared'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Deleted $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Cannot open file: $error'; - } - - @override - String get snackbarViewQueue => 'View Queue'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform URL copied to clipboard'; - } - - @override - String get snackbarFileNotFound => 'File not found'; - - @override - String get snackbarSelectExtFile => 'Please select a .spotiflac-ext file'; - - @override - String get snackbarProviderPrioritySaved => 'Provider priority saved'; - - @override - String get snackbarMetadataProviderSaved => - 'Metadata provider priority saved'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName installed.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName updated.'; - } - - @override - String get snackbarFailedToInstall => 'Failed to install extension'; - - @override - String get snackbarFailedToUpdate => 'Failed to update extension'; - - @override - String get errorRateLimited => 'Rate Limited'; - - @override - String get errorRateLimitedMessage => - 'Too many requests. Please wait a moment before searching again.'; - - @override - String get errorNoTracksFound => 'No tracks found'; - - @override - String get searchEmptyResultSubtitle => 'Try another keyword'; - - @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 'Cannot load $item: missing extension source'; - } - - @override - String get actionPause => 'Pause'; - - @override - String get actionResume => 'Resume'; - - @override - String get actionCancel => 'Cancel'; - - @override - String get actionSelectAll => 'Select All'; - - @override - String get actionDeselect => 'Deselect'; - - @override - String selectionSelected(int count) { - return '$count selected'; - } - - @override - String get selectionAllSelected => 'All tracks selected'; - - @override - String get selectionSelectToDelete => 'Select tracks to delete'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Fetching metadata... $current/$total'; - } - - @override - String get progressReadingCsv => 'Reading CSV...'; - - @override - String get searchSongs => 'Songs'; - - @override - String get searchArtists => 'Artists'; - - @override - String get searchAlbums => 'Albums'; - - @override - String get searchPlaylists => 'Playlists'; - - @override - String get searchSortTitle => 'Sort Results'; - - @override - String get searchSortDefault => 'Default'; - - @override - String get searchSortTitleAZ => 'Title (A-Z)'; - - @override - String get searchSortTitleZA => 'Title (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artist (A-Z)'; - - @override - String get searchSortArtistZA => 'Artist (Z-A)'; - - @override - String get searchSortDurationShort => 'Duration (Shortest)'; - - @override - String get searchSortDurationLong => 'Duration (Longest)'; - - @override - String get searchSortDateOldest => 'Release Date (Oldest)'; - - @override - String get searchSortDateNewest => 'Release Date (Newest)'; - - @override - String get tooltipPlay => 'Play'; - - @override - String get filenameFormat => 'Filename 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 => 'No organization'; - - @override - String get folderOrganizationByPlaylist => 'By Playlist'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Separate folder for each playlist'; - - @override - String get folderOrganizationByArtist => 'By Artist'; - - @override - String get folderOrganizationByAlbum => 'By Album'; - - @override - String get folderOrganizationByArtistAlbum => 'Artist/Album'; - - @override - String get folderOrganizationDescription => - 'Organize downloaded files into folders'; - - @override - String get folderOrganizationNoneSubtitle => 'All files in download folder'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Separate folder for each artist'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Separate folder for each album'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Nested folders for artist and album'; - - @override - String get updateAvailable => 'Update Available'; - - @override - String get updateLater => 'Later'; - - @override - String get updateStartingDownload => 'Starting download...'; - - @override - String get updateDownloadFailed => 'Download failed'; - - @override - String get updateFailedMessage => 'Failed to download update'; - - @override - String get updateNewVersionReady => 'A new version is ready'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Current'; - - @override - String get updateNew => 'New'; - - @override - String get updateDownloading => 'Downloading...'; - - @override - String get updateWhatsNew => 'What\'s New'; - - @override - String get updateDownloadInstall => 'Download & Install'; - - @override - String get updateDontRemind => 'Don\'t remind'; - - @override - String get providerPriorityTitle => 'Provider Priority'; - - @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 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 providerExtension => 'Extension'; - - @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 logTitle => 'Logs'; - - @override - String get logCopied => 'Logs copied to clipboard'; - - @override - String get logSearchHint => 'Search logs...'; - - @override - String get logFilterLevel => 'Level'; - - @override - String get logFilterSection => 'Filter'; - - @override - String get logShareLogs => 'Share logs'; - - @override - String get logClearLogs => 'Clear logs'; - - @override - String get logClearLogsTitle => 'Clear Logs'; - - @override - String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - - @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 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 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 libraryQualityLabelFileFormat => 'File format'; - - @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 trackLyricsSource(String source) { - return 'Source: $source'; - } - - @override - String get trackLyricsNotAvailable => 'Lyrics not available for this track'; - - @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; - - @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; - - @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 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 repository'; - - @override - String get storeEmptyNoExtensions => 'No extensions available'; - - @override - String get storeEmptyNoResults => 'No extensions found'; - - @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 extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; - } - - @override - String get extensionsDownloadPriority => 'Download Priority'; - - @override - String get extensionsDownloadPrioritySubtitle => 'Set download service order'; - - @override - String get extensionsFallbackTitle => 'Fallback Extensions'; - - @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'; - - @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 downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Lossy 320kbps Format'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; - - @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 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 albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @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 appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @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 settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @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 albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; - - @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 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 recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @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 libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @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 libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'files', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Last scanned: $time'; - } - - @override - String get libraryLastScannedNever => 'Never'; - - @override - String get libraryScanning => 'Scanning...'; - - @override - String get libraryScanFinalizing => 'Finalizing library...'; - - @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 libraryFilterMetadata => 'Metadata'; - - @override - String get libraryFilterMetadataComplete => 'Complete metadata'; - - @override - String get libraryFilterMetadataMissingAny => 'Missing any metadata'; - - @override - String get libraryFilterMetadataMissingYear => 'Missing year'; - - @override - String get libraryFilterMetadataMissingGenre => 'Missing genre'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; - - @override - String get libraryFilterSort => 'Sort'; - - @override - String get libraryFilterSortLatest => 'Latest'; - - @override - String get libraryFilterSortOldest => 'Oldest'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @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 => - '¡Te damos la bienvenida a SpotiFLAC Mobile!'; - - @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 => - 'Busca con una extensión instalada o pega un enlace compatible'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @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 Repo 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 libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @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 trackSaveLyrics => 'Save Lyrics (.lrc)'; - - @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 trackReEnrichFieldCover => 'Cover Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Select All'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @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 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 trackConvertTitle => 'Convert Audio'; - - @override - String get trackConvertTargetFormat => 'Target Format'; - - @override - String get trackConvertBitrate => 'Bitrate'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @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 trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @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 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 collectionFavoriteArtists => 'Favorite Artists'; - - @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 collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Added to \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Already in \"$playlistName\"'; - } - - @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 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 collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @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 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 collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @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 artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @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 => - 'Folder named after Album Artist tag'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Folder named after Track Artist tag'; - - @override - String get lyricsProvidersTitle => 'Lyrics Provider Priority'; - - @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)'; - } - - @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 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 lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, 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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @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 where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => 'Custom Folder (SAF)'; - - @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'SongLink Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Language code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @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 editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @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'; - - @override - String queueDownloadingCount(int count) { - return 'Downloading ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtering...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'No download history'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Sample Rate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Bit Depth'; - - @override - String get audioAnalysisChannels => 'Channels'; - - @override - String get audioAnalysisDuration => 'Duration'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Size'; - - @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Samples'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Cancel download?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Keep'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download Complete'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; - - @override - String notifTracksDownloadedSuccess(int count) { - return '$count tracks downloaded successfully'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanning local library'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Library scan complete'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count errors'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; - - @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Update Ready'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import playlist (CSV, M3U)'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Keep every quality version; add its measured quality to the filename only when the name is already used'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Android background service for extension downloads'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Pista anterior'; - - @override - String get nowPlayingNextTrack => 'Pista siguiente'; - - @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'; - - @override - String get settingsSearchHint => 'Buscar en los ajustes'; - - @override - String settingsSearchNoResults(String query) { - return 'Ningún ajuste coincide con \"$query\"'; - } - - @override - String get settingsGroupInterface => 'Extensiones y apariencia'; - - @override - String get settingsGroupContent => 'Contenido y metadatos'; - - @override - String get settingsGroupDownloads => 'Descargas y archivos'; - - @override - String get settingsGroupSystem => 'Sistema'; - - @override - String get settingsGroupHelp => 'Información y soporte'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} - -/// The translations for Spanish Castilian, as used in Spain (`es_ES`). -class AppLocalizationsEsEs extends AppLocalizationsEs { - AppLocalizationsEsEs() : super('es_ES'); - - @override - String get appName => 'SpotiFLAC Móvil'; - - @override - String get navHome => 'Inicio'; - - @override - String get navLibrary => 'Biblioteca'; - - @override - String get navSettings => 'Ajustes'; - - @override - String get navStore => 'Repositorio'; - - @override - String get homeTitle => 'Inicio'; - - @override - String get homeSubtitle => 'Pega una URL compatible o busca por nombre'; - - @override - 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 => - 'Compatible con: URL de pistas, álbumes, listas de reproducción y artistas'; - - @override - String get homeRecent => 'Recientes'; - - @override - String get historyFilterAll => 'Todo'; - - @override - String get historyFilterAlbums => 'Álbumes'; - - @override - String get historyFilterSingles => 'Pistas'; - - @override - String get historySearchHint => 'Buscar en historial...'; - - @override - String get settingsTitle => 'Ajustes'; - - @override - String get settingsDownload => 'Descargar'; - - @override - String get settingsAppearance => 'Apariencia'; - - @override - String get settingsExtensions => 'Extensiones'; - - @override - String get settingsAbout => 'Acerca de'; - - @override - String get downloadTitle => 'Descargar'; - - @override - String get downloadAskQualitySubtitle => - 'Mostrar selector de calidad para cada descarga'; - - @override - String get downloadFilenameFormat => 'Formato del nombre del archivo'; - - @override - String get downloadSingleFilenameFormat => - 'Formato del nombre de archivo para pistas individuales'; - - @override - String get downloadSingleFilenameFormatDescription => - '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'; - - @override - String get appearanceTitle => 'Apariencia'; - - @override - String get appearanceThemeSystem => 'Sistema'; - - @override - String get appearanceThemeLight => 'Claro'; - - @override - String get appearanceThemeDark => 'Oscuro'; - - @override - String get appearanceDynamicColor => 'Color Dinámico'; - - @override - String get appearanceDynamicColorSubtitle => - 'Usar colores de tu fondo de pantalla'; - - @override - String get appearanceHistoryView => 'Vista del Historial'; - - @override - String get appearanceHistoryViewList => 'Lista'; - - @override - String get appearanceHistoryViewGrid => 'Cuadrícula'; - - @override - String get optionsPrimaryProvider => 'Proveedor Principal'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Servicio utilizado para buscar por nombre de pista o álbum'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Usando la extensión: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Pestaña de búsqueda predeterminada'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Elige qué pestaña se abre primero al mostrar nuevos resultados de búsqueda.'; - - @override - String get optionsAutoFallback => 'Cambio automático'; - - @override - String get optionsAutoFallbackSubtitle => - 'Probar otros servicios si la descarga falla'; - - @override - String get optionsEmbedLyrics => 'Incrustar letras'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Guarda las letras sincronizadas junto a las pistas descargadas'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Analizar la sonoridad e incrustar etiquetas ReplayGain (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Desactivado: no hay etiquetas de normalización de sonoridad'; - - @override - String get trackReplayGain => 'Reescanear 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 => - 'Elige cómo se escriben varios artistas en las etiquetas incrustadas.'; - - @override - String get optionsArtistTagModeJoined => 'Valor único combinado'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Escribir un solo valor de ARTISTA como «Artista A, Artista B» para máxima compatibilidad con reproductores.'; - - @override - String get optionsArtistTagModeSplitVorbis => - 'Separar etiquetas para FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Escribe una etiqueta de artista por cada artista en FLAC y Opus; MP3 y M4A se mantienen combinados.'; - - @override - String get optionsExtensionStore => 'Repositorio de extensiones'; - - @override - String get optionsExtensionStoreSubtitle => - 'Mostrar la pestaña del repositorio en la navegación'; - - @override - String get optionsCheckUpdates => 'Buscar actualizaciones'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Notificar cuando una nueva versión esté disponible'; - - @override - String get optionsUpdateChannel => 'Tipo de actualizaciones'; - - @override - String get optionsUpdateChannelStable => 'Solo versiones estables'; - - @override - String get optionsUpdateChannelPreview => 'Obtener versiones preliminares'; - - @override - String get optionsUpdateChannelWarning => - 'La versión preliminar puede contener errores o funciones incompletas'; - - @override - String get optionsClearHistory => 'Borrar historial de descargas'; - - @override - String get optionsClearHistorySubtitle => - 'Eliminar todas las pistas descargadas del historial'; - - @override - String get optionsDetailedLogging => 'Registro detallado'; - - @override - String get optionsDetailedLoggingOn => 'Se están registrando logs detallados'; - - @override - String get optionsDetailedLoggingOff => 'Activar para informes de errores'; - - @override - String get extensionsTitle => 'Extensiones'; - - @override - String get extensionsDisabled => 'Desactivado'; - - @override - String extensionsVersion(String version) { - return 'Versión $version'; - } - - @override - String get extensionsUninstall => 'Desinstalar'; - - @override - String get storeTitle => 'Repositorio de extensiones'; - - @override - String get storeSearch => 'Buscar extensiones...'; - - @override - String get storeInstall => 'Instalar'; - - @override - String get storeInstalled => 'Instalada'; - - @override - String get storeUpdate => 'Actualizar'; - - @override - String get aboutTitle => 'Acerca de'; - - @override - String get aboutContributors => 'Colaboradores'; - - @override - String get aboutMobileDeveloper => 'Desarrollador de versiones móviles'; - - @override - String get aboutOriginalCreator => 'Creador original de SpotiFLAC'; - - @override - String get aboutLogoArtist => - '¡El talentoso artista que creó el hermoso logo de nuestra app!'; - - @override - String get aboutTranslators => 'Traductores'; - - @override - String get aboutSpecialThanks => 'Agradecimientos especiales'; - - @override - String get aboutLinks => 'Enlaces'; - - @override - String get aboutMobileSource => 'Código fuente de la versión móvil'; - - @override - String get aboutPCSource => 'Código fuente de la versión para PC'; - - @override - String get aboutKeepAndroidOpen => 'Mantener Android activo'; - - @override - String get aboutReportIssue => 'Reportar un problema'; - - @override - String get aboutReportIssueSubtitle => - 'Reporta cualquier problema que encuentres'; - - @override - String get aboutFeatureRequest => 'Sugerir una función'; - - @override - String get aboutFeatureRequestSubtitle => - 'Sugerir nuevas funciones para la aplicación'; - - @override - String get aboutTelegramChannel => 'Canal de Telegram'; - - @override - String get aboutTelegramChannelSubtitle => 'Anuncios y actualizaciones'; - - @override - String get aboutTelegramChat => 'Comunidad de Telegram'; - - @override - String get aboutTelegramChatSubtitle => 'Chatear con otros usuarios'; - - @override - String get aboutSocial => 'Redes sociales'; - - @override - String get aboutApp => 'Aplicación'; - - @override - String get aboutVersion => 'Versión'; - - @override - String get aboutBinimumDesc => - 'El creador de QQDL & HiFi API. Este proyecto ayudó a impulsar el soporte para descargas sin pérdida de calidad.'; - - @override - String get aboutSachinsenalDesc => - '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 => - 'Creador de I No tengo Spotify (IDHS). ¡La solución de enlace de reserva que salva el día!'; - - @override - String get aboutAppDescription => - 'Busca información musical, gestiona extensiones y organiza tu biblioteca.'; - - @override - String get artistAlbums => 'Álbumes'; - - @override - String get artistSingles => 'Pistas y mini-álbumes'; - - @override - String get artistCompilations => 'Compilaciones'; - - @override - String get artistPopular => 'Populares'; - - @override - String artistMonthlyListeners(String count) { - return '$count oyentes mensuales'; - } - - @override - String get trackMetadataService => 'Servicio'; - - @override - String get trackMetadataPlay => 'Reproducir'; - - @override - String get trackMetadataShare => 'Compartir'; - - @override - String get trackMetadataDelete => 'Eliminar'; - - @override - String get setupGrantPermission => 'Conceder permiso'; - - @override - String get setupSkip => 'Omitir por ahora'; - - @override - String get setupStorageAccessRequired => 'Acceso al almacenamiento requerido'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11+ requiere permiso \"Todos los archivos de acceso\" para guardar los archivos en la carpeta de descargas elegida.'; - - @override - String get setupOpenSettings => 'Abrir ajustes'; - - @override - String get setupPermissionDeniedMessage => - 'Permiso denegado. Por favor, conceda todos los permisos para continuar.'; - - @override - String setupPermissionRequired(String permissionType) { - return 'Permiso de $permissionType requerido'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return 'Se requiere un permiso $permissionType para la mejor experiencia. Puedes cambiar esto más tarde en ajustes.'; - } - - @override - String get setupUseDefaultFolder => '¿Usar carpeta por defecto?'; - - @override - String get setupNoFolderSelected => - 'No se ha seleccionado ninguna carpeta. ¿Desea utilizar la carpeta por defecto?'; - - @override - String get setupUseDefault => 'Usar por defecto'; - - @override - String get setupDownloadLocationTitle => 'Ubicación de descarga'; - - @override - String get setupDownloadLocationIosMessage => - 'En iOS, las descargas se guardan en la carpeta de documentos de la aplicación. Puede acceder a ellas desde la aplicación Archivos.'; - - @override - String get setupAppDocumentsFolder => 'Carpeta de documentos de App'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Recomendado - accesible desde la aplicación Archivos'; - - @override - String get setupChooseFromFiles => 'Elegir de archivos'; - - @override - String get setupChooseFromFilesSubtitle => - 'Seleccione iCloud u otra ubicación'; - - @override - String get setupIosEmptyFolderWarning => - 'Limitación de iOS: No se pueden seleccionar carpetas vacías. Elige una carpeta con al menos un archivo.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive no es compatible. Utilice la carpeta Documentos de la aplicación.'; - - @override - String get setupDownloadInFlac => - 'Descarga música con calidad sin pérdida y Hi-Res'; - - @override - String get setupStorageGranted => '¡Permiso de almacenamiento concedido!'; - - @override - String get setupStorageRequired => 'Permiso de almacenamiento requerido'; - - @override - String get setupStorageDescription => - 'SpotiFLAC necesita permiso de almacenamiento para guardar sus archivos de música descargados.'; - - @override - String get setupNotificationGranted => - '¡Acceso a las notificaciones permitido!'; - - @override - String get setupNotificationEnable => 'Activar notificaciones'; - - @override - String get setupFolderChoose => 'Cambiar carpeta de descargas'; - - @override - String get setupFolderDescription => - 'Seleccione una carpeta donde se guardará la música descargada.'; - - @override - String get setupSelectFolder => 'Seleccionar Carpeta'; - - @override - String get setupEnableNotifications => 'Activar notificaciones'; - - @override - String get setupNotificationBackgroundDescription => - 'Recibe notificaciones sobre el progreso de la descarga y la finalización. Esto te ayuda a rastrear las descargas cuando la aplicación está en segundo plano.'; - - @override - String get setupSkipForNow => 'Omitir por ahora'; - - @override - String get setupNext => 'Siguiente'; - - @override - String get setupGetStarted => 'Empezar'; - - @override - String get setupAllowAccessToManageFiles => - 'Por favor, activa \"Permitir el acceso para gestionar todos los archivos\" en la siguiente pantalla.'; - - @override - String get setupLanguageTitle => 'Elegir idioma'; - - @override - String get setupLanguageDescription => - 'Selecciona tu idioma preferido para la aplicación. Puedes cambiar esto luego en Configuración.'; - - @override - String get setupLanguageSystemDefault => 'Idioma predeterminado'; - - @override - String get dialogCancel => 'Cancelar'; - - @override - String get dialogSave => 'Guardar'; - - @override - String get dialogDelete => 'Eliminar'; - - @override - String get dialogRetry => 'Volver a intentar'; - - @override - String get dialogClear => 'Borrar'; - - @override - String get dialogDone => 'Hecho'; - - @override - String get dialogImport => 'Importar'; - - @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'; - - @override - String get dialogRemove => 'Eliminar'; - - @override - String get dialogUninstall => 'Desinstalar'; - - @override - String get dialogDiscardChanges => '¿Descartar cambios?'; - - @override - String get dialogUnsavedChanges => - 'Tienes cambios sin guardar. ¿Quieres descartarlos?'; - - @override - String get dialogClearAll => 'Eliminar todo'; - - @override - String get dialogRemoveExtension => 'Eliminar extensión'; - - @override - String get dialogRemoveExtensionMessage => - '¿Estás seguro de que quieres eliminar esta extensión? Esto no se puede deshacer.'; - - @override - String get dialogUninstallExtension => '¿Desinstalar extensión?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return '¿Estás seguro de que quieres eliminar $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Borrar historial'; - - @override - String get dialogClearHistoryMessage => - '¿Estás seguro de que quieres borrar todo el historial de descargas? Esta acción no se puede deshacer.'; - - @override - String get dialogDeleteSelectedTitle => 'Borrar Seleccionados'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return '¿Eliminar $count $_temp0 del historial?\n\nEsto también eliminará los archivos del almacenamiento.'; - } - - @override - String get dialogImportPlaylistTitle => 'Importar lista de reproducción'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Se han encontrado pistas $count en CSV. ¿Añadirlas para descargar la cola?'; - } - - @override - String csvImportTracks(int count) { - return '$count pistas de CSV'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return 'Añadido \"$trackName\" a la cola'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return 'Añadidas pistas $count a la cola'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" ya descargado'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" ya existe en tu biblioteca'; - } - - @override - String get snackbarHistoryCleared => 'Historial borrado'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return 'Eliminado $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'No se puede abrir el archivo: $error'; - } - - @override - String get snackbarViewQueue => 'Ver cola'; - - @override - String snackbarUrlCopied(String platform) { - return 'URL $platform copiada al portapapeles'; - } - - @override - String get snackbarFileNotFound => 'Archivo no encontrado'; - - @override - String get snackbarSelectExtFile => - 'Por favor, seleccione un archivo .spotiflac-ext'; - - @override - String get snackbarProviderPrioritySaved => 'Prioridad de proveedor guardada'; - - @override - String get snackbarMetadataProviderSaved => - 'Prioridad de proveedor de información guardada'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName instalado.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName actualizada.'; - } - - @override - String get snackbarFailedToInstall => 'Fallo al instalar la extensión'; - - @override - String get snackbarFailedToUpdate => 'Error al actualizar la extensión'; - - @override - String get errorRateLimited => 'Límite excedido'; - - @override - String get errorRateLimitedMessage => - 'Demasiadas solicitudes. Por favor, espere un momento antes de buscar de nuevo.'; - - @override - String get errorNoTracksFound => 'No se encontraron pistas'; - - @override - String get searchEmptyResultSubtitle => 'Prueba con otra palabra clave'; - - @override - String get errorUrlNotRecognized => 'Enlace no reconocido'; - - @override - String get errorUrlNotRecognizedMessage => - 'Este enlace no es compatible. Asegúrate de que la URL sea correcta y de tener instalada una extensión compatible.'; - - @override - String get errorUrlFetchFailed => - 'No se ha podido cargar el contenido de este enlace. Inténtalo de nuevo.'; - - @override - String errorMissingExtensionSource(String item) { - return 'No se puede cargar $item: falta una fuente de extensión'; - } - - @override - String get actionPause => 'Pausar'; - - @override - String get actionResume => 'Reanudar'; - - @override - String get actionCancel => 'Cancelar'; - - @override - String get actionSelectAll => 'Seleccionar Todo'; - - @override - String get actionDeselect => 'Deseleccionar'; - - @override - String selectionSelected(int count) { - return '$count seleccionado'; - } - - @override - String get selectionAllSelected => 'Todas las pistas seleccionadas'; - - @override - String get selectionSelectToDelete => 'Seleccionar pistas a eliminar'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Obteniendo información... $current/$total'; - } - - @override - String get progressReadingCsv => 'Leyendo CSV...'; - - @override - String get searchSongs => 'Canciones'; - - @override - String get searchArtists => 'Artistas'; - - @override - String get searchAlbums => 'Álbumes'; - - @override - String get searchPlaylists => 'Listas de reproducción'; - - @override - String get searchSortTitle => 'Ordenar resultados'; - - @override - String get searchSortDefault => 'Por defecto'; - - @override - String get searchSortTitleAZ => 'Nombre (A-Z)'; - - @override - String get searchSortTitleZA => 'Nombre (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artista (A-Z)'; - - @override - String get searchSortArtistZA => 'Artista (Z-A)'; - - @override - String get searchSortDurationShort => 'Duración (más corto)'; - - @override - String get searchSortDurationLong => 'Duración (más largo)'; - - @override - String get searchSortDateOldest => 'Fecha de lanzamiento (antiguo)'; - - @override - String get searchSortDateNewest => 'Fecha de lanzamiento (reciente)'; - - @override - String get tooltipPlay => 'Reproducir'; - - @override - String get filenameFormat => 'Formato del nombre del archivo'; - - @override - String get filenameShowAdvancedTags => 'Mostrar etiquetas avanzadas'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Habilitar etiquetas con formato para el relleno de pistas y los formatos de fecha'; - - @override - String get folderOrganizationNone => 'Ninguna organización'; - - @override - String get folderOrganizationByPlaylist => 'Por lista de reproducción'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Una carpeta independiente para cada lista de reproducción'; - - @override - String get folderOrganizationByArtist => 'Por Artista'; - - @override - String get folderOrganizationByAlbum => 'Por Álbum'; - - @override - String get folderOrganizationByArtistAlbum => 'Artista/Álbum'; - - @override - String get folderOrganizationDescription => - 'Organizar los archivos descargados en carpetas'; - - @override - String get folderOrganizationNoneSubtitle => - 'Todos los archivos de la carpeta de descargas'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Carpeta separada para cada artista'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Carpeta separada para cada artista'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Carpetas organizadas por artista y álbum'; - - @override - String get updateAvailable => 'Actualización Disponible'; - - @override - String get updateLater => 'Más tarde'; - - @override - String get updateStartingDownload => 'Iniciando descarga...'; - - @override - String get updateDownloadFailed => 'Descarga fallida'; - - @override - String get updateFailedMessage => 'Error al descargar la actualización'; - - @override - String get updateNewVersionReady => 'Una nueva versión está lista'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Actual'; - - @override - String get updateNew => 'Nuevo'; - - @override - String get updateDownloading => 'Descargando...'; - - @override - String get updateWhatsNew => 'Novedades'; - - @override - String get updateDownloadInstall => 'Descargar & Instalar'; - - @override - String get updateDontRemind => 'No recordar'; - - @override - String get providerPriorityTitle => 'Prioridad del proveedor'; - - @override - String get providerPriorityDescription => - 'Arrastra para reordenar los proveedores de descarga. La aplicación intentará usar los proveedores de arriba hacia abajo al descargar las pistas.'; - - @override - String get providerPriorityInfo => - 'Si una pista no está disponible en el primer proveedor, la aplicación intentará automáticamente el siguiente.'; - - @override - String get providerPriorityFallbackExtensionsDescription => - 'Elija las extensiones de descarga que se usarán como respaldo automático.'; - - @override - String get providerPriorityFallbackExtensionsHint => - 'Solo las extensiones activas con proveedor de descarga se listan aquí.'; - - @override - String get providerExtension => 'Extensión'; - - @override - String get metadataProviderPriorityTitle => 'Prioridad de la información'; - - @override - String get metadataProviderPriorityDescription => - 'Arrastra para reordenar los proveedores de información. La aplicación probará los proveedores de arriba hacia abajo al buscar pistas y obtener la información.'; - - @override - String get metadataProviderPriorityInfo => - 'Deezer no tiene límites de tasa y se recomienda como principal. Spotify puede valorar el límite después de muchas solicitudes.'; - - @override - String get logTitle => 'Registros'; - - @override - String get logCopied => 'Registros copiados al portapapeles'; - - @override - String get logSearchHint => 'Buscar registros...'; - - @override - String get logFilterLevel => 'Nivel'; - - @override - String get logFilterSection => 'Filtrar'; - - @override - String get logShareLogs => 'Compartir registros'; - - @override - String get logClearLogs => 'Borrar registros'; - - @override - String get logClearLogsTitle => 'Limpiar registros'; - - @override - String get logClearLogsMessage => - '¿Estás seguro qué deseas limpiar todos los registros?'; - - @override - String get logFilterBySeverity => 'Filtrar los registros por gravedad'; - - @override - String get logNoLogsYet => 'No hay registros aún'; - - @override - String get logNoLogsYetSubtitle => - 'Los registros aparecerán aquí mientras usas la aplicación'; - - @override - String logEntriesFiltered(int count) { - return 'Entradas ($count filtradas)'; - } - - @override - String logEntries(int count) { - return 'Entradas ($count)'; - } - - @override - String get channelStable => 'Estable'; - - @override - String get channelPreview => 'Vista previa'; - - @override - String get sectionSearchSource => 'Buscar Fuente'; - - @override - String get sectionDownload => 'Descargar'; - - @override - String get sectionPerformance => 'Alto rendimiento'; - - @override - String get sectionApp => 'Aplicación'; - - @override - String get sectionData => 'Datos'; - - @override - String get sectionDebug => 'Depuración'; - - @override - String get sectionService => 'Servicio'; - - @override - String get sectionAudioQuality => 'Calidad de Sonido'; - - @override - String get sectionFileSettings => 'Ajustes del archivo'; - - @override - String get sectionLyrics => 'Letras'; - - @override - String get lyricsMode => 'Modo Letras'; - - @override - String get lyricsModeDescription => - 'Elige cómo se guardan las letras de tus descargas'; - - @override - String get lyricsModeEmbed => 'Insertar en archivo'; - - @override - String get lyricsModeEmbedSubtitle => - 'Letras almacenadas en la información FLAC'; - - @override - String get lyricsModeExternal => 'Archivo .lrc externo'; - - @override - String get lyricsModeExternalSubtitle => - 'Archivo .lrc separado para reproductores como Samsung Music'; - - @override - String get lyricsModeBoth => 'Ambos'; - - @override - String get lyricsModeBothSubtitle => 'Insertar y guardar archivo .lrc'; - - @override - String get sectionColor => 'Colores'; - - @override - String get sectionTheme => 'Tema'; - - @override - String get sectionLayout => 'Diseño'; - - @override - String get sectionLanguage => 'Idioma'; - - @override - String get appearanceLanguage => 'Idioma de la aplicación'; - - @override - String get settingsAppearanceSubtitle => 'Tema, colores, pantalla'; - - @override - String get settingsDownloadSubtitle => 'Servicio, calidad, respaldo'; - - @override - String get settingsExtensionsSubtitle => - 'Administrar proveedores de descarga'; - - @override - String get settingsLogsSubtitle => - 'Ver registros de aplicaciones para depuración'; - - @override - String get loadingSharedLink => 'Cargando enlace compartido...'; - - @override - String get pressBackAgainToExit => 'Presione de nuevo para salir'; - - @override - String downloadAllCount(int count) { - return 'Descargar todo ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count pistas', - one: '1 pista', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'Copiar ruta de archivo'; - - @override - String get trackRemoveFromDevice => 'Eliminar del dispositivo'; - - @override - String get trackLoadLyrics => 'Cargar letras'; - - @override - String get trackMetadata => 'Información'; - - @override - String get trackFileInfo => 'Información de archivo'; - - @override - String get trackLyrics => 'Letras'; - - @override - String get trackFileNotFound => 'Archivo no encontrado'; - - @override - String get trackOpenInDeezer => 'Abrir en Deezer'; - - @override - String get trackOpenInSpotify => 'Abrir en Spotify'; - - @override - String get trackTrackName => 'Nombre de pista'; - - @override - String get trackArtist => 'Artista'; - - @override - String get trackAlbumArtist => 'Artista del álbum'; - - @override - String get trackAlbum => 'Álbum'; - - @override - String get trackTrackNumber => 'Número de pista'; - - @override - String get trackDiscNumber => 'Número de disco'; - - @override - String get trackDuration => 'Duración'; - - @override - String get trackAudioQuality => 'Calidad del sonido'; - - @override - String get trackReleaseDate => 'Fecha de lanzamiento'; - - @override - String get trackGenre => 'Género'; - - @override - String get trackLabel => 'Etiqueta'; - - @override - String get trackCopyright => 'Derechos de autor'; - - @override - String get trackDownloaded => 'Descargado'; - - @override - String get trackCopyLyrics => 'Copiar letras'; - - @override - String trackLyricsSource(String source) { - return 'Fuente: $source'; - } - - @override - String get trackLyricsNotAvailable => 'Letras no disponibles para este tema'; - - @override - String get trackLyricsNotInFile => 'No se encontraron letras'; - - @override - String get trackFetchOnlineLyrics => 'Obtener en línea'; - - @override - String get trackLyricsTimeout => - 'Tiempo de espera agotado. Inténtalo de nuevo más tarde.'; - - @override - String get trackLyricsLoadFailed => 'Error al cargar la letra'; - - @override - String get trackEmbedLyrics => 'Incrustar Letras'; - - @override - String get trackLyricsEmbedded => 'Letra incrustada con éxito'; - - @override - String get trackInstrumental => 'Pista instrumental'; - - @override - String get trackCopiedToClipboard => 'Copiado al portapapeles'; - - @override - String get trackDeleteConfirmTitle => '¿Eliminar del dispositivo?'; - - @override - String get trackDeleteConfirmMessage => - 'Esto eliminará permanentemente el archivo descargado y lo eliminará de tu historial.'; - - @override - String get dateToday => 'Hoy'; - - @override - String get dateYesterday => 'Ayer'; - - @override - String dateDaysAgo(int count) { - return 'Hace $count días'; - } - - @override - String dateWeeksAgo(int count) { - return '$count semanas antes'; - } - - @override - String dateMonthsAgo(int count) { - return '$count meses atrás'; - } - - @override - String get storeFilterAll => 'Todo'; - - @override - String get storeFilterMetadata => 'Información'; - - @override - String get storeFilterDownload => 'Descargar'; - - @override - String get storeFilterUtility => 'Utilidad'; - - @override - String get storeFilterLyrics => 'Letras'; - - @override - String get storeFilterIntegration => 'Integración'; - - @override - String get storeClearFilters => 'Limpiar filtros'; - - @override - String get storeAddRepoTitle => 'Añadir repositorio de extensiones'; - - @override - String get storeAddRepoDescription => - 'Introduzca una URL de repositorio de GitHub que contenga un archivo registry.json para navegar e instalar extensiones.'; - - @override - String get storeRepoUrlLabel => 'URL del repositorio'; - - @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; - - @override - String get storeAddRepoButton => 'Añadir repositorio'; - - @override - String get storeChangeRepoTooltip => 'Cambiar repositorio'; - - @override - String get storeRepoDialogTitle => 'Repositorio de extensiones'; - - @override - String get storeRepoDialogCurrent => 'Repositorio actual:'; - - @override - String get storeNewRepoUrlLabel => 'Nueva URL del repositorio'; - - @override - String get storeLoadError => 'Falló al cargar repositorio'; - - @override - String get storeEmptyNoExtensions => 'No hay extensiones disponibles'; - - @override - String get storeEmptyNoResults => 'No se encontraron extensiones'; - - @override - String get extensionId => 'ID'; - - @override - String get extensionError => 'Error'; - - @override - String get extensionCapabilities => 'Recursos'; - - @override - String get extensionMetadataProvider => 'Proveedor de información'; - - @override - String get extensionDownloadProvider => 'Proveedor de descargas'; - - @override - String get extensionLyricsProvider => 'Proveedor de letras'; - - @override - String get extensionUrlHandler => 'Gestor de URL'; - - @override - String get extensionQualityOptions => 'Opciones de calidad'; - - @override - String get extensionPostProcessingHooks => 'Post-procesamiento de hooks'; - - @override - String get extensionPermissions => 'Permisos'; - - @override - String get extensionSettings => 'Ajustes'; - - @override - String get extensionRemoveButton => 'Eliminar extensión'; - - @override - String get extensionUpdated => 'Actualizado'; - - @override - String get extensionMinAppVersion => 'Versión Mínima de la aplicación'; - - @override - String get extensionCustomTrackMatching => - 'Coincidencia de pista personalizada'; - - @override - String get extensionPostProcessing => 'Post-Procesamiento'; - - @override - String extensionHooksAvailable(int count) { - return '$count hook(s) disponibles'; - } - - @override - String extensionPatternsCount(int count) { - return 'Patrón(es) $count'; - } - - @override - String extensionStrategy(String strategy) { - return 'Estrategia: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'Prioridad del proveedor'; - - @override - String get extensionsInstalledSection => 'Extensiones instaladas'; - - @override - String get extensionsNoExtensions => 'No hay extensiones instaladas'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Instalar archivos .spotiflac-ext para añadir nuevos proveedores'; - - @override - String get extensionsInstallButton => 'Instalar extensión'; - - @override - String get extensionsInfoTip => - 'Las extensiones pueden añadir nueva información y proveedores de descargas. Solo instalar extensiones desde fuentes confiables.'; - - @override - String get extensionsInstalledSuccess => 'Extensión instalada correctamente'; - - @override - String extensionsInstalledCount(int count) { - return '$count Extensiones instaladas correctamente'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return '$installed Instalados de $attempted extensiones'; - } - - @override - String get extensionsDownloadPriority => 'Prioridad de descarga'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'Establecer orden de servicio de descarga'; - - @override - String get extensionsFallbackTitle => 'Respaldo de extensiones'; - - @override - String get extensionsFallbackSubtitle => - 'Elija que extensiones pueden usarse como reserva'; - - @override - String get extensionsNoDownloadProvider => - 'No hay extensiones con proveedor de descargas'; - - @override - String get extensionsMetadataPriority => 'Prioridad de la información'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Establecer orden de búsqueda y información'; - - @override - String get extensionsNoMetadataProvider => - 'No hay extensiones con el proveedor de información'; - - @override - String get extensionsSearchProvider => 'Proveedor de búsqueda'; - - @override - String get extensionsNoCustomSearch => - 'No hay extensiones con búsqueda personalizada'; - - @override - String get extensionsSearchProviderDescription => - 'Elegir qué servicio usar para buscar pistas'; - - @override - String get extensionsCustomSearch => 'Búsqueda personalizada'; - - @override - String get extensionsErrorLoading => 'Error al cargar la extensión'; - - @override - String get qualityFlacLossless => 'FLAC sin pérdida'; - - @override - String get qualityFlacLosslessSubtitle => '16-bit / 44,1 kHz'; - - @override - String get qualityHiResFlac => 'FLAC de alta resolución'; - - @override - String get qualityHiResFlacSubtitle => '24-bit / hasta 96 kHz'; - - @override - String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-bit / hasta 192 kHz'; - - @override - String get downloadLossy320 => 'Con pérdida, 320 kbps'; - - @override - String get downloadLossyFormat => 'Formato con pérdida'; - - @override - String get downloadLossy320Format => 'Formato con pérdida a 320 kbps'; - - @override - String get 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.'; - - @override - String get downloadLossyMp3 => 'MP3 (320 kbps)'; - - @override - String get downloadLossyMp3Subtitle => - 'Mejor compatibilidad, ~10 MB por pista'; - - @override - String get downloadLossyAac => 'AAC/M4A (320 kbps)'; - - @override - String get downloadLossyAacSubtitle => - 'La mejor compatibilidad con dispositivos móviles, formato M4A'; - - @override - String get downloadLossyOpus256 => 'OPUS (256 kbps)'; - - @override - String get downloadLossyOpus256Subtitle => - 'Mejor calidad de OPUS, ~8 MB por pista'; - - @override - String get downloadLossyOpus128 => 'OPUS (128 kbps)'; - - @override - String get downloadLossyOpus128Subtitle => 'Tamaño mínimo: ~4 MB por pista'; - - @override - String get downloadAskBeforeDownload => 'Preguntar antes de descargar'; - - @override - String get downloadDirectory => 'Carpeta de descarga'; - - @override - String get downloadSeparateSinglesFolder => 'Carpeta separada para pistas'; - - @override - String get downloadAlbumFolderStructure => 'Estructura de carpeta del álbum'; - - @override - String get albumFolderStructureDescription => - 'Elige cómo se estructuran las carpetas de los álbumes'; - - @override - String get downloadUseAlbumArtistForFolders => - 'Usar álbum de artista cómo carpeta'; - - @override - String get downloadUsePrimaryArtistOnly => - 'Artista principal solo para carpetas'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - 'Se han eliminado los nombres de los artistas destacados del nombre de la carpeta (p. ej., Justin Bieber, Quavo → Justin Bieber)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - 'Se utiliza el nombre completo del artista como nombre de la carpeta'; - - @override - String get downloadSelectQuality => 'Seleccionar Calidad'; - - @override - String get downloadFrom => 'Descargar Desde'; - - @override - String get appearanceAmoledDark => 'AMOLED Oscuro'; - - @override - String get appearanceAmoledDarkSubtitle => 'Fondo negro puro'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get queueClearAll => 'Eliminar todo'; - - @override - String get queueClearAllMessage => - '¿Estás seguro de que quieres borrar todas las descargas?'; - - @override - String get settingsAutoExportFailed => 'Autoexportar descargas fallidas'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Guardar descargas fallidas en el archivo TXT automáticamente'; - - @override - String get settingsDownloadNetwork => 'Red de descarga'; - - @override - String get settingsDownloadNetworkAny => 'Wi-Fi + Datos móviles'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Iniciar solo por Wi-Fi'; - - @override - String get settingsDownloadNetworkSubtitle => - 'Elegir qué red usar para descargas. Cuando se establece en Wi-Fi solamente, las descargas se detendrán en los datos móviles.'; - - @override - String get settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'Artista / Álbum'; - - @override - String get albumFolderArtistAlbumSubtitle => - 'Álbumes/Nombre del Artista/Nombre del Álbum/'; - - @override - String get albumFolderArtistYearAlbum => 'Artista / [Año] Álbum'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Álbumes/Nombre del Artista /[2005] Nombre del Álbum/'; - - @override - String get albumFolderAlbumOnly => 'Sólo álbum'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Álbumes/Nombre del Álbum/'; - - @override - String get albumFolderYearAlbum => 'Álbum [Año]'; - - @override - String get albumFolderYearAlbumSubtitle => 'Álbumes/[2005] Nombre del Álbum/'; - - @override - String get albumFolderArtistAlbumSingles => 'Artista / Álbum + Pistas'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Artista/Álbum/ y Artista/pistas/'; - - @override - String get albumFolderArtistAlbumFlat => 'Artista / Álbum (sencillos planos)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artista/Álbum/ y Artista/canción.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Borrar seleccionados'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return '¿Eliminar $count $_temp0 del historial?\n\nEsto también eliminará los archivos del almacenamiento.'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return '$count seleccionado'; - } - - @override - String get downloadedAlbumTapToSelect => 'Toca las pistas para seleccionar'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return '¡Eliminar $count $_temp0'; - } - - @override - String get downloadedAlbumSelectToDelete => 'Seleccionar pistas a eliminar'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Disco $discNumber'; - } - - @override - String get recentTypeArtist => 'Artista'; - - @override - String get recentTypeAlbum => 'Álbum'; - - @override - String get recentTypeSong => 'Canción'; - - @override - String get recentTypePlaylist => 'Lista de reproducción'; - - @override - String get recentEmpty => 'Aún no hay entradas recientes'; - - @override - String get recentShowAllDownloads => 'Mostrar todas las descargas'; - - @override - String recentPlaylistInfo(String name) { - return 'Lista de reproducción: $name'; - } - - @override - String get discographyDownload => 'Descargar Discografía'; - - @override - String get discographyDownloadAll => 'Descargar Todo'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$count pistas de $albumCount lanzamientos'; - } - - @override - String get discographyAlbumsOnly => 'Sólo álbumes'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count pistas de $albumCount álbumes'; - } - - @override - String get discographySinglesOnly => 'Solo sencillos & mini-álbum'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count Pistas de $albumCount sencillos'; - } - - @override - String get discographySelectAlbums => 'Seleccionar álbumes...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Elige álbumes o sencillos concretos'; - - @override - String get discographyFetchingTracks => 'Cargando canciones...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return 'Cargando $current de $total...'; - } - - @override - String discographySelectedCount(int count) { - return '$count seleccionados'; - } - - @override - String get discographyDownloadSelected => 'Descargar seleccionados'; - - @override - String discographyAddedToQueue(int count) { - return 'Se agregaron $count canciones a la lista de espera'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added añadidas, $skipped ya fueron descargadas'; - } - - @override - String get discographyNoAlbums => 'No hay álbumes disponibles'; - - @override - String get discographyFailedToFetch => - 'Hubo un error para encontrar algunos álbumes'; - - @override - String get sectionStorageAccess => 'Permiso de almacenamiento'; - - @override - String get allFilesAccess => 'Acceso a todos los archivos'; - - @override - String get allFilesAccessEnabledSubtitle => - 'Puede escribir en cualquier carpeta'; - - @override - String get allFilesAccessDisabledSubtitle => 'Limitado a carpetas de media'; - - @override - String get allFilesAccessDescription => - 'Habilite esto si tiene problemas de escritura al guardar en carpetas personalizadas. Android 13+ restringe el acceso a ciertas carpetas por defecto.'; - - @override - String get allFilesAccessDeniedMessage => - 'Permiso denegado. Por favor habilite \'Acceso a todos los archivos\' de manera manual en la configuración del sistema.'; - - @override - String get allFilesAccessDisabledMessage => - 'Acceso a todos los archivos desactivado. La aplicación usará acceso limitado al almacenamiento.'; - - @override - String get settingsLocalLibrary => 'Librería local'; - - @override - String get settingsLocalLibrarySubtitle => - 'Escanear música y detectar duplicados'; - - @override - String get settingsCache => 'Almacenamiento & caché'; - - @override - String get settingsCacheSubtitle => 'Ver tamaño y borrar datos en caché'; - - @override - String get libraryTitle => 'Librería local'; - - @override - String get libraryScanSettings => 'Configuración de escaneo'; - - @override - String get libraryEnableLocalLibrary => 'Habilitar librería local'; - - @override - String get libraryEnableLocalLibrarySubtitle => - 'Escanea y rastrea tu música existente'; - - @override - String get libraryFolder => 'Carpeta de la librería'; - - @override - String get libraryFolderHint => 'Toque para seleccionar la carpeta'; - - @override - String get libraryShowDuplicateIndicator => 'Mostrar indicador de duplicados'; - - @override - String get libraryShowDuplicateIndicatorSubtitle => - 'Mostrar al buscar canciones existentes'; - - @override - String get libraryAutoScan => 'Escaneo automático'; - - @override - String get libraryAutoScanSubtitle => - 'Escanear automáticamente tu librería por nuevos archivos'; - - @override - String get libraryAutoScanOff => 'Apagado'; - - @override - String get libraryAutoScanOnOpen => 'Cada vez que la aplicación se abra'; - - @override - String get libraryAutoScanDaily => 'Diariamente'; - - @override - String get libraryAutoScanWeekly => 'Semanalmente'; - - @override - String get libraryActions => 'Acciones'; - - @override - String get libraryScan => 'Escanear librería'; - - @override - String get libraryScanSubtitle => 'Escanear archivos de audio'; - - @override - String get libraryScanSelectFolderFirst => 'Primero seleccione una carpeta'; - - @override - String get libraryCleanupMissingFiles => 'Limpiar archivos faltantes'; - - @override - String get libraryCleanupMissingFilesSubtitle => - 'Remover entradas para archivos que ya no existen'; - - @override - String get libraryClear => 'Limpiar librería'; - - @override - String get libraryClearSubtitle => 'Remover todas las canciones escaneadas'; - - @override - String get libraryClearConfirmTitle => 'Limpiar librería'; - - @override - String get libraryClearConfirmMessage => - 'Esto removerá todas las canciones escaneadas de tu librería. Los archivos de música no serán eliminados.'; - - @override - String get libraryAbout => 'Acerca de la librería local'; - - @override - String get libraryAboutDescription => - 'Escanea tu colección de música para detectar duplicados al descargar. Permite formatos FLAC, M4A, MP3, Opus, y OGG. La meta data será leída de los archivos cuando sea posible.'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'archivos', - one: 'archivo', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Último escaneo: $time'; - } - - @override - String get libraryLastScannedNever => 'Nunca'; - - @override - String get libraryScanning => 'Escaneando...'; - - @override - String get libraryScanFinalizing => 'Finalizando la biblioteca...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$progress% de $total archivos'; - } - - @override - String get libraryInLibrary => 'En la biblioteca'; - - @override - String libraryRemovedMissingFiles(int count) { - return 'Eliminados $count archivos faltantes de la biblioteca'; - } - - @override - String get libraryCleared => 'Biblioteca vaciada'; - - @override - String get libraryStorageAccessRequired => - 'Permiso de acceso al almacenamiento requerido'; - - @override - String get libraryStorageAccessMessage => - 'SpotiFLAC necesita acceso al almacenamiento para escanear tu biblioteca musical. Por favor, concede el permiso en los ajustes.'; - - @override - String get libraryFolderNotExist => 'La carpeta seleccionada no existe'; - - @override - String get librarySourceDownloaded => 'Descargado'; - - @override - String get librarySourceLocal => 'En el dispositivo'; - - @override - String get libraryFilterAll => 'Todos'; - - @override - String get libraryFilterDownloaded => 'Descargado'; - - @override - String get libraryFilterLocal => 'En el dispositivo'; - - @override - String get libraryFilterTitle => 'Filtros'; - - @override - String get libraryFilterReset => 'Restablecer'; - - @override - String get libraryFilterApply => 'Aplicar'; - - @override - String get libraryFilterSource => 'Fuente'; - - @override - String get libraryFilterQuality => 'Calidad'; - - @override - String get libraryFilterQualityHiRes => 'Hi-Res (24-bit)'; - - @override - String get libraryFilterQualityCD => 'CD (16-bit)'; - - @override - String get libraryFilterQualityLossy => 'Con pérdida'; - - @override - String get libraryFilterFormat => 'Formato'; - - @override - String get libraryFilterMetadata => 'Información'; - - @override - String get libraryFilterMetadataComplete => 'Información completa'; - - @override - String get libraryFilterMetadataMissingAny => 'Falta información (meta-data)'; - - @override - String get libraryFilterMetadataMissingYear => 'Falta año'; - - @override - String get libraryFilterMetadataMissingGenre => 'Falta género'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => - 'Falta artiste de álbum'; - - @override - String get libraryFilterSort => 'Ordenar'; - - @override - String get libraryFilterSortLatest => 'Reciente'; - - @override - String get libraryFilterSortOldest => 'Más antiguo'; - - @override - String get libraryFilterSortAlbumAsc => 'Álbum (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Álbum (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Género (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Género (Z-A)'; - - @override - String get timeJustNow => 'Hace un momento'; - - @override - String timeMinutesAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count minutos atrás', - one: 'hace 1 minuto', - ); - return '$_temp0'; - } - - @override - String timeHoursAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count horas atrás', - one: '1 hora atrás', - ); - return '$_temp0'; - } - - @override - String get tutorialWelcomeTitle => - '¡Te damos la bienvenida a SpotiFLAC Mobile!'; - - @override - String get tutorialWelcomeDesc => - 'Aprende cómo descargar tu música favorita en excelente calidad. Este tutorial te mostrará lo básico.'; - - @override - String get tutorialWelcomeTip1 => - 'Busca con una extensión instalada o pega un enlace compatible'; - - @override - String get tutorialWelcomeTip2 => - 'Obtén audio de calidad FLAC mediante las extensiones de descarga instaladas'; - - @override - String get tutorialWelcomeTip3 => - 'Información automática, portadas y letras integradas'; - - @override - String get tutorialSearchTitle => 'Buscando música'; - - @override - String get tutorialSearchDesc => - 'Hay dos maneras fáciles de encontrar la música que quieres descargar.'; - - @override - String get tutorialDownloadTitle => 'Descargando música'; - - @override - String get tutorialDownloadDesc => - 'Descargar música es simple y rápido. Así es como funciona.'; - - @override - String get tutorialLibraryTitle => 'Tu biblioteca'; - - @override - String get tutorialLibraryDesc => - 'Toda tu música descargada está organizada en la pestaña Biblioteca.'; - - @override - String get tutorialLibraryTip1 => - 'Ver progreso de descarga y cola en la pestaña de biblioteca'; - - @override - String get tutorialLibraryTip2 => - 'Pulsa cualquier pista para abrirla con tu reproductor multimedia'; - - @override - String get tutorialLibraryTip3 => - 'Cambiar modo de vista entre modo lista y cuadrícula para mejorar navegación'; - - @override - String get tutorialExtensionsTitle => 'Extensiones'; - - @override - String get tutorialExtensionsDesc => - 'Extiende las capacidades de la aplicación con extensiones creadas por la comunidad.'; - - @override - String get tutorialExtensionsTip1 => - 'Navega por la pestaña de repo para descubrir extensiones'; - - @override - String get tutorialExtensionsTip2 => - 'Añadir nuevos proveedores de descargas o fuentes de búsqueda'; - - @override - String get tutorialExtensionsTip3 => - 'Obtén letras, información mejorada y más características'; - - @override - String get tutorialSettingsTitle => 'Personaliza tu experiencia'; - - @override - String get tutorialSettingsDesc => - 'Personaliza la aplicación en Ajustes según tus preferencias.'; - - @override - String get tutorialSettingsTip1 => - 'Cambia la ubicación de las descargas y la organización de las carpetas'; - - @override - String get tutorialSettingsTip2 => - 'Configura la calidad de audio predeterminada y las preferencias de formato'; - - @override - String get tutorialSettingsTip3 => - 'Personaliza el tema y el aspecto de la aplicación'; - - @override - String get tutorialReadyMessage => - '¡Todo preparado!, puedes descargar tu música favorita.'; - - @override - String get libraryForceFullScan => 'Forzar análisis completo'; - - @override - String get libraryForceFullScanSubtitle => - 'Volver a escanear archivos, ignorando caché'; - - @override - String get cleanupOrphanedDownloads => 'Borrar descargar huérfanas'; - - @override - String get cleanupOrphanedDownloadsSubtitle => - 'Borrar historial de archivos que no existen'; - - @override - String cleanupOrphanedDownloadsResult(int count) { - return 'Se removieron $count entradas huérfanas del historial.'; - } - - @override - String get cleanupOrphanedDownloadsNone => - 'Sin entradas huérfanas encontradas'; - - @override - String get cacheTitle => 'Almacenamiento y caché'; - - @override - String get cacheSummaryTitle => 'Resumen de la caché'; - - @override - String get cacheSummarySubtitle => - 'Limpiar la caché no eliminará los archivos de música descargados.'; - - @override - String cacheEstimatedTotal(String size) { - return 'Uso estimado de caché: $size'; - } - - @override - String get cacheSectionStorage => 'Datos almacenados en caché'; - - @override - String get cacheSectionMaintenance => 'Mantenimiento'; - - @override - String get cacheAppDirectory => 'Directorio de caché'; - - @override - String get cacheAppDirectoryDesc => - 'Respuestas HTTP, datos WebView y otros datos temporales.'; - - @override - String get cacheTempDirectory => 'Directorio temporal'; - - @override - String get cacheTempDirectoryDesc => - 'Archivos temporales de descargas y conversión de audio.'; - - @override - String get cacheCoverImage => 'Caché de imágenes de portada'; - - @override - String get cacheCoverImageDesc => - 'Álbum descargado y portada de pista. Se volverá a descargar cuando se vea.'; - - @override - String get cacheLibraryCover => 'Caché de portada (biblioteca)'; - - @override - String get cacheLibraryCoverDesc => - 'Portada extraída de archivos locales. Se extraerá de nuevo en el próximo escaneo.'; - - @override - String get libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @override - String get cacheExploreFeed => 'Explorar caché de inicio'; - - @override - String get cacheExploreFeedDesc => - 'Explorar contenido de pestaña (nuevas versiones, tendencias). Se actualiza en cada visita.'; - - @override - String get cacheTrackLookup => 'Caché de búsqueda'; - - @override - String get cacheTrackLookupDesc => - 'Búsqueda de ID de Spotify/Deezer. Limpiar podría ralentizar algunas búsquedas.'; - - @override - String get cacheCleanupUnusedDesc => - 'Borre el historial de archivos huérfanos y las entradas en la biblioteca.'; - - @override - String get cacheNoData => 'No hay datos en caché'; - - @override - String cacheSizeWithFiles(String size, int count) { - return '$size en $count archivos'; - } - - @override - String cacheSizeOnly(String size) { - return '$size'; - } - - @override - String cacheEntries(int count) { - return '$count registros'; - } - - @override - String cacheClearSuccess(String target) { - return 'Limpiado: $target'; - } - - @override - String get cacheClearConfirmTitle => '¿Limpiar caché?'; - - @override - String cacheClearConfirmMessage(String target) { - return 'Esto borrará los datos en caché para $target. Los archivos descargados no se eliminan.'; - } - - @override - String get cacheClearAllConfirmTitle => '¿Quieres limpiar todas las cachés?'; - - @override - String get cacheClearAllConfirmMessage => - 'Esto borrará todo el caché de categorías en esta página. Los archivos descargados no se eliminan.'; - - @override - String get cacheClearAll => 'Borrar todo el caché'; - - @override - String get cacheCleanupUnused => 'Limpiar datos sin usar'; - - @override - String get cacheCleanupUnusedSubtitle => - 'Borrar historial de descargas huérfanas y entradas faltantes en biblioteca'; - - @override - String cacheCleanupResult(int downloadCount, int libraryCount) { - return 'Limpieza copletada: $downloadCount descargas huéranas, $libraryCount entradas faltantes de librería'; - } - - @override - String get cacheRefreshStats => 'Actualizar estadisticas'; - - @override - String get trackSaveCoverArt => 'Guardar portada'; - - @override - String get trackSaveLyrics => 'Guardar letra (.lrc)'; - - @override - String get trackSaveLyricsProgress => 'Guardando letra...'; - - @override - String get trackReEnrich => 'Volver a enriquecer'; - - @override - String get trackReEnrichOnlineSubtitle => - 'Buscar información en línea y incrustar al archivo'; - - @override - String get trackReEnrichFieldCover => 'Carátula'; - - @override - String get trackReEnrichFieldLyrics => 'Letra'; - - @override - String get trackReEnrichFieldBasicTags => 'Álbum, Artista del Álbum'; - - @override - String get trackReEnrichFieldTrackInfo => 'Número de pista(s) y disco(s).'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Fecha e ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Género, etiqueta, derechos de autor'; - - @override - String get trackReEnrichSelectAll => 'Seleccionar todos'; - - @override - String get trackEditMetadata => 'Editar información'; - - @override - String trackCoverSaved(String fileName) { - return 'Carátula guardada en $fileName'; - } - - @override - String get trackCoverNoSource => 'No hay fuente de portadas disponible'; - - @override - String trackLyricsSaved(String fileName) { - return 'Letra guardada en $fileName'; - } - - @override - String get trackReEnrichProgress => 'Obteniendo información...'; - - @override - String get trackReEnrichSearching => 'Buscando información en línea...'; - - @override - String get trackReEnrichSuccess => 'Información '; - - @override - String get trackReEnrichFfmpegFailed => - 'Información incrustada con FFmpeg falló'; - - @override - String get queueFlacAction => 'Encolar FLAC'; - - @override - String queueFlacConfirmMessage(int count) { - return 'Buscar coincidencias en línea para las pistas seleccionadas y en cola de descargas\n\nArchivos existentes no serán afectados o borrados.\n\nSolo coincidencia de alta confianza serán puestas automáticamente.\n\n$count seleccionado'; - } - - @override - String get queueFlacNoReliableMatches => - 'Sin coincidencias en línea de confianza'; - - @override - String queueFlacQueuedWithSkipped(int addedCount, int skippedCount) { - return 'Añadido $addedCount pistas a la cola, omitidas $skippedCount'; - } - - @override - String trackSaveFailed(String error) { - return 'Error: $error'; - } - - @override - String get trackConvertFormat => 'Convertir formato'; - - @override - String get trackConvertTitle => 'Convertir audio'; - - @override - String get trackConvertTargetFormat => 'Formato de destino'; - - @override - String get trackConvertBitrate => 'Tasa de bits'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @override - String get trackConvertConfirmTitle => 'Confirmar conversión'; - - @override - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ) { - return '¿Convertir desde $sourceFormat a $targetFormat a $bitrate?'; - } - - @override - String trackConvertConfirmMessageLossless( - String sourceFormat, - String targetFormat, - ) { - return 'Convertir de $sourceFormat a $targetFormat? \n(Sin pérdidas)\n\nEl archivo original será eliminado después de la conversión.'; - } - - @override - String trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @override - String get trackConvertLosslessHint => - 'Conversión sin pérdidas — sin pérdida de calidad'; - - @override - String get trackConvertConverting => 'Convirtiendo Audio...'; - - @override - String trackConvertSuccess(String format) { - return 'Convertido a $format con éxito'; - } - - @override - String get trackConvertFailed => 'La conversión ha fallado'; - - @override - String get cueSplitTitle => 'Dividir hoja CUE'; - - @override - String cueSplitAlbum(String album) { - return 'Álbum: $album'; - } - - @override - String cueSplitArtist(String artist) { - return 'Artista: $artist'; - } - - @override - String cueSplitTrackCount(int count) { - return '$count pistas'; - } - - @override - String get cueSplitConfirmTitle => 'Dividir álbum CUE'; - - @override - String cueSplitConfirmMessage(String album, int count) { - 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 'Dividiendo hoja CUE... ($current/$total)'; - } - - @override - String cueSplitSuccess(int count) { - return 'Se dividió correctamente en $count pistas'; - } - - @override - String get cueSplitFailed => 'Fallo al dividir CUE'; - - @override - String get cueSplitNoAudioFile => - 'No se encontró el archivo de audio para esta hoja CUE'; - - @override - String get cueSplitButton => 'Dividir en pistas'; - - @override - String get actionCreate => 'Crear'; - - @override - String get collectionFoldersTitle => 'Mis carpetas'; - - @override - String get collectionWishlist => 'Lista de deseos'; - - @override - String get collectionLoved => 'Me gusta'; - - @override - String get collectionFavoriteArtists => 'Artistas favoritos'; - - @override - String get collectionPlaylist => 'Lista de reproducción'; - - @override - String get collectionAddToPlaylist => 'Añadir a la lista'; - - @override - String get collectionCreatePlaylist => 'Crear lista de reproducción'; - - @override - String get collectionNoPlaylistsYet => 'Aún no hay listas de reproducción'; - - @override - String collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count pistas', - one: '1 pista', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artistas', - one: '1 artista', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Añadida a \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Ya está en \"$playlistName\"'; - } - - @override - String get collectionPlaylistNameHint => 'Nombre de la lista de reproducción'; - - @override - String get collectionPlaylistNameRequired => - 'El nombre de la lista de reproducción es obligatorio'; - - @override - String get collectionRenamePlaylist => 'Renombrar lista de reproducción'; - - @override - String get collectionDeletePlaylist => 'Eliminar lista de reproducción'; - - @override - String get collectionPlaylistRenamed => 'Lista de reproducción renombrada'; - - @override - String get collectionWishlistEmptyTitle => 'La lista de deseos está vacía'; - - @override - String get collectionWishlistEmptySubtitle => - 'Toca el botón + en las pistas para guardar las que quieras descargar más tarde'; - - @override - String get collectionLovedEmptyTitle => 'La carpeta «Me gusta» está vacía'; - - @override - String get collectionLovedEmptySubtitle => - 'Toca «Me gusta» en las pistas para guardar tus favoritas.'; - - @override - String get collectionFavoriteArtistsEmptyTitle => - 'Aún no hay artistas favoritos'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Toca el corazón en la página del artista para guardarlo aquí'; - - @override - String get collectionPlaylistEmptyTitle => - 'La lista de reproducción está vacía'; - - @override - String get collectionPlaylistEmptySubtitle => - 'Mantén presionado el botón + en cualquier pista para añadirla aquí'; - - @override - String get collectionRemoveFromPlaylist => - 'Quitar de la lista de reproducción'; - - @override - String get collectionRemoveFromFolder => 'Quitar de la carpeta'; - - @override - String collectionAddedToLoved(String trackName) { - return '\"$trackName\" se agregó a «Me gusta»'; - } - - @override - String collectionRemovedFromLoved(String trackName) { - return '\"$trackName\" se eliminó de «Me gusta»'; - } - - @override - String collectionAddedToWishlist(String trackName) { - return '\"$trackName\" se agregó a la lista de deseos'; - } - - @override - String collectionRemovedFromWishlist(String trackName) { - return '\"$trackName\" se eliminó de la lista de deseos'; - } - - @override - String collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" se agregó a Artistas favoritos'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" se eliminó de Artistas favoritos'; - } - - @override - String get trackOptionAddToLoved => 'Agregar a «Me gusta»'; - - @override - String get trackOptionRemoveFromLoved => 'Quitar de «Me gusta»'; - - @override - String get trackOptionAddToWishlist => 'Añadir a la lista de deseos'; - - @override - String get trackOptionRemoveFromWishlist => 'Quitar de la lista de deseos'; - - @override - String get artistOptionAddToFavorites => 'Añadir a artistas favoritos'; - - @override - String get artistOptionRemoveFromFavorites => 'Quitar de Artistas favoritos'; - - @override - String get collectionPlaylistChangeCover => 'Cambiar imagen de portada'; - - @override - String get collectionPlaylistRemoveCover => 'Eliminar imagen de portada'; - - @override - String selectionShareCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return 'Compartir $count $_temp0'; - } - - @override - String get selectionShareNoFiles => - 'No se encontraron archivos para compartir'; - - @override - String selectionConvertCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return 'Convertir $count $_temp0'; - } - - @override - String get selectionConvertNoConvertible => - 'No se seleccionaron pistas que se puedan convertir'; - - @override - String get selectionBatchConvertConfirmTitle => 'Conversión por lotes'; - - @override - String selectionBatchConvertConfirmMessage( - int count, - String format, - String bitrate, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - 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 - String selectionBatchConvertConfirmMessageLossless(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - 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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Se convirtieron $success de $total pistas a $format'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count descargado'; - } - - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Carpeta nombrada según la etiqueta Artista del álbum'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Carpeta nombrada según la etiqueta Artista de la pista'; - - @override - String get lyricsProvidersTitle => 'Prioridad de proveedores de letras'; - - @override - String get lyricsProvidersDescription => - 'Activa, desactiva y reordena las fuentes de letras. Los proveedores se prueban de arriba hacia abajo hasta encontrar letras.'; - - @override - String get lyricsProvidersInfoText => - '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) { - return 'Activados ($count)'; - } - - @override - String lyricsProvidersDisabledSection(int count) { - return 'Desactivados ($count)'; - } - - @override - String get lyricsProvidersAtLeastOne => - 'Debe permanecer habilitado al menos un proveedor'; - - @override - String get lyricsProvidersSaved => - 'Prioridad de proveedores de letras guardada'; - - @override - String get lyricsProvidersDiscardContent => - 'Tienes cambios sin guardar que se perderán.'; - - @override - String get lyricsProviderLrclibDesc => - 'Base de datos de letras sincronizadas de código abierto'; - - @override - String get lyricsProviderNeteaseDesc => - 'NetEase Cloud Music (buena para canciones asiáticas)'; - - @override - String get lyricsProviderMusixmatchDesc => - 'La base de datos de letras más grande (multilingüe)'; - - @override - String get lyricsProviderAppleMusicDesc => - 'Letras sincronizadas palabra por palabra (a través de proxy)'; - - @override - String get lyricsProviderQqMusicDesc => - '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 => - 'Se requiere actualización del almacenamiento'; - - @override - String get 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.'; - - @override - String get safMigrationMessage2 => - 'Por favor, vuelve a seleccionar la carpeta de descargas para cambiar al nuevo sistema de almacenamiento.'; - - @override - String get safMigrationSuccess => - 'Carpeta de descargas actualizada al modo SAF'; - - @override - String get settingsDonate => 'Apoya el desarrollo'; - - @override - String get settingsDonateSubtitle => 'Compra un café al desarrollador'; - - @override - 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 backupCreated => 'Copia de seguridad creada'; - - @override - String get backupCreateFailed => 'No se pudo crear la copia de seguridad'; - - @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 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 repo.'; - } - - @override - String get tooltipLoveAll => 'Favoritos'; - - @override - String get tooltipAddToPlaylist => 'Añadir a la lista de reproducción'; - - @override - String snackbarRemovedTracksFromLoved(int count) { - return 'Eliminadas $count pistas de Favoritos'; - } - - @override - String snackbarAddedTracksToLoved(int count) { - return 'Agregadas $count pistas de Favoritos'; - } - - @override - String get dialogDownloadAllTitle => 'Descargar todo'; - - @override - String dialogDownloadAllMessage(int count) { - return '¿Descargar $count pistas?'; - } - - @override - String get homeSkipAlreadyDownloaded => 'Omitir canciones ya descargadas'; - - @override - String get homeGoToAlbum => 'Ir al álbum'; - - @override - String get homeAlbumInfoUnavailable => - 'La información del álbum no está disponible'; - - @override - String get snackbarLoadingCueSheet => 'Cargando hoja CUE...'; - - @override - String get snackbarMetadataSaved => 'Metadatos guardados correctamente'; - - @override - String get snackbarFailedToEmbedLyrics => 'Error al incrustar letras'; - - @override - String get snackbarFailedToWriteStorage => - 'Error al escribir de vuelta al almacenamiento'; - - @override - String snackbarError(String error) { - return 'Error: $error'; - } - - @override - String get snackbarNoActionDefined => - 'Ninguna acción definida para este botón'; - - @override - String get noTracksFoundForAlbum => - 'No se encontraron pistas para este álbum'; - - @override - String get downloadLocationSubtitle => - 'Elige dónde guardar tus pistas descargadas'; - - @override - String get storageModeAppFolder => 'Carpeta de la App (Recomendado)'; - - @override - String get storageModeAppFolderSubtitle => - 'Guarda en Music/SpotiFLAC por defecto'; - - @override - String get storageModeSaf => 'Carpeta personalizada (SAF)'; - - @override - String get storageModeSafSubtitle => - 'Escoge cualquier carpeta, incluyendo la tarjeta SD'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Usa $artist, $title, $album, $track, $year, $date, $disc como marcadores de posición.'; - } - - @override - String get downloadFilenameInsertTag => 'Toca para insertar etiqueta:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Sencillos y EPs guardados en una carpeta separada'; - - @override - String get downloadSeparateSinglesDisabled => - 'Sencillos y álbumes guardados en la misma carpeta'; - - @override - String get downloadArtistNameFilters => 'Filtros de Nombre del Artista'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'Región de SongLink'; - - @override - String get downloadNetworkCompatibilityMode => - 'Modo de compatibilidad de red'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Solo letras originales'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Idioma de Musixmatch'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No hay proveedores activos'; - - @override - String get downloadMusixmatchLanguageCode => 'Código de idioma'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Introduce un código de idioma BCP-47 (por ejemplo, en, de, ja) para solicitar letras traducidas desde Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Automático'; - - @override - String get downloadNetworkAnySubtitle => 'Usar Wi-Fi o datos móviles'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Las descargas se pausan con datos móviles'; - - @override - String get downloadSongLinkRegionDesc => - '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'; - - @override - String get cacheRefresh => 'Actualizar'; - - @override - String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount) { - String _temp0 = intl.Intl.pluralLogic( - trackCount, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - String _temp1 = intl.Intl.pluralLogic( - playlistCount, - locale: localeName, - other: 'listas de reproducción', - one: 'lista de reproducción', - ); - return '¿Descargar $trackCount $_temp0 de $playlistCount $_temp1?'; - } - - @override - String bulkDownloadPlaylistsButton(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'listas de reproducción', - one: 'lista de reproducción', - ); - return 'Descargar $count $_temp0'; - } - - @override - String get bulkDownloadSelectPlaylists => - 'Selecciona listas de reproducción para descargar'; - - @override - String get snackbarSelectedPlaylistsEmpty => - 'Las listas de reproducción seleccionadas no tienen pistas'; - - @override - String playlistsCount(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 get editMetadataAutoFill => 'Autocompletar desde internet'; - - @override - String get editMetadataAutoFillDesc => - 'Selecciona los campos para rellenar automáticamente con metadatos en línea'; - - @override - String get editMetadataAutoFillFetch => 'Recuperar y llenar'; - - @override - String get editMetadataAutoFillSearching => 'Buscando en línea...'; - - @override - String get editMetadataAutoFillNoResults => - 'No hay información coincidente en línea'; - - @override - String editMetadataAutoFillDone(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'campos', - one: 'campo', - ); - return 'Se completaron $count $_temp0 con metadatos en línea'; - } - - @override - String get editMetadataAutoFillNoneSelected => - 'Selecciona al menos un campo para autocompletar'; - - @override - String get editMetadataFieldTitle => 'Título'; - - @override - String get editMetadataFieldArtist => 'Artista'; - - @override - String get editMetadataFieldAlbum => 'Álbum'; - - @override - String get editMetadataFieldAlbumArtist => 'Artista del álbum'; - - @override - String get editMetadataFieldDate => 'Fecha'; - - @override - String get editMetadataFieldTrackNum => 'Pista #'; - - @override - String get editMetadataFieldDiscNum => 'Disco #'; - - @override - String get editMetadataFieldGenre => 'Género'; - - @override - String get editMetadataFieldIsrc => 'ISRC'; - - @override - String get editMetadataFieldLabel => 'Discográfica'; - - @override - String get editMetadataFieldCopyright => 'Derechos de autor'; - - @override - String get editMetadataFieldCover => 'Carátula'; - - @override - String get editMetadataSelectAll => 'Todos'; - - @override - String get editMetadataSelectEmpty => 'Solo vacíos'; - - @override - String queueDownloadingCount(int count) { - return 'Descargando ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtrando...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count pistas', - one: '1 pista', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count álbumes', - one: '1 álbum', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No se han descargado álbumes'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Descarga varias canciones de un álbum para verlas aquí'; - - @override - String get queueEmptySingles => 'No hay descargas'; - - @override - String get queueEmptySinglesSubtitle => - 'Las descargas de pistas individuales aparecerán aquí'; - - @override - String get queueEmptyHistory => 'No hay historial de descargas'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'Todas las listas seleccionadas'; - - @override - String get selectionTapPlaylistsToSelect => - 'Pulsa listas de reproducción para seleccionar'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analizando audio...'; - - @override - String get audioAnalysisSampleRate => 'Frecuencia de muestreo'; - - @override - String get audioAnalysisCodec => 'Códec'; - - @override - String get audioAnalysisContainer => 'Contenedor'; - - @override - String get audioAnalysisDecodedFormat => 'Formato decodificado'; - - @override - String get audioAnalysisBitDepth => 'Profundidad de bits'; - - @override - String get audioAnalysisChannels => 'Canales'; - - @override - String get audioAnalysisDuration => 'Duración'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Tamaño'; - - @override - String get audioAnalysisDynamicRange => 'Rango dinámico'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Muestras'; - - @override - String get audioAnalysisRescan => 'Volver a analizar'; - - @override - String get audioAnalysisRescanning => 'Volviendo a analizar audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Seleccionar automáticamente la mejor disponible'; - - @override - String get extensionsHomeFeedOff => 'Desactivado'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => '¿Cancelar descarga?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Mantener'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizando $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Insertando información...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Descarga completa'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'Todas las descargas completadas'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks downloaded successfully', - one: '1 track downloaded successfully', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Descargas canceladas'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Escaneando biblioteca local'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Escaneo de biblioteca completado'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count errores'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; - - @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Actualización preparada'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Pistas'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Importar CSV'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Pegar'; - - @override - String get tutorialSearchHint => 'Pegar o buscar...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Descarga completada'; - - @override - String get tutorialDownloadInProgressSemantics => 'Descarga en curso'; - - @override - String get tutorialStartDownloadSemantics => 'Comenzar descarga'; - - @override - String get optionsEmbedMetadata => 'Incrustar información'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Escribir información, carátulas y letras incrustadas en archivos'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Reemplazar portada'; - - @override - String get trackCoverPick => 'Elegir portada'; - - @override - String get trackCoverClearSelected => 'Borrar portada seleccionada'; - - @override - String get trackCoverCurrent => 'Portada actual'; - - @override - String get trackCoverSelected => 'Carátula seleccionada'; - - @override - String get trackCoverReplaceNotice => - 'La portada seleccionada sustituirá a la portada actual incrustada cuando pulses Guardar.'; - - @override - String get actionStop => 'Detener'; - - @override - String get queueFinalizingDownload => 'Finalizando descarga'; - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueDownloadCompleted => 'Descarga completada'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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 'Selecciona un color de contraste $hex'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Limpiar búsqueda'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Etiquetas'; - - @override - String get extensionDetailsInformation => 'Información'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Descartar'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Abrir $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'objetos', - one: 'objeto', - ); - return 'Abrir $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Abrir álbum $albumName de $artistName, $trackCount pistas'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName de $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Seleccionar álbum $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Abrir álbum $albumName'; - } - - @override - String get settingsFiles => 'Archivos y carpetas'; - - @override - String get settingsFilesSubtitle => - 'Directorio de descarga, nombre de archivo y estructura de carpetas'; - - @override - String get settingsMetadata => 'Información'; - - @override - String get settingsMetadataSubtitle => - 'Carátula, etiquetas, ReplayGain, proveedores'; - - @override - String get settingsLyrics => 'Letra'; - - @override - String get settingsLyricsSubtitle => - 'Insertar, modo, proveedores, opciones de idioma'; - - @override - String get settingsApp => 'Aplicación'; - - @override - String get settingsAppSubtitle => - 'Actualizaciones, datos, extensiones repo, depuración'; - - @override - String get sectionMetadataProviders => 'Proveedores'; - - @override - String get sectionDuplicates => 'Duplicados'; - - @override - String get sectionLyricsProviderOptions => 'Opciones del proveedor'; - - @override - String get metadataProvidersTitle => 'Prioridad de proveedor de información'; - - @override - String get metadataProvidersSubtitle => - 'Arrastre para establecer orden de búsqueda y origen de información'; - - @override - String get downloadDeduplication => 'Saltar descargas duplicadas'; - - @override - String get downloadDeduplicationEnabled => - 'Las pistas previamente descargadas se omitirán'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'Todas las pistas se descargarán independientemente del historial'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Conservar cada versión de calidad; añadir la calidad medida al nombre solo cuando el nombre ya esté en uso'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Reslpado de extensiones'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Elige qué extensiones se pueden utilizar como alternativa'; - - @override - String get editMetadataFieldDateHint => 'AAA-MM-DD o AAAA'; - - @override - String get editMetadataFieldTrackTotal => 'Total de pistas'; - - @override - String get editMetadataFieldDiscTotal => 'Total de discos'; - - @override - String get editMetadataFieldComposer => 'Compositor'; - - @override - String get editMetadataFieldComment => 'Comentario'; - - @override - String get editMetadataAdvanced => 'Avanzado'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Falta número de pista'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Falta número de álbum'; - - @override - String get libraryFilterMetadataMissingArtist => 'Falta artista'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Formato de ISRC erróneo'; - - @override - String get libraryFilterMetadataMissingLabel => 'Falta etiqueta'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'listas de reproducción', - one: 'lista', - ); - return '¿Eliminar $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'listas de reproducción', - one: 'lista', - ); - return '$count $_temp0 eliminadas'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Añadido $count $_temp0 a $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return 'Añadido $count $_temp0 a $playlistName ($alreadyCount ya en la lista de reproducción)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'objetos', - one: 'objeto', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Información enriquecida nuevamente con éxito\n($successCount/$total) - Fallaron: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistas', - one: 'pista', - ); - return 'Eliminar $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Descargando - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Comenzando...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Seleccionar pista'; - - @override - String get a11yDeselectTrack => 'No seleccionar pista'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Reproducir $trackName de $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensiones', - one: 'extensión', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requiere v$version+'; - } - - @override - String get actionGo => 'Ir'; - - @override - String get logIssueSummary => 'Resumen de incidencias'; - - @override - String logTotalErrors(int count) { - return 'Total de errores: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Afectados: $domains'; - } - - @override - String get libraryScanCancelled => 'Escaneo cancelado'; - - @override - String get libraryScanCancelledSubtitle => - 'Puedes volver a intentar el escaneo cuando esté listo.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count del historial de descargas (excluidos de la lista)'; - } - - @override - String get downloadNativeWorker => 'Trabajador de descarga nativo'; - - @override - String get downloadNativeWorkerSubtitle => - 'Servicio de Android en segundo plano para descargas de extensiones'; - - @override - String get extensionServiceStatus => 'Estado del servicio'; - - @override - String get extensionServiceHealth => 'Estado de servicio'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'chequeos', - one: 'chequeo', - ); - return '$count $_temp0 '; - } - - @override - String get extensionOauthConnectHint => - 'Pulsa para conectar a Spotify y rellenar el campo.'; - - @override - String extensionLastChecked(String time) { - return 'Última comprobación $time'; - } - - @override - String get extensionRefreshStatus => 'Actualizar estado'; - - @override - String get extensionCustomUrlHandling => 'Gestión de URL personalizada'; - - @override - String get extensionCustomUrlHandlingSubtitle => - 'Esta extensión puede manejar enlaces de estos sitios'; - - @override - String get extensionCustomUrlHandlingShareHint => - 'Comparte enlaces de estos sitios a SpotiFLAC Mobile y esta extensión los manejará.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'ajustes', - one: 'ajuste', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'En línea'; - - @override - String get extensionHealthDegraded => 'Degradado'; - - @override - String get extensionHealthOffline => 'Sin conexión'; - - @override - String get extensionHealthNotConfigured => 'Sin configurar'; - - @override - String get extensionHealthUnknown => 'Desconocido'; - - @override - String get extensionHealthRequired => 'requerido'; - - @override - String get extensionSettingNotSet => 'Sin establecer'; - - @override - String get extensionActionFailed => 'Error de acción'; - - @override - String get extensionEnterValue => 'Ingrese un valor'; - - @override - String get extensionHealthServiceOnline => 'Servicio en línea'; - - @override - String get extensionHealthServiceDegraded => 'Servicio degradado'; - - @override - String get extensionHealthServiceOffline => 'Servicio fuera de línea'; - - @override - String get extensionHealthServiceUnknown => 'Estado de servicio desconocido'; - - @override - String get audioAnalysisStereo => 'Estéreo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Abrir en $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Incrustado'; - - @override - String get unknownAlbum => 'Álbum desconocido'; - - @override - String get unknownArtist => 'Artista desconocido'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Almacenamiento'; - - @override - String get permissionNotification => 'Notificación'; - - @override - String get errorInvalidFolderSelected => 'Directorio seleccionado inválido'; - - @override - String get storeAnyVersion => 'Cualquier'; - - @override - String get storeCategoryMetadata => 'Información'; - - @override - String get storeCategoryDownload => 'Descargar'; - - @override - String get storeCategoryUtility => 'Utilidad'; - - @override - String get storeCategoryLyrics => 'Letras'; - - @override - String get storeCategoryIntegration => 'Integración'; - - @override - String get artistReleases => 'Lanzamientos'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Pista anterior'; - - @override - String get nowPlayingNextTrack => 'Pista siguiente'; - - @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'; - - @override - String get settingsSearchHint => 'Buscar en los ajustes'; - - @override - String settingsSearchNoResults(String query) { - return 'Ningún ajuste coincide con \"$query\"'; - } - - @override - String get settingsGroupInterface => 'Extensiones y apariencia'; - - @override - String get settingsGroupContent => 'Contenido y metadatos'; - - @override - String get settingsGroupDownloads => 'Descargas y archivos'; - - @override - String get settingsGroupSystem => 'Sistema'; - - @override - String get settingsGroupHelp => 'Información y soporte'; -} diff --git a/lib/l10n/app_localizations_fr.dart b/lib/l10n/app_localizations_fr.dart deleted file mode 100644 index 253b3930..00000000 --- a/lib/l10n/app_localizations_fr.dart +++ /dev/null @@ -1,5130 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for French (`fr`). -class AppLocalizationsFr extends AppLocalizations { - AppLocalizationsFr([String locale = 'fr']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Accueil'; - - @override - String get navLibrary => 'Bibliothèque'; - - @override - String get navSettings => 'Paramètres'; - - @override - String get navStore => 'Dépôt'; - - @override - String get homeTitle => 'Accueil'; - - @override - String get homeSubtitle => - 'Collez une URL prise en charge ou effectuez une recherche par nom'; - - @override - String get homeEmptyTitle => 'Aucun moteur de recherche pour le moment'; - - @override - String get homeEmptySubtitle => 'Installez une extension pour continuer.'; - - @override - String get homeSupports => - 'Prise en charge : URL de titres, d’albums, de playlists et d’artistes'; - - @override - String get homeRecent => 'Récent'; - - @override - String get historyFilterAll => 'Tous'; - - @override - String get historyFilterAlbums => 'Albums'; - - @override - String get historyFilterSingles => 'Titres'; - - @override - String get historySearchHint => 'Historique de recherche...'; - - @override - String get settingsTitle => 'Paramètres'; - - @override - String get settingsDownload => 'Télécharger'; - - @override - String get settingsAppearance => 'Apparence'; - - @override - String get settingsExtensions => 'Extensions'; - - @override - String get settingsAbout => 'À propos'; - - @override - String get downloadTitle => 'Télécharger'; - - @override - String get downloadAskQualitySubtitle => - 'Afficher le sélecteur de qualité pour chaque téléchargement'; - - @override - String get downloadFilenameFormat => 'Nom du fichier'; - - @override - String get downloadSingleFilenameFormat => 'Format de nom de fichier unique'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Modèle de nom de fichier pour les singles et les EP. Utilise les mêmes balises que le format album.'; - - @override - String get downloadFolderOrganization => 'Organisation du dossier'; - - @override - String get appearanceTitle => 'Apparence'; - - @override - String get appearanceThemeSystem => 'Système'; - - @override - String get appearanceThemeLight => 'Clair'; - - @override - String get appearanceThemeDark => 'Sombre'; - - @override - String get appearanceDynamicColor => 'Couleur dynamique'; - - @override - String get appearanceDynamicColorSubtitle => - 'Utilisez les couleurs de votre fond d\'écran'; - - @override - String get appearanceHistoryView => 'Historique'; - - @override - String get appearanceHistoryViewList => 'Liste'; - - @override - String get appearanceHistoryViewGrid => 'Grille'; - - @override - String get optionsPrimaryProvider => 'Fournisseur principal'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Service permettant d\'effectuer une recherche par titre de morceau ou d\'album'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Utilisation de l\'extension : $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Onglet de recherche par défaut'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Choisissez l\'onglet qui s\'ouvre en premier pour les nouveaux résultats de recherche.'; - - @override - String get optionsAutoFallback => 'Récupération automatique'; - - @override - String get optionsAutoFallbackSubtitle => - 'Essayez d\'autres services si le téléchargement échoue'; - - @override - String get optionsEmbedLyrics => 'Intégrer les paroles'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Enregistrez les paroles synchronisées avec vos morceaux téléchargés'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Analyser le niveau sonore et intégrer des balises ReplayGain (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Désactivé : aucune balise de normalisation du volume'; - - @override - String get trackReplayGain => 'Réanalyser ReplayGain'; - - @override - String get trackReplayGainScanning => 'Analyse du volume sonore...'; - - @override - String get trackReplayGainSuccess => 'Ajout des balises ReplayGain'; - - @override - String get trackReplayGainFailed => - 'Impossible d\'ajouter les balises ReplayGain'; - - @override - String selectionReplayGainCount(int count) { - return 'ReplayGain ($count)'; - } - - @override - String get replayGainBatchConfirmTitle => 'Ajouter ReplayGain'; - - @override - String replayGainBatchConfirmMessage(int count) { - return 'Analyser le niveau sonore et ajouter des balises ReplayGain à $count piste(s) ?'; - } - - @override - String get replayGainBatchAnalyzing => 'Analyse de ReplayGain...'; - - @override - String replayGainBatchSuccess(int success, int total) { - return 'ReplayGain ajouté à $success de $total pistes'; - } - - @override - String get optionsArtistTagMode => 'Mode « Artiste »'; - - @override - String get optionsArtistTagModeDescription => - 'Choisissez comment les noms de plusieurs artistes doivent apparaître dans les balises intégrées.'; - - @override - String get optionsArtistTagModeJoined => 'Valeur unique combinée'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Indiquez une seule valeur ARTIST, par exemple « Artiste A, Artiste B », pour garantir une compatibilité maximale avec les lecteurs.'; - - @override - String get optionsArtistTagModeSplitVorbis => - 'Diviser les balises pour FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Créez une balise « artiste » par artiste pour les fichiers FLAC et Opus ; les fichiers MP3 et M4A restent regroupés.'; - - @override - String get optionsExtensionStore => 'Référentiel d\'extensions'; - - @override - String get optionsExtensionStoreSubtitle => - 'Afficher l\'onglet « Dépôt » dans le menu de navigation'; - - @override - String get optionsCheckUpdates => 'Vérifier les mises à jour'; - - @override - String get optionsCheckUpdatesSubtitle => - 'M\'avertir lorsqu\'une nouvelle version est disponible'; - - @override - String get optionsUpdateChannel => 'Chaîne de mise à jour'; - - @override - String get optionsUpdateChannelStable => 'Uniquement les versions stables'; - - @override - String get optionsUpdateChannelPreview => - 'Accédez aux versions préliminaires'; - - @override - String get optionsUpdateChannelWarning => - 'La version préliminaire peut contenir des bogues ou des fonctionnalités incomplètes'; - - @override - String get optionsClearHistory => 'Effacer l\'historique des téléchargements'; - - @override - String get optionsClearHistorySubtitle => - 'Supprimez tous les morceaux téléchargés de l\'historique'; - - @override - String get optionsDetailedLogging => 'Journalisation détaillée'; - - @override - String get optionsDetailedLoggingOn => - 'Des journaux détaillés sont enregistrés'; - - @override - String get optionsDetailedLoggingOff => 'Activer pour les rapports de bogues'; - - @override - String get extensionsTitle => 'Extensions'; - - @override - String get extensionsDisabled => 'Désactivée'; - - @override - String extensionsVersion(String version) { - return 'Version $version'; - } - - @override - String get extensionsUninstall => 'Désinstaller'; - - @override - String get storeTitle => 'Répertoire des extensions'; - - @override - String get storeSearch => 'Recherche d\'extensions...'; - - @override - String get storeInstall => 'Installer'; - - @override - String get storeInstalled => 'Installé'; - - @override - String get storeUpdate => 'Mettre à jour'; - - @override - String get aboutTitle => 'À propos'; - - @override - String get aboutContributors => 'Contributeurs'; - - @override - String get aboutMobileDeveloper => 'Développeur de la version mobile'; - - @override - String get aboutOriginalCreator => - 'Créateur de la version originale de SpotiFLAC'; - - @override - String get aboutLogoArtist => - 'Le talentueux artiste qui a créé le magnifique logo de notre application !'; - - @override - String get aboutTranslators => 'Traducteurs'; - - @override - String get aboutSpecialThanks => 'Remerciements particuliers'; - - @override - String get aboutLinks => 'Liens'; - - @override - String get aboutMobileSource => 'Code source pour mobile'; - - @override - String get aboutPCSource => 'Code source pour PC'; - - @override - String get aboutKeepAndroidOpen => 'Garder Android ouvert'; - - @override - String get aboutReportIssue => 'Signaler un problème'; - - @override - String get aboutReportIssueSubtitle => - 'Signalez tout problème que vous rencontrez'; - - @override - String get aboutFeatureRequest => 'Demande de fonctionnalité'; - - @override - String get aboutFeatureRequestSubtitle => - 'Proposez de nouvelles fonctionnalités pour l\'application'; - - @override - String get aboutTelegramChannel => 'Chaîne Telegram'; - - @override - String get aboutTelegramChannelSubtitle => 'Annonces et mises à jour'; - - @override - String get aboutTelegramChat => 'Communauté Telegram'; - - @override - String get aboutTelegramChatSubtitle => - 'Discutez avec d\'autres utilisateurs'; - - @override - String get aboutSocial => 'Réseaux sociaux'; - - @override - String get aboutApp => 'Application'; - - @override - String get aboutVersion => 'Version'; - - @override - String get 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.'; - - @override - String get aboutSachinsenalDesc => - 'Le créateur du projet HiFi original. Une base pour l\'intégration de sources sans perte.'; - - @override - String get aboutSjdonadoDesc => - 'Créateur de « I Don\'t Have Spotify » (IDHS). Le résolveur de liens de secours qui sauve la mise !'; - - @override - String get aboutAppDescription => - 'Recherchez des métadonnées musicales, gérez les extensions et organisez votre bibliothèque.'; - - @override - String get artistAlbums => 'Albums'; - - @override - String get artistSingles => 'Singles & EPs'; - - @override - String get artistCompilations => 'Compilations'; - - @override - String get artistPopular => 'Populaire'; - - @override - String artistMonthlyListeners(String count) { - return '$count auditeurs mensuels'; - } - - @override - String get trackMetadataService => 'Service'; - - @override - String get trackMetadataPlay => 'Lire'; - - @override - String get trackMetadataShare => 'Partager'; - - @override - String get trackMetadataDelete => 'Supprimer'; - - @override - String get setupGrantPermission => 'Accorder l\'autorisation'; - - @override - String get setupSkip => 'Ignorer pour le moment'; - - @override - String get setupStorageAccessRequired => 'Accès au stockage requis'; - - @override - String get 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.'; - - @override - String get setupOpenSettings => 'Ouvrir les paramètres'; - - @override - String get setupPermissionDeniedMessage => - 'Autorisation refusée. Veuillez accorder toutes les autorisations pour continuer.'; - - @override - String setupPermissionRequired(String permissionType) { - return 'Autorisation $permissionType requise'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return 'L\'autorisation $permissionType est requise pour profiter pleinement de l\'application. Vous pourrez modifier ce paramètre ultérieurement dans les Paramètres.'; - } - - @override - String get setupUseDefaultFolder => 'Utiliser le dossier par défaut ?'; - - @override - String get setupNoFolderSelected => - 'Aucun dossier n\'est sélectionné. Souhaitez-vous utiliser le dossier Musique par défaut ?'; - - @override - String get setupUseDefault => 'Utiliser les paramètres par défaut'; - - @override - String get setupDownloadLocationTitle => 'Emplacement de téléchargement'; - - @override - String get 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.'; - - @override - String get setupAppDocumentsFolder => - 'Dossier « Documents » de l\'application'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Recommandé - accessible via l\'application Fichiers'; - - @override - String get setupChooseFromFiles => 'Sélectionnez un fichier'; - - @override - String get setupChooseFromFilesSubtitle => - 'Sélectionnez iCloud ou un autre emplacement'; - - @override - String get setupIosEmptyFolderWarning => - 'Limitation iOS : les dossiers vides ne peuvent pas être sélectionnés. Choisissez un dossier contenant au moins un fichier.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive n\'est pas pris en charge. Veuillez utiliser le dossier « Documents » de l\'application.'; - - @override - String get setupDownloadInFlac => - 'Téléchargez de la musique en qualité sans perte et Hi-Res'; - - @override - String get setupStorageGranted => 'Autorisation de stockage accordée !'; - - @override - String get setupStorageRequired => 'Autorisation de stockage requise'; - - @override - String get setupStorageDescription => - 'SpotiFLAC a besoin d\'une autorisation d\'accès au stockage pour enregistrer vos fichiers musicaux téléchargés.'; - - @override - String get setupNotificationGranted => - 'Autorisation de notification accordée !'; - - @override - String get setupNotificationEnable => 'Activer les notifications'; - - @override - String get setupFolderChoose => 'Choisissez le dossier de téléchargement'; - - @override - String get setupFolderDescription => - 'Sélectionnez un dossier dans lequel votre musique téléchargée sera enregistrée.'; - - @override - String get setupSelectFolder => 'Sélectionner un dossier'; - - @override - String get setupEnableNotifications => 'Activer les notifications'; - - @override - String get 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.'; - - @override - String get setupSkipForNow => 'Ignorer pour le moment'; - - @override - String get setupNext => 'Suivant'; - - @override - String get setupGetStarted => 'Démarrer'; - - @override - String get setupAllowAccessToManageFiles => - 'Veuillez cocher la case « Autoriser l\'accès pour gérer tous les fichiers » sur l\'écran suivant.'; - - @override - String get setupLanguageTitle => 'Choisir la langue'; - - @override - String get setupLanguageDescription => - 'Sélectionnez la langue de votre choix pour l\'application. Vous pourrez la modifier ultérieurement dans les Paramètres.'; - - @override - String get setupLanguageSystemDefault => 'Paramètres par défaut du système'; - - @override - String get dialogCancel => 'Annuler'; - - @override - String get dialogSave => 'Sauvegarder'; - - @override - String get dialogDelete => 'Supprimer'; - - @override - String get dialogRetry => 'Réessayer'; - - @override - String get dialogClear => 'Effacer'; - - @override - String get dialogDone => 'C\'est fait'; - - @override - String get dialogImport => 'Importer'; - - @override - String get dialogDownload => 'Télécharger'; - - @override - String get previewPlay => 'Écouter un aperçu'; - - @override - String get previewStop => 'Arrêter l\'aperçu'; - - @override - String get previewUnavailable => 'Aperçu indisponible'; - - @override - String get dialogDiscard => 'Ignorer'; - - @override - String get dialogRemove => 'Supprimer'; - - @override - String get dialogUninstall => 'Désinstaller'; - - @override - String get dialogDiscardChanges => 'Ignorer les modifications ?'; - - @override - String get dialogUnsavedChanges => - 'Vous avez des modifications non enregistrées. Voulez-vous les ignorer ?'; - - @override - String get dialogClearAll => 'Tout effacer'; - - @override - String get dialogRemoveExtension => 'Supprimer l\'extension'; - - @override - String get dialogRemoveExtensionMessage => - 'Êtes-vous sûr de vouloir supprimer cette extension ? Cette action ne peut pas être annulée.'; - - @override - String get dialogUninstallExtension => 'Supprimer l\'extension ?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Êtes-vous sûr de vouloir supprimer $extensionName ?'; - } - - @override - String get dialogClearHistoryTitle => 'Effacer l\'historique'; - - @override - String get dialogClearHistoryMessage => - 'Êtes-vous sûr de vouloir effacer tout l\'historique des téléchargements ? Cette action ne peut pas être annulée.'; - - @override - String get dialogDeleteSelectedTitle => 'Supprimer la sélection'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Supprimer $count $_temp0 de l\'historique ?\n\nCela supprimera également les fichiers du stockage.'; - } - - @override - String get dialogImportPlaylistTitle => 'Importer une playlist'; - - @override - String dialogImportPlaylistMessage(int count) { - return '$count pistes ont été trouvées dans le fichier CSV. Voulez-vous les ajouter à la file d\'attente de téléchargement ?'; - } - - @override - String csvImportTracks(int count) { - return '$count pistes issues d\'un fichier CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return 'Ajout de « $trackName » à la file d\'attente'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return '$count titres ont été ajoutés à la file d\'attente'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '« $trackName » a déjà été téléchargé'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '« $trackName » existe déjà dans votre bibliothèque'; - } - - @override - String get snackbarHistoryCleared => 'Historique effacé'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Supprimé $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Impossible d\'ouvrir le fichier : $error'; - } - - @override - String get snackbarViewQueue => 'Afficher la file d\'attente'; - - @override - String snackbarUrlCopied(String platform) { - return 'L\'URL de $platform a été copiée dans le presse-papiers'; - } - - @override - String get snackbarFileNotFound => 'Fichier introuvable'; - - @override - String get snackbarSelectExtFile => - 'Veuillez sélectionner un fichier .spotiflac-ext'; - - @override - String get snackbarProviderPrioritySaved => - 'Priorité du fournisseur enregistrée'; - - @override - String get snackbarMetadataProviderSaved => - 'Priorité du fournisseur de métadonnées enregistrée'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName est installée.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName a été mis à jour.'; - } - - @override - String get snackbarFailedToInstall => - 'Échec de l\'installation de l\'extension'; - - @override - String get snackbarFailedToUpdate => - 'Échec de la mise à jour de l\'extension'; - - @override - String get errorRateLimited => 'Débit limité'; - - @override - String get errorRateLimitedMessage => - 'Trop de requêtes. Veuillez patienter quelques instants avant de relancer la recherche.'; - - @override - String get errorNoTracksFound => 'Aucun titre trouvé'; - - @override - String get searchEmptyResultSubtitle => 'Essayez un autre mot-clé'; - - @override - String get errorUrlNotRecognized => 'Lien non reconnu'; - - @override - String get errorUrlNotRecognizedMessage => - 'Ce lien n\'est pas pris en charge. Vérifiez que l\'URL est correcte et qu\'une extension compatible est installée.'; - - @override - String get errorUrlFetchFailed => - 'Impossible de charger le contenu de ce lien. Veuillez réessayer.'; - - @override - String errorMissingExtensionSource(String item) { - return 'Impossible de charger $item : source de l\'extension manquante'; - } - - @override - String get actionPause => 'Pause'; - - @override - String get actionResume => 'Resumer'; - - @override - String get actionCancel => 'Annuler'; - - @override - String get actionSelectAll => 'Tout sélectionner'; - - @override - String get actionDeselect => 'Désélectionner'; - - @override - String selectionSelected(int count) { - return '$count sélectionnés'; - } - - @override - String get selectionAllSelected => 'Toutes les pistes sélectionnées'; - - @override - String get selectionSelectToDelete => 'Sélectionnez les titres à supprimer'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Récupération des métadonnées... $current/$total'; - } - - @override - String get progressReadingCsv => 'Lecture du fichier CSV...'; - - @override - String get searchSongs => 'Titres'; - - @override - String get searchArtists => 'Artistes'; - - @override - String get searchAlbums => 'Albums'; - - @override - String get searchPlaylists => 'Playlists'; - - @override - String get searchSortTitle => 'Trier les résultats'; - - @override - String get searchSortDefault => 'Par défaut'; - - @override - String get searchSortTitleAZ => 'Titre (A-Z)'; - - @override - String get searchSortTitleZA => 'Titre (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artiste (A-Z)'; - - @override - String get searchSortArtistZA => 'Artiste (Z-A)'; - - @override - String get searchSortDurationShort => 'Durée (la plus courte)'; - - @override - String get searchSortDurationLong => 'Durée (la plus longue)'; - - @override - String get searchSortDateOldest => 'Date de sortie (la plus ancienne)'; - - @override - String get searchSortDateNewest => 'Date de sortie (la plus récente)'; - - @override - String get tooltipPlay => 'Lecture'; - - @override - String get filenameFormat => 'Format des noms de fichiers'; - - @override - String get filenameShowAdvancedTags => 'Afficher les balises avancées'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Activer les balises de formatage pour le remplissage des pistes et les formats de date'; - - @override - String get folderOrganizationNone => 'Aucune organisation'; - - @override - String get folderOrganizationByPlaylist => 'Par playlist'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Un dossier distinct pour chaque playlist'; - - @override - String get folderOrganizationByArtist => 'Par artiste'; - - @override - String get folderOrganizationByAlbum => 'Par album'; - - @override - String get folderOrganizationByArtistAlbum => 'Artiste/Album'; - - @override - String get folderOrganizationDescription => - 'Classer les fichiers téléchargés dans des dossiers'; - - @override - String get folderOrganizationNoneSubtitle => - 'Tous les fichiers du dossier « Téléchargements »'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Un dossier distinct pour chaque artiste'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Un dossier distinct pour chaque album'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Dossiers imbriqués pour les artistes et les albums'; - - @override - String get updateAvailable => 'Mise à jour disponible'; - - @override - String get updateLater => 'Plus tard'; - - @override - String get updateStartingDownload => 'Début du téléchargement...'; - - @override - String get updateDownloadFailed => 'Échec du téléchargement'; - - @override - String get updateFailedMessage => 'Échec du téléchargement de la mise à jour'; - - @override - String get updateNewVersionReady => 'Une nouvelle version est disponible'; - - @override - String get updateRequiredTitle => 'Mise à jour requise'; - - @override - String updateRequiredNotice(int count) { - return 'Cette version a $count versions de retard et n\'est plus prise en charge. Effectuez la mise à jour pour continuer à utiliser l\'application.'; - } - - @override - String get updateCurrent => 'Actuel'; - - @override - String get updateNew => 'Nouveau'; - - @override - String get updateDownloading => 'Téléchargement en cours...'; - - @override - String get updateWhatsNew => 'Quoi de neuf ?'; - - @override - String get updateDownloadInstall => 'Télécharger & Installer'; - - @override - String get updateDontRemind => 'Ne plus me le rappeler'; - - @override - String get providerPriorityTitle => 'Priorité accordée aux prestataires'; - - @override - String get 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.'; - - @override - String get providerPriorityInfo => - 'Si un morceau n\'est pas disponible chez le premier fournisseur, l\'application essaiera automatiquement le suivant.'; - - @override - String get providerPriorityFallbackExtensionsDescription => - 'Sélectionnez les extensions de téléchargement installées qui peuvent être utilisées lors du basculement automatique.'; - - @override - String get providerPriorityFallbackExtensionsHint => - 'Seules les extensions activées disposant de la fonctionnalité « fournisseur de téléchargement » sont répertoriées ici.'; - - @override - String get providerExtension => 'Extension'; - - @override - String get metadataProviderPriorityTitle => 'Priorité des métadonnées'; - - @override - String get 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.'; - - @override - String get 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.'; - - @override - String get logTitle => 'Journaux'; - - @override - String get logCopied => 'Journaux copiés dans le presse-papiers'; - - @override - String get logSearchHint => 'Recherche dans les journaux...'; - - @override - String get logFilterLevel => 'Niveau'; - - @override - String get logFilterSection => 'Filtre'; - - @override - String get logShareLogs => 'Partager les journaux'; - - @override - String get logClearLogs => 'Effacer les journaux'; - - @override - String get logClearLogsTitle => 'Effacer les journaux'; - - @override - String get logClearLogsMessage => - 'Êtes-vous sûr de vouloir effacer tous les journaux ?'; - - @override - String get logFilterBySeverity => - 'Filtrer les journaux par niveau de gravité'; - - @override - String get logNoLogsYet => 'Pas encore de journal'; - - @override - String get logNoLogsYetSubtitle => - 'Les journaux s\'afficheront ici au fur et à mesure que vous utiliserez l\'application'; - - @override - String logEntriesFiltered(int count) { - return 'Entrées ($count résultats filtrés)'; - } - - @override - String logEntries(int count) { - return 'Entrées ($count)'; - } - - @override - String get channelStable => 'Stable'; - - @override - String get channelPreview => 'Aperçu'; - - @override - String get sectionSearchSource => 'Rechercher dans la source'; - - @override - String get sectionDownload => 'Télécharger'; - - @override - String get sectionPerformance => 'Performances'; - - @override - String get sectionApp => 'Application'; - - @override - String get sectionData => 'Données'; - - @override - String get sectionDebug => 'Débogage'; - - @override - String get sectionService => 'Service'; - - @override - String get sectionAudioQuality => 'Qualité audio'; - - @override - String get sectionFileSettings => 'Paramètres du fichier'; - - @override - String get sectionLyrics => 'Paroles'; - - @override - String get lyricsMode => 'Mode Paroles'; - - @override - String get lyricsModeDescription => - 'Choisissez comment les paroles sont enregistrées avec vos téléchargements'; - - @override - String get lyricsModeEmbed => 'Intégrer dans un fichier'; - - @override - String get lyricsModeEmbedSubtitle => - 'Paroles enregistrées dans les métadonnées FLAC'; - - @override - String get lyricsModeExternal => 'Fichier .lrc externe'; - - @override - String get lyricsModeExternalSubtitle => - 'Fichier .lrc distinct pour les lecteurs tels que Samsung Music'; - - @override - String get lyricsModeBoth => 'Les deux'; - - @override - String get lyricsModeBothSubtitle => - 'Intégrer et enregistrer le fichier .lrc'; - - @override - String get sectionColor => 'Couleur'; - - @override - String get sectionTheme => 'Thème'; - - @override - String get sectionLayout => 'Mise en page'; - - @override - String get sectionLanguage => 'Langue'; - - @override - String get appearanceLanguage => 'Langue de l\'application'; - - @override - String get settingsAppearanceSubtitle => 'Thème, couleurs, affichage'; - - @override - String get settingsDownloadSubtitle => - 'Service, qualité, solution de secours'; - - @override - String get settingsExtensionsSubtitle => - 'Gérez les fournisseurs de téléchargement'; - - @override - String get settingsLogsSubtitle => - 'Consulter les journaux de l\'application pour le débogage'; - - @override - String get loadingSharedLink => 'Chargement du lien partagé...'; - - @override - String get pressBackAgainToExit => - 'Appuyez de nouveau sur retour pour quitter'; - - @override - String downloadAllCount(int count) { - return 'Tout télécharger ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count titres', - one: '1 titre', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'Copier le chemin d\'accès au fichier'; - - @override - String get trackRemoveFromDevice => 'Supprimer de l\'appareil'; - - @override - String get trackLoadLyrics => 'Charger les paroles'; - - @override - String get trackMetadata => 'Métadonnées'; - - @override - String get trackFileInfo => 'Informations sur le fichier'; - - @override - String get trackLyrics => 'Paroles'; - - @override - String get trackFileNotFound => 'Fichier introuvable'; - - @override - String get trackOpenInDeezer => 'Ouvrir dans Deezer'; - - @override - String get trackOpenInSpotify => 'Ouvrir dans Spotify'; - - @override - String get trackTrackName => 'Nom de la piste'; - - @override - String get trackArtist => 'Artiste'; - - @override - String get trackAlbumArtist => 'Artiste de l\'album'; - - @override - String get trackAlbum => 'Album'; - - @override - String get trackTrackNumber => 'Numéro de piste'; - - @override - String get trackDiscNumber => 'Numéro de disque'; - - @override - String get trackDuration => 'Durée'; - - @override - String get trackAudioQuality => 'Qualité audio'; - - @override - String get libraryQualityLabelFileFormat => 'File format'; - - @override - String get trackReleaseDate => 'Date de sortie'; - - @override - String get trackGenre => 'Genre'; - - @override - String get trackLabel => 'Label'; - - @override - String get trackCopyright => 'Droits d\'auteur'; - - @override - String get trackDownloaded => 'Téléchargé'; - - @override - String get trackCopyLyrics => 'Copier les paroles'; - - @override - String trackLyricsSource(String source) { - return 'Source : $source'; - } - - @override - String get trackLyricsNotAvailable => - 'Les paroles de ce morceau ne sont pas disponibles'; - - @override - String get trackLyricsNotInFile => - 'Aucune parole n\'a été trouvée dans ce fichier'; - - @override - String get trackFetchOnlineLyrics => 'Télécharger depuis Internet'; - - @override - String get trackLyricsTimeout => - 'La requête a expiré. Veuillez réessayer plus tard.'; - - @override - String get trackLyricsLoadFailed => 'Impossible de charger les paroles'; - - @override - String get trackEmbedLyrics => 'Intégrer les paroles'; - - @override - String get trackLyricsEmbedded => 'Les paroles ont été intégrées avec succès'; - - @override - String get trackInstrumental => 'Morceau instrumental'; - - @override - String get trackCopiedToClipboard => 'Copié dans le presse-papiers'; - - @override - String get trackDeleteConfirmTitle => 'Supprimer de l\'appareil ?'; - - @override - String get trackDeleteConfirmMessage => - 'Cela supprimera définitivement le fichier téléchargé et l\'effacera de votre historique.'; - - @override - String get dateToday => 'Aujourd\'hui'; - - @override - String get dateYesterday => 'Hier'; - - @override - String dateDaysAgo(int count) { - return 'Il y a $count jours'; - } - - @override - String dateWeeksAgo(int count) { - return 'Il y a $count semaines'; - } - - @override - String dateMonthsAgo(int count) { - return 'Il y a $count mois'; - } - - @override - String get storeFilterAll => 'Tout'; - - @override - String get storeFilterMetadata => 'Métadonnées'; - - @override - String get storeFilterDownload => 'Télécharger'; - - @override - String get storeFilterUtility => 'Utilitaire'; - - @override - String get storeFilterLyrics => 'Paroles'; - - @override - String get storeFilterIntegration => 'Intégration'; - - @override - String get storeClearFilters => 'Effacer les filtres'; - - @override - String get storeAddRepoTitle => 'Ajouter un dépôt d\'extensions'; - - @override - String get storeAddRepoDescription => - 'Saisissez l\'URL d\'un dépôt GitHub contenant un fichier registry.json pour parcourir et installer des extensions.'; - - @override - String get storeRepoUrlLabel => 'URL du dépôt'; - - @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; - - @override - String get storeAddRepoButton => 'Ajouter un dépôt'; - - @override - String get storeChangeRepoTooltip => 'Changer de dépôt'; - - @override - String get storeRepoDialogTitle => 'Répertoire des extensions'; - - @override - String get storeRepoDialogCurrent => 'Dépôt actuel :'; - - @override - String get storeNewRepoUrlLabel => 'Nouvelle URL du dépôt'; - - @override - String get storeLoadError => 'Échec du chargement du dépôt'; - - @override - String get storeEmptyNoExtensions => 'Aucune extension disponible'; - - @override - String get storeEmptyNoResults => 'Aucune extension trouvée'; - - @override - String get extensionId => 'Identifiant'; - - @override - String get extensionError => 'Erreur'; - - @override - String get extensionCapabilities => 'Fonctionnalités'; - - @override - String get extensionMetadataProvider => 'Fournisseur de métadonnées'; - - @override - String get extensionDownloadProvider => 'Fournisseur de téléchargement'; - - @override - String get extensionLyricsProvider => 'Fournisseur de paroles'; - - @override - String get extensionUrlHandler => 'Gestionnaire d\'URL'; - - @override - String get extensionQualityOptions => 'Options de qualité'; - - @override - String get extensionPostProcessingHooks => 'Crochets de post-traitement'; - - @override - String get extensionPermissions => 'Autorisations'; - - @override - String get extensionSettings => 'Paramètres'; - - @override - String get extensionRemoveButton => 'Supprimer l\'extension'; - - @override - String get extensionUpdated => 'Mis à jour'; - - @override - String get extensionMinAppVersion => 'Version minimale de l\'application'; - - @override - String get extensionCustomTrackMatching => - 'Correspondance personnalisée des pistes'; - - @override - String get extensionPostProcessing => 'Post-traitement'; - - @override - String extensionHooksAvailable(int count) { - return '$count crochet(s) disponibles'; - } - - @override - String extensionPatternsCount(int count) { - return '$count motif(s)'; - } - - @override - String extensionStrategy(String strategy) { - return 'Stratégie : $strategy'; - } - - @override - String get extensionsProviderPrioritySection => - 'Priorité accordée aux prestataires'; - - @override - String get extensionsInstalledSection => 'Extensions installées'; - - @override - String get extensionsNoExtensions => 'Aucune extension installée'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Installez les fichiers .spotiflac-ext pour ajouter de nouveaux fournisseurs'; - - @override - String get extensionsInstallButton => 'Installer l\'extension'; - - @override - String get 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.'; - - @override - String get extensionsInstalledSuccess => - 'L\'extension a été installée avec succès'; - - @override - String extensionsInstalledCount(int count) { - return '$count extensions ont été installées avec succès'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return '$installed extensions sur $attempted'; - } - - @override - String get extensionsDownloadPriority => 'Priorité de téléchargement'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'Définissez l\'ordre des services de téléchargement'; - - @override - String get extensionsFallbackTitle => 'Extensions de secours'; - - @override - String get extensionsFallbackSubtitle => - 'Choisissez les extensions de téléchargement installées qui peuvent servir de solution de secours'; - - @override - String get extensionsNoDownloadProvider => - 'Aucune extension avec le fournisseur de téléchargement'; - - @override - String get extensionsMetadataPriority => 'Priorité des métadonnées'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Définissez l\'ordre des sources de recherche et de métadonnées'; - - @override - String get extensionsNoMetadataProvider => - 'Aucune extension avec fournisseur de métadonnées'; - - @override - String get extensionsSearchProvider => 'Moteur de recherche'; - - @override - String get extensionsNoCustomSearch => - 'Aucune extension avec recherche personnalisée'; - - @override - String get extensionsSearchProviderDescription => - 'Choisissez le service que vous souhaitez utiliser pour rechercher des morceaux'; - - @override - String get extensionsCustomSearch => 'Recherche personnalisée'; - - @override - String get extensionsErrorLoading => - 'Erreur lors du chargement de l\'extension'; - - @override - String get qualityFlacLossless => 'FLAC sans perte'; - - @override - String get qualityFlacLosslessSubtitle => '16 bits / 44,1 kHz'; - - @override - String get qualityHiResFlac => 'FLAC haute résolution'; - - @override - String get qualityHiResFlacSubtitle => '24 bits / jusqu\'à 96 kHz'; - - @override - String get qualityHiResFlacMax => 'FLAC haute résolution Max'; - - @override - String get qualityHiResFlacMaxSubtitle => '24 bits / jusqu\'à 192 kHz'; - - @override - String get downloadLossy320 => 'Compression avec perte à 320 kbps'; - - @override - String get downloadLossyFormat => 'Format avec perte'; - - @override - String get downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Format avec perte à 320 kbps'; - - @override - String get 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.'; - - @override - String get downloadLossyMp3 => 'MP3 320 kbps'; - - @override - String get downloadLossyMp3Subtitle => - 'Compatibilité optimale, environ 10 Mo par piste'; - - @override - String get downloadLossyAac => 'AAC/M4A 320 kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Compatibilité optimale avec les appareils mobiles, format M4A'; - - @override - String get downloadLossyOpus256 => 'Opus 256 kbps'; - - @override - String get downloadLossyOpus256Subtitle => - 'Opus en qualité optimale, environ 8 Mo par piste'; - - @override - String get downloadLossyOpus128 => 'Opus 128 kbps'; - - @override - String get downloadLossyOpus128Subtitle => - 'Taille minimale : environ 4 Mo par piste'; - - @override - String get downloadAskBeforeDownload => 'Demander avant de télécharger'; - - @override - String get downloadDirectory => 'Répertoire de téléchargement'; - - @override - String get downloadSeparateSinglesFolder => - 'Dossier dédié aux titres individuels'; - - @override - String get downloadAlbumFolderStructure => 'Structure du dossier de l\'album'; - - @override - String get albumFolderStructureDescription => - 'Choisissez la structure des dossiers d\'albums'; - - @override - String get downloadUseAlbumArtistForFolders => - 'Utilisez l\'artiste de l\'album pour les dossiers'; - - @override - String get downloadUsePrimaryArtistOnly => - 'Artiste principal uniquement pour les dossiers'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - 'Les noms des artistes mis en avant ont été supprimés du nom du dossier (par exemple : Justin Bieber, Quavo → Justin Bieber)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - 'Nom complet de l\'artiste utilisé pour le nom du dossier'; - - @override - String get downloadSelectQuality => 'Sélectionner la qualité'; - - @override - String get downloadFrom => 'Télécharger depuis'; - - @override - String get appearanceAmoledDark => 'Noir Amoled'; - - @override - String get appearanceAmoledDarkSubtitle => 'Fond noir pur'; - - @override - String get appearanceHeroAnimations => 'Animations des héros'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Des fenêtres contextuelles apparaissent entre les écrans, par exemple lors de l\'ouverture du lecteur'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => 'Tout effacer'; - - @override - String get queueClearAllMessage => - 'Êtes-vous sûr de vouloir supprimer tous les fichiers téléchargés ?'; - - @override - String get settingsAutoExportFailed => - 'Échec de l\'exportation automatique des téléchargements'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Enregistrez automatiquement les téléchargements ayant échoué dans un fichier TXT'; - - @override - String get settingsDownloadNetwork => 'Réseau de téléchargement'; - - @override - String get settingsDownloadNetworkAny => 'Wi-Fi + données mobiles'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Wi-Fi uniquement'; - - @override - String get 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.'; - - @override - String get settingsConcurrentDownloads => 'Téléchargements simultanés'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Le téléchargement simultané de plusieurs titres est plus rapide, mais certains fournisseurs peuvent limiter le débit des requêtes parallèles.'; - - @override - String get concurrentDownloadsOne => '1 titre à la fois'; - - @override - String concurrentDownloadsCount(int count) { - return 'Jusqu\'à $count titres à la fois'; - } - - @override - String get albumFolderArtistAlbum => 'Artiste / Album'; - - @override - String get albumFolderArtistAlbumSubtitle => - 'Albums/Nom de l\'artiste/Titre de l\'album/'; - - @override - String get albumFolderArtistYearAlbum => 'Artiste / [Année] Album'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Albums/Nom de l\'artiste/[2005] Nom de l\'album/'; - - @override - String get albumFolderAlbumOnly => 'Album uniquement'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Albums/Nom de l\'album/'; - - @override - String get albumFolderYearAlbum => '[Année] Album'; - - @override - String get albumFolderYearAlbumSubtitle => 'Albums/[2005] Titre de l\'album/'; - - @override - String get albumFolderArtistAlbumSingles => 'Artiste / Album + Singles'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Artiste/Album/ et Artiste/Singles/'; - - @override - String get albumFolderArtistAlbumFlat => 'Artiste / Album (singles)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artiste/Album/ et Artiste/titre.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Supprimer la sélection'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistes', - one: 'piste', - ); - return 'Souhaitez-vous supprimer $count $_temp0 de cet album ?\n\nCela supprimera également les fichiers de l\'espace de stockage.'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return '$count sélectionnés'; - } - - @override - String get downloadedAlbumTapToSelect => - 'Appuyez sur les titres pour les sélectionner'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistes', - one: 'piste', - ); - return 'Supprimer $count $_temp0'; - } - - @override - String get downloadedAlbumSelectToDelete => - 'Sélectionnez les pistes à supprimer'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Disque $discNumber'; - } - - @override - String get recentTypeArtist => 'Artiste'; - - @override - String get recentTypeAlbum => 'Album'; - - @override - String get recentTypeSong => 'Titre'; - - @override - String get recentTypePlaylist => 'Playlist'; - - @override - String get recentEmpty => 'Aucun élément récent pour le moment'; - - @override - String get recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @override - String get recentShowAllDownloads => 'Afficher tous les téléchargements'; - - @override - String recentPlaylistInfo(String name) { - return 'Playlist : $name'; - } - - @override - String get discographyDownload => 'Télécharger la discographie'; - - @override - String get discographyDownloadAll => 'Tout télécharger'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$count titres issus de $albumCount albums'; - } - - @override - String get discographyAlbumsOnly => 'Albums uniquement'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count titres issus de $albumCount albums'; - } - - @override - String get discographySinglesOnly => 'Uniquement les singles et les EP'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count titres issus de $albumCount singles'; - } - - @override - String get discographySelectAlbums => 'Sélectionner des albums...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Choisissez des albums ou des titres spécifiques'; - - @override - String get discographyFetchingTracks => 'Chargement des pistes...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return 'Récupération de $current sur $total...'; - } - - @override - String discographySelectedCount(int count) { - return '$count sélectionnés'; - } - - @override - String get discographyDownloadSelected => 'Télécharger la sélection'; - - @override - String discographyAddedToQueue(int count) { - return '$count titres ont été ajoutés à la file d\'attente'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added ajouté, $skipped déjà téléchargé'; - } - - @override - String get discographyNoAlbums => 'Aucun album disponible'; - - @override - String get discographyFailedToFetch => - 'Impossible de récupérer certains albums'; - - @override - String get sectionStorageAccess => 'Accès au stockage'; - - @override - String get allFilesAccess => 'Accès à tous les fichiers'; - - @override - String get allFilesAccessEnabledSubtitle => - 'Peut écrire dans n\'importe quel dossier'; - - @override - String get allFilesAccessDisabledSubtitle => - 'Réservé aux dossiers multimédias uniquement'; - - @override - String get 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.'; - - @override - String get allFilesAccessDeniedMessage => - 'L\'autorisation a été refusée. Veuillez activer manuellement l\'option « Accès à tous les fichiers » dans les paramètres système.'; - - @override - String get allFilesAccessDisabledMessage => - 'L\'accès à tous les fichiers est désactivé. L\'application disposera d\'un accès limité au stockage.'; - - @override - String get settingsLocalLibrary => 'Bibliothèque locale'; - - @override - String get settingsLocalLibrarySubtitle => - 'Analysez la musique et détectez les doublons'; - - @override - String get settingsCache => 'Stockage & Cache'; - - @override - String get settingsCacheSubtitle => 'Afficher la taille et vider le cache'; - - @override - String get libraryTitle => 'Bibliothèque locale'; - - @override - String get libraryScanSettings => 'Paramètres de numérisation'; - - @override - String get libraryEnableLocalLibrary => 'Activer la bibliothèque locale'; - - @override - String get libraryEnableLocalLibrarySubtitle => - 'Analysez et gérez votre bibliothèque musicale'; - - @override - String get libraryFolder => 'Dossier de bibliothèque'; - - @override - String get libraryFolderHint => 'Appuyez pour sélectionner un dossier'; - - @override - String get libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @override - String get libraryShowDuplicateIndicator => - 'Afficher l\'indicateur de doublons'; - - @override - String get libraryShowDuplicateIndicatorSubtitle => - 'Afficher lors de la recherche de pistes existantes'; - - @override - String get libraryAutoScan => 'Analyse automatique'; - - @override - String get libraryAutoScanSubtitle => - 'Analysez automatiquement votre bibliothèque à la recherche de nouveaux fichiers'; - - @override - String get libraryAutoScanOff => 'Désactivée'; - - @override - String get libraryAutoScanOnOpen => 'À chaque ouverture de l\'application'; - - @override - String get libraryAutoScanDaily => 'Tous les jours'; - - @override - String get libraryAutoScanWeekly => 'Hebdomadaire'; - - @override - String get libraryActions => 'Actions'; - - @override - String get libraryScan => 'Analyse de la bibliothèque'; - - @override - String get libraryScanSubtitle => 'Recherchez des fichiers audio'; - - @override - String get libraryScanSelectFolderFirst => 'Sélectionnez d\'abord un dossier'; - - @override - String get libraryCleanupMissingFiles => 'Nettoyage des fichiers manquants'; - - @override - String get libraryCleanupMissingFilesSubtitle => - 'Supprimez les entrées correspondant aux fichiers qui n\'existent plus'; - - @override - String get libraryClear => 'Vider la bibliothèque'; - - @override - String get libraryClearSubtitle => 'Supprimez tous les titres numérisés'; - - @override - String get libraryClearConfirmTitle => 'Vider la bibliothèque'; - - @override - String get libraryClearConfirmMessage => - 'Cette opération supprimera toutes les pistes numérisées de votre bibliothèque. Vos fichiers musicaux ne seront pas supprimés.'; - - @override - String get libraryAbout => 'À propos de la bibliothèque locale'; - - @override - String get 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.'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'pistes', - one: 'piste', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fichiers', - one: 'fichier', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Dernière analyse : $time'; - } - - @override - String get libraryLastScannedNever => 'Jamais'; - - @override - String get libraryScanning => 'En cours d\'analyse...'; - - @override - String get libraryScanFinalizing => 'Finalisation de la bibliothèque...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$progress % des $total fichiers'; - } - - @override - String get libraryInLibrary => 'Dans la bibliothèque'; - - @override - String libraryRemovedMissingFiles(int count) { - return '$count fichiers manquants ont été supprimés de la bibliothèque'; - } - - @override - String get libraryCleared => 'Bibliothèque vidée'; - - @override - String get libraryStorageAccessRequired => 'Accès au stockage requis'; - - @override - String get 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.'; - - @override - String get libraryFolderNotExist => 'Le dossier sélectionné n\'existe pas'; - - @override - String get librarySourceDownloaded => 'Téléchargé'; - - @override - String get librarySourceLocal => 'Locale'; - - @override - String get libraryFilterAll => 'Tout'; - - @override - String get libraryFilterDownloaded => 'Téléchargé'; - - @override - String get libraryFilterLocal => 'Locale'; - - @override - String get libraryFilterTitle => 'Filtres'; - - @override - String get libraryFilterReset => 'Réinitialiser'; - - @override - String get libraryFilterApply => 'Appliquer'; - - @override - String get libraryFilterSource => 'Source'; - - @override - String get libraryFilterQuality => 'Qualité'; - - @override - String get libraryFilterQualityHiRes => 'Haute résolution (24 bits)'; - - @override - String get libraryFilterQualityCD => 'CD (16 bits)'; - - @override - String get libraryFilterQualityLossy => 'Avec perte'; - - @override - String get libraryFilterFormat => 'Format'; - - @override - String get libraryFilterMetadata => 'Métadonnées'; - - @override - String get libraryFilterMetadataComplete => 'Métadonnées complètes'; - - @override - String get libraryFilterMetadataMissingAny => 'Métadonnées manquantes'; - - @override - String get libraryFilterMetadataMissingYear => 'Année manquante'; - - @override - String get libraryFilterMetadataMissingGenre => 'Genre manquant'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => - 'Artiste d\'album manquant'; - - @override - String get libraryFilterSort => 'Trier'; - - @override - String get libraryFilterSortLatest => 'Le plus récent'; - - @override - String get libraryFilterSortOldest => 'Le plus ancien'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @override - String get timeJustNow => 'Il y a quelques instants'; - - @override - String timeMinutesAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'il y a $count minutes', - one: 'il y a 1 minute', - ); - return '$_temp0'; - } - - @override - String timeHoursAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'il y a $count heures', - one: 'il y a 1 heure', - ); - return '$_temp0'; - } - - @override - String get tutorialWelcomeTitle => 'Bienvenue dans SpotiFLAC Mobile !'; - - @override - String get tutorialWelcomeDesc => - 'Apprenons comment télécharger votre musique préférée en qualité sans perte. Ce petit tutoriel vous présentera les bases.'; - - @override - String get tutorialWelcomeTip1 => - 'Recherchez avec une extension installée ou collez un lien compatible'; - - @override - String get tutorialWelcomeTip2 => - 'Obtenez un son de qualité FLAC grâce aux extensions de téléchargement installées'; - - @override - String get tutorialWelcomeTip3 => - 'Intégration automatique des métadonnées, des pochettes d\'album et des paroles'; - - @override - String get tutorialSearchTitle => 'Trouver de la musique'; - - @override - String get tutorialSearchDesc => - 'Il existe deux façons simples de trouver la musique que vous souhaitez télécharger.'; - - @override - String get tutorialDownloadTitle => 'Télécharger de la musique'; - - @override - String get tutorialDownloadDesc => - 'Télécharger de la musique, c\'est simple et rapide. Voici comment ça marche.'; - - @override - String get tutorialLibraryTitle => 'Votre bibliothèque'; - - @override - String get tutorialLibraryDesc => - 'Toute votre musique téléchargée est classée dans l\'onglet « Bibliothèque ».'; - - @override - String get tutorialLibraryTip1 => - 'Afficher la progression du téléchargement et la file d\'attente dans l\'onglet « Bibliothèque »'; - - @override - String get tutorialLibraryTip2 => - 'Appuyez sur n\'importe quel morceau pour l\'écouter avec votre lecteur de musique'; - - @override - String get tutorialLibraryTip3 => - 'Passez de l\'affichage sous forme de liste à celui sous forme de grille pour faciliter la navigation'; - - @override - String get tutorialExtensionsTitle => 'Extensions'; - - @override - String get tutorialExtensionsDesc => - 'Élargissez les fonctionnalités de l\'application grâce aux extensions de la communauté.'; - - @override - String get tutorialExtensionsTip1 => - 'Consultez l\'onglet « Dépôt » pour découvrir des extensions utiles'; - - @override - String get tutorialExtensionsTip2 => - 'Ajouter de nouveaux fournisseurs de téléchargement ou de nouvelles sources de recherche'; - - @override - String get tutorialExtensionsTip3 => - 'Accédez aux paroles, à des métadonnées enrichies et à bien d\'autres fonctionnalités'; - - @override - String get tutorialSettingsTitle => 'Personnalisez votre expérience'; - - @override - String get tutorialSettingsDesc => - 'Personnalisez l\'application dans les Paramètres en fonction de vos préférences.'; - - @override - String get tutorialSettingsTip1 => - 'Modifier l\'emplacement de téléchargement et l\'organisation des dossiers'; - - @override - String get tutorialSettingsTip2 => - 'Définir les préférences par défaut en matière de qualité et de format audio'; - - @override - String get tutorialSettingsTip3 => - 'Personnaliser le thème et l\'apparence de l\'application'; - - @override - String get tutorialReadyMessage => - 'C\'est parti ! Commencez dès maintenant à télécharger votre musique préférée.'; - - @override - String get libraryForceFullScan => 'Lancer une analyse complète'; - - @override - String get libraryForceFullScanSubtitle => - 'Réanalysez tous les fichiers en ignorant le cache'; - - @override - String get cleanupOrphanedDownloads => - 'Nettoyage des téléchargements orphelins'; - - @override - String get cleanupOrphanedDownloadsSubtitle => - 'Supprimez les entrées de l\'historique correspondant aux fichiers qui n\'existent plus'; - - @override - String cleanupOrphanedDownloadsResult(int count) { - return '$count entrées orphelines ont été supprimées de l\'historique'; - } - - @override - String get cleanupOrphanedDownloadsNone => - 'Aucune entrée orpheline n\'a été trouvée'; - - @override - String get cacheTitle => 'Stockage & Cache'; - - @override - String get cacheSummaryTitle => 'Présentation du cache'; - - @override - String get cacheSummarySubtitle => - 'La suppression du cache n\'entraînera pas la suppression des fichiers musicaux téléchargés.'; - - @override - String cacheEstimatedTotal(String size) { - return 'Utilisation estimée du cache : $size'; - } - - @override - String get cacheSectionStorage => 'Données mises en cache'; - - @override - String get cacheSectionMaintenance => 'Entretien'; - - @override - String get cacheAppDirectory => 'Répertoire de cache de l\'application'; - - @override - String get cacheAppDirectoryDesc => - 'Réponses HTTP, données WebView et autres données temporaires de l\'application.'; - - @override - String get cacheTempDirectory => 'Répertoire temporaire'; - - @override - String get cacheTempDirectoryDesc => - 'Fichiers temporaires liés aux téléchargements et à la conversion audio.'; - - @override - String get cacheCoverImage => 'Cache des images de couverture'; - - @override - String get cacheCoverImageDesc => - 'J\'ai téléchargé les pochettes de l\'album et des titres. Je les téléchargerai à nouveau lors de leur consultation.'; - - @override - String get cacheLibraryCover => 'Cache de couverture de bibliothèque'; - - @override - String get cacheLibraryCoverDesc => - 'Pochettes extraites des fichiers musicaux locaux. Elles seront extraites à nouveau lors de la prochaine analyse.'; - - @override - String get libraryPlaybackNormalization => 'Normalisation du volume'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Équilibrer le volume entre les morceaux à l\'aide des balises ReplayGain ou R128, lorsqu\'elles sont présentes'; - - @override - String get cacheAudioAnalysis => 'Cache d\'analyse audio'; - - @override - String get cacheAudioAnalysisDesc => - 'Spectrogrammes et résultats d\'analyse enregistrés. Réanalyse prévue lors de la prochaine ouverture.'; - - @override - String get cacheExploreFeed => 'Explorer le cache des flux'; - - @override - String get cacheExploreFeedDesc => - 'Contenu de l\'onglet « Explorer » (nouvelles sorties, tendances). Se mettra à jour lors de votre prochaine visite.'; - - @override - String get cacheTrackLookup => 'Cache de recherche de piste'; - - @override - String get cacheTrackLookupDesc => - 'Recherche d\'identifiant de titre sur Spotify/Deezer. La suppression des données peut ralentir les prochaines recherches.'; - - @override - String get cacheCleanupUnusedDesc => - 'Supprimer les entrées orphelines de l\'historique des téléchargements et de la bibliothèque pour les fichiers manquants.'; - - @override - String get cacheNoData => 'Aucune donnée mise en cache'; - - @override - String cacheSizeWithFiles(String size, int count) { - return '$size dans $count fichiers'; - } - - @override - String cacheSizeOnly(String size) { - return '$size'; - } - - @override - String cacheEntries(int count) { - return '$count entrées'; - } - - @override - String cacheClearSuccess(String target) { - return 'Effacé : $target'; - } - - @override - String get cacheClearConfirmTitle => 'Vider le cache ?'; - - @override - String cacheClearConfirmMessage(String target) { - return 'Cette opération effacera les données mises en cache pour $target. Les fichiers musicaux téléchargés ne seront pas supprimés.'; - } - - @override - String get cacheClearAllConfirmTitle => 'Vider tout le cache ?'; - - @override - String get 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.'; - - @override - String get cacheClearAll => 'Vider tout le cache'; - - @override - String get cacheCleanupUnused => 'Nettoyer les données inutilisées'; - - @override - String get cacheCleanupUnusedSubtitle => - 'Supprimer l\'historique des téléchargements orphelins et les entrées manquantes dans la bibliothèque'; - - @override - String cacheCleanupResult(int downloadCount, int libraryCount) { - return 'Nettoyage terminé : $downloadCount téléchargements orphelins, $libraryCount entrées de bibliothèque manquantes'; - } - - @override - String get cacheRefreshStats => 'Actualiser les statistiques'; - - @override - String get trackSaveCoverArt => 'Enregistrer la pochette'; - - @override - String get trackSaveLyrics => 'Enregistrer les paroles (.lrc)'; - - @override - String get trackSaveLyricsProgress => 'Enregistrement des paroles...'; - - @override - String get trackReEnrich => 'Réenrichir'; - - @override - String get trackReEnrichOnlineSubtitle => - 'Rechercher des métadonnées en ligne et les intégrer dans un fichier'; - - @override - String get trackReEnrichFieldCover => 'Illustration de couverture'; - - @override - String get trackReEnrichFieldLyrics => 'Paroles'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artiste'; - - @override - String get trackReEnrichFieldTrackInfo => 'Numéro de piste & de disque'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Droits d\'auteur'; - - @override - String get trackReEnrichSelectAll => 'Tout sélectionner'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @override - String get trackEditMetadata => 'Modifier les métadonnées'; - - @override - String trackCoverSaved(String fileName) { - return 'La pochette a été enregistrée sous le nom $fileName'; - } - - @override - String get trackCoverNoSource => - 'Aucune source d\'illustration de couverture disponible'; - - @override - String trackLyricsSaved(String fileName) { - return 'Paroles enregistrées dans $fileName'; - } - - @override - String get trackReEnrichProgress => 'Réenrichissement des métadonnées...'; - - @override - String get trackReEnrichSearching => 'Recherche de métadonnées en ligne...'; - - @override - String get trackReEnrichSuccess => 'Métadonnées réenrichies avec succès'; - - @override - String get trackReEnrichFfmpegFailed => - 'Échec de l\'intégration des métadonnées FFmpeg'; - - @override - String get queueFlacAction => 'File d\'attente FLAC'; - - @override - String queueFlacConfirmMessage(int count) { - return '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'; - } - - @override - String get queueFlacNoReliableMatches => - 'Aucun résultat pertinent n\'a été trouvé en ligne pour cette sélection'; - - @override - String queueFlacQueuedWithSkipped(int addedCount, int skippedCount) { - return '$addedCount titres ajoutés à la file d\'attente, $skippedCount titres ignorés'; - } - - @override - String trackSaveFailed(String error) { - return 'Échec : $error'; - } - - @override - String get trackConvertFormat => 'Convertir le format'; - - @override - String get trackConvertTitle => 'Convertir un fichier audio'; - - @override - String get trackConvertTargetFormat => 'Format cible'; - - @override - String get trackConvertBitrate => 'Débit binaire'; - - @override - String get trackConvertKeepOriginal => 'Conserver le fichier d\'origine'; - - @override - String get trackConvertKeepOriginalDescription => - 'Ajoutez le fichier converti en tant qu\'entrée distincte dans la bibliothèque'; - - @override - String get trackConvertConfirmTitle => 'Confirmer la conversion'; - - @override - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ) { - return '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.'; - } - - @override - String trackConvertConfirmMessageLossless( - String sourceFormat, - String targetFormat, - ) { - return 'Convertir de $sourceFormat vers $targetFormat ? (Sans perte — aucune perte de qualité)\n\nLe fichier d\'origine sera supprimé après la conversion.'; - } - - @override - String trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convertir du format $sourceFormat au format $targetFormat ?\n\nLe fichier d\'origine sera conservé et le fichier converti sera ajouté en tant qu\'entrée distincte dans la bibliothèque.'; - } - - @override - String get trackConvertLosslessHint => - 'Conversion sans perte — aucune perte de qualité'; - - @override - String get trackConvertConverting => 'Conversion audio en cours...'; - - @override - String trackConvertSuccess(String format) { - return 'Conversion vers $format réussie'; - } - - @override - String get trackConvertFailed => 'Échec de la conversion'; - - @override - String get cueSplitTitle => 'Fiche CUE fractionnée'; - - @override - String cueSplitAlbum(String album) { - return 'Album : $album'; - } - - @override - String cueSplitArtist(String artist) { - return 'Artiste : $artist'; - } - - @override - String cueSplitTrackCount(int count) { - return '$count titres'; - } - - @override - String get cueSplitConfirmTitle => 'Album CUE fractionné'; - - @override - String cueSplitConfirmMessage(String album, int count) { - return 'Diviser « $album » en $count fichiers FLAC individuels ?\n\nLes fichiers seront enregistrés dans le même répertoire.'; - } - - @override - String cueSplitSplitting(int current, int total) { - return 'Fractionnement de la liste CUE... ($current/$total)'; - } - - @override - String cueSplitSuccess(int count) { - return 'Le fichier a été divisé en $count pistes avec succès'; - } - - @override - String get cueSplitFailed => 'Échec de la division CUE'; - - @override - String get cueSplitNoAudioFile => - 'Fichier audio introuvable pour cette liste CUE'; - - @override - String get cueSplitButton => 'Diviser en pistes'; - - @override - String get actionCreate => 'Créer'; - - @override - String get collectionFoldersTitle => 'Mes dossiers'; - - @override - String get collectionWishlist => 'Liste de souhaits'; - - @override - String get collectionLoved => 'Favoris'; - - @override - String get collectionFavoriteArtists => 'Artistes Favoris'; - - @override - String get collectionPlaylist => 'Playlist'; - - @override - String get collectionAddToPlaylist => 'Ajouter à la playlist'; - - @override - String get collectionCreatePlaylist => 'Créer une playlist'; - - @override - String get collectionNoPlaylistsYet => 'Aucune playlist pour le moment'; - - @override - String collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count titres', - one: '1 titre', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artistes', - one: '1 artiste', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Ajouté à « $playlistName »'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Déjà présent dans « $playlistName »'; - } - - @override - String get collectionPlaylistNameHint => 'Nom de la playlist'; - - @override - String get collectionPlaylistNameRequired => - 'Le nom de la playlist est requis'; - - @override - String get collectionRenamePlaylist => 'Renommer la playlist'; - - @override - String get collectionDeletePlaylist => 'Supprimer la playlist'; - - @override - String get collectionPlaylistRenamed => 'Playlist renommée'; - - @override - String get collectionWishlistEmptyTitle => 'La liste de souhaits est vide'; - - @override - String get collectionWishlistEmptySubtitle => - 'Appuyez sur le signe « + » à côté des morceaux pour enregistrer ceux que vous souhaitez télécharger plus tard'; - - @override - String get collectionLovedEmptyTitle => 'Le dossier « Favoris » est vide'; - - @override - String get collectionLovedEmptySubtitle => - 'Appuyez sur les morceaux que vous aimez pour les ajouter à vos favoris'; - - @override - String get collectionFavoriteArtistsEmptyTitle => - 'Pas encore d\'artistes préférés'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Appuyez sur le cœur sur la page d\'un artiste pour le garder ici'; - - @override - String get collectionPlaylistEmptyTitle => 'La playlist est vide'; - - @override - String get collectionPlaylistEmptySubtitle => - 'Appuyez longuement sur le bouton « + » sur n\'importe quel morceau pour l\'ajouter ici'; - - @override - String get collectionRemoveFromPlaylist => 'Supprimer de la playlist'; - - @override - String get collectionRemoveFromFolder => 'Supprimer du dossier'; - - @override - String collectionAddedToLoved(String trackName) { - return '\"$trackName\" ajouté aux Favoris'; - } - - @override - String collectionRemovedFromLoved(String trackName) { - return '\"$trackName\" supprimé des Favoris'; - } - - @override - String collectionAddedToWishlist(String trackName) { - return '« $trackName » a été ajouté à la liste de souhaits'; - } - - @override - String collectionRemovedFromWishlist(String trackName) { - return '« $trackName » a été supprimé de la liste de souhaits'; - } - - @override - String collectionAddedToFavoriteArtists(String artistName) { - return '« $artistName » a été ajouté à vos artistes préférés'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '« $artistName » a été supprimé de vos artistes favoris'; - } - - @override - String get trackOptionAddToLoved => 'Ajouter aux Favoris'; - - @override - String get trackOptionRemoveFromLoved => 'Supprimer des Favoris'; - - @override - String get trackOptionAddToWishlist => 'Ajouter à la liste de souhaits'; - - @override - String get trackOptionRemoveFromWishlist => - 'Supprimer de la liste de souhaits'; - - @override - String get artistOptionAddToFavorites => 'Ajouter aux Artistes Favoris'; - - @override - String get artistOptionRemoveFromFavorites => - 'Supprimer des Artistes Favoris'; - - @override - String get collectionPlaylistChangeCover => 'Changer l\'image de couverture'; - - @override - String get collectionPlaylistRemoveCover => - 'Supprimer l\'image de couverture'; - - @override - String selectionShareCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Partager $count $_temp0'; - } - - @override - String get selectionShareNoFiles => - 'Aucun fichier partageable n\'a été trouvé'; - - @override - String selectionConvertCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Convertir $count $_temp0'; - } - - @override - String get selectionConvertNoConvertible => - 'Aucune piste convertible sélectionnée'; - - @override - String get selectionBatchConvertConfirmTitle => 'Conversion par lots'; - - @override - String selectionBatchConvertConfirmMessage( - int count, - String format, - String bitrate, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Convertir $count $_temp0 au format $format avec un débit binaire de $bitrate ?\n\nLes fichiers d\'origine seront supprimés après la conversion.'; - } - - @override - String selectionBatchConvertConfirmMessageLossless(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Convertir $count $_temp0 au format $format ? (Sans perte — aucune perte de qualité)\n\nLes fichiers d\'origine seront supprimés après la conversion.'; - } - - @override - String selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Convertir $count $_temp0 au format $format ?\n\nLes fichiers d\'origine seront conservés et les fichiers convertis seront ajoutés sous forme d\'entrées distinctes dans la bibliothèque.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return '$success pistes sur $total ont été converties au format $format'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count téléchargements'; - } - - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Dossier nommé d\'après la balise « Artiste de l\'album »'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Dossier nommé d\'après la balise « Artiste » de la piste'; - - @override - String get lyricsProvidersTitle => 'Priorité au fournisseur de paroles'; - - @override - String get 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.'; - - @override - String get 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é.'; - - @override - String lyricsProvidersEnabledSection(int count) { - return 'Activé ($count)'; - } - - @override - String lyricsProvidersDisabledSection(int count) { - return 'Désactivés ($count)'; - } - - @override - String get lyricsProvidersAtLeastOne => - 'Au moins un fournisseur doit rester activé'; - - @override - String get lyricsProvidersSaved => - 'Priorité du fournisseur de paroles enregistrée'; - - @override - String get lyricsProvidersDiscardContent => - 'Vous avez des modifications non enregistrées qui seront perdues.'; - - @override - String get lyricsProviderLrclibDesc => - 'Base de données open source de paroles synchronisées'; - - @override - String get lyricsProviderNeteaseDesc => - 'NetEase Cloud Music (idéal pour les titres asiatiques)'; - - @override - String get lyricsProviderMusixmatchDesc => - 'La plus grande base de données de paroles (multilingue)'; - - @override - String get lyricsProviderAppleMusicDesc => - 'Paroles synchronisées mot à mot (via un proxy)'; - - @override - String get lyricsProviderQqMusicDesc => - 'QQ Music (idéal pour écouter des titres chinois, via un proxy)'; - - @override - String get lyricsProviderLyricsPlusDesc => - 'Paroles de karaoké mot à mot (Apple/Musixmatch/Spotify/QQ, via un proxy)'; - - @override - String get lyricsProviderExtensionDesc => 'Fournisseur d\'extensions'; - - @override - String get safMigrationTitle => 'Mise à jour du stockage requise'; - - @override - String get 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.'; - - @override - String get safMigrationMessage2 => - 'Veuillez sélectionner à nouveau votre dossier de téléchargement pour passer au nouveau système de stockage.'; - - @override - String get safMigrationSuccess => - 'Le dossier de téléchargement a été mis à jour en mode SAF'; - - @override - String get settingsDonate => 'Soutien au développement'; - - @override - String get settingsDonateSubtitle => 'Offrez un café au développeur'; - - @override - String get settingsBackup => 'Sauvegarde & Restauration'; - - @override - String get settingsBackupSubtitle => - 'Transférer votre bibliothèque, votre historique et vos paramètres vers un nouvel appareil'; - - @override - String get backupTitle => 'Sauvegarde & Restauration'; - - @override - String get backupExportSectionTitle => 'Créer une sauvegarde'; - - @override - String get 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.'; - - @override - String get backupExportButton => 'Créer un fichier de sauvegarde'; - - @override - String get backupImportSectionTitle => 'Restaurer la sauvegarde'; - - @override - String get 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.'; - - @override - String get backupImportButton => 'Choisissez un fichier de sauvegarde'; - - @override - String get backupCreated => 'Sauvegarde créée'; - - @override - String get backupCreateFailed => 'Échec de la création de la sauvegarde'; - - @override - String get backupRestoreConfirmTitle => 'Restaurer cette sauvegarde ?'; - - @override - String get 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.'; - - @override - String get backupRestoreConfirmButton => 'Restaurer'; - - @override - String get backupRestored => 'La sauvegarde a été restaurée avec succès'; - - @override - String get backupRestoreFailed => 'Échec de la restauration de la sauvegarde'; - - @override - String get backupInvalidFile => - 'Ce fichier n\'est pas une sauvegarde SpotiFLAC valide'; - - @override - String get backupRestoreRestartHint => - 'Redémarrez l\'application pour vous assurer que toutes les modifications ont bien été prises en compte.'; - - @override - String get backupContentsTitle => 'Contenu de la sauvegarde'; - - @override - String get backupContentsSettings => 'Paramètres de l\'application'; - - @override - String backupContentsHistory(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'éléments', - one: 'élément', - ); - return '$count historique $_temp0'; - } - - @override - String backupContentsLiked(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return '$count favoris $_temp0'; - } - - @override - String backupContentsWishlist(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return '$count liste de souhaits $_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 artistes préférés', - one: '1 artiste préféré', - ); - 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 => - 'Inclure les informations d\'identification de l\'extension'; - - @override - String get 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.'; - - @override - String backupExtensionsRestoreFailed(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0 n\'ont pas pu être réinstallées. Installez-les manuellement depuis le dépôt.'; - } - - @override - String get tooltipLoveAll => 'Tout aimer'; - - @override - String get tooltipAddToPlaylist => 'Ajouter à la playlist'; - - @override - String snackbarRemovedTracksFromLoved(int count) { - return '$count titres supprimés des Favoris'; - } - - @override - String snackbarAddedTracksToLoved(int count) { - return '$count titres ajoutés aux Favoris'; - } - - @override - String get dialogDownloadAllTitle => 'Tout télécharger'; - - @override - String dialogDownloadAllMessage(int count) { - return 'Télécharger $count titres ?'; - } - - @override - String get homeSkipAlreadyDownloaded => - 'Ignorer les morceaux déjà téléchargés'; - - @override - String get homeGoToAlbum => 'Aller à l\'album'; - - @override - String get homeAlbumInfoUnavailable => - 'Informations sur l\'album non disponibles'; - - @override - String get snackbarLoadingCueSheet => 'Chargement de la liste CUE...'; - - @override - String get snackbarMetadataSaved => - 'Les métadonnées ont été enregistrées avec succès'; - - @override - String get snackbarFailedToEmbedLyrics => - 'Impossible d\'intégrer les paroles'; - - @override - String get snackbarFailedToWriteStorage => - 'Échec de l\'écriture sur le support de stockage'; - - @override - String snackbarError(String error) { - return 'Erreur : $error'; - } - - @override - String get snackbarNoActionDefined => - 'Aucune action n\'est associée à ce bouton'; - - @override - String get noTracksFoundForAlbum => 'Aucun morceau trouvé pour cet album'; - - @override - String get downloadLocationSubtitle => - 'Choisissez l\'emplacement où enregistrer vos morceaux téléchargés'; - - @override - String get storageModeAppFolder => 'Dossier « Applications » (recommandé)'; - - @override - String get storageModeAppFolderSubtitle => - 'Enregistrement par défaut dans le dossier « Musique/SpotiFLAC »'; - - @override - String get storageModeSaf => 'Dossier personnalisé (SAF)'; - - @override - String get storageModeSafSubtitle => - 'Choisissez n\'importe quel dossier, y compris la carte SD'; - - @override - String get downloadFolderAccessLostTitle => - 'Accès au dossier de téléchargement perdu'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Les téléchargements échoueront tant que vous n\'aurez pas resélectionné le dossier'; - - @override - String get downloadFolderReselect => 'Sélectionner à nouveau le dossier'; - - @override - String get downloadErrorSafPermissionLost => - 'Autorisation SAF non valide ou révoquée. Veuillez reconfigurer l\'emplacement de téléchargement dans les Paramètres.'; - - @override - String get downloadErrorFolderAccessLost => - 'Accès au dossier de téléchargement perdu. Veuillez sélectionner à nouveau votre dossier de téléchargement dans les Paramètres.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Utilisez $artist, $title, $album, $track, $year, $date et $disc comme variables de remplacement.'; - } - - @override - String get downloadFilenameInsertTag => 'Appuyez pour insérer une balise :'; - - @override - String get downloadSeparateSinglesEnabled => - 'Les singles et les EP sont enregistrés dans un dossier séparé'; - - @override - String get downloadSeparateSinglesDisabled => - 'Les singles et les albums sont enregistrés dans le même dossier'; - - @override - String get downloadArtistNameFilters => 'Filtres par nom d\'artiste'; - - @override - String get downloadCreatePlaylistSourceFolder => - 'Dossier source de la playlist'; - - @override - String get downloadCreatePlaylistSourceFolderEnabled => - 'Un sous-dossier est créé pour chaque playlist'; - - @override - String get downloadCreatePlaylistSourceFolderDisabled => - 'Tous les morceaux sont enregistrés directement dans le dossier de téléchargement'; - - @override - String get downloadCreatePlaylistSourceFolderRedundant => - 'Géré par les paramètres d\'organisation des dossiers'; - - @override - String get downloadSongLinkRegion => 'Région SongLink'; - - @override - String get downloadNetworkCompatibilityMode => 'Mode de compatibilité réseau'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Points de terminaison HTTP hérités autorisés ; la vérification TLS reste active'; - - @override - String get downloadNetworkCompatibilityModeDisabled => - 'Utilisation des paramètres réseau par défaut'; - - @override - String get downloadAllowLocalNetwork => 'Autoriser l\'accès au réseau local'; - - @override - String get downloadAllowLocalNetworkEnabled => - '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 => - 'Les adresses locales/privées sont bloquées pour des raisons de sécurité'; - - @override - String get downloadSelectServiceToEnable => - 'Choisissez un fournisseur proposant des options de qualité pour activer cette fonctionnalité'; - - @override - String get downloadEmbedLyricsDisabled => - 'Activez d\'abord l\'intégration des métadonnées'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease : inclure la traduction'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Lignes de traduction en chinois incluses'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Paroles originales uniquement'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease : inclure la romanisation'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Lignes de romanisation incluses'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => - 'Pas de romanisation'; - - @override - String get downloadAppleQqMultiPerson => - 'Apple / QQ : Paroles pour plusieurs personnes'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Étiquettes d\'intervenants incluses pour les duos et les morceaux en groupe'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Paroles standard sans indication du haut-parleur'; - - @override - String get downloadAppleElrcWordSync => - 'Synchronisation des paroles Apple Music eLRC'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Conservation des horodatages bruts mot à mot'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Paroles d\'Apple Music, ligne par ligne, en toute sécurité'; - - @override - String get downloadMusixmatchLanguage => 'Langue Musixmatch'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (langue d\'origine)'; - - @override - String get downloadFilterContributing => 'Filtrer les artistes participants'; - - @override - String get downloadFilterContributingEnabled => - 'Les artistes ayant contribué à l\'album ont été supprimés du nom du dossier « Artiste de l\'album »'; - - @override - String get downloadFilterContributingDisabled => - 'Chaîne « Artiste » de l\'album complet utilisée'; - - @override - String get downloadProvidersNoneEnabled => 'Aucun fournisseur n\'est activé'; - - @override - String get downloadMusixmatchLanguageCode => 'Code de langue'; - - @override - String get downloadMusixmatchLanguageHint => 'par exemple : en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Saisissez un code de langue BCP-47 (par exemple : en, de, ja) pour demander les paroles traduites à Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => - 'Utilisez le Wi-Fi ou les données mobiles'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Les téléchargements sont mis en pause lors de l\'utilisation des données mobiles'; - - @override - String get 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.'; - - @override - String get snackbarUnsupportedAudioFormat => - 'Format audio non pris en charge'; - - @override - String get cacheRefresh => 'Actualiser'; - - @override - String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount) { - String _temp0 = intl.Intl.pluralLogic( - trackCount, - locale: localeName, - other: 'titres', - one: 'titre', - ); - String _temp1 = intl.Intl.pluralLogic( - playlistCount, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Télécharger $trackCount $_temp0 depuis $playlistCount $_temp1 ?'; - } - - @override - String bulkDownloadPlaylistsButton(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Télécharger $count $_temp0'; - } - - @override - String get bulkDownloadSelectPlaylists => - 'Sélectionnez les playlists à télécharger'; - - @override - String get snackbarSelectedPlaylistsEmpty => - 'Les playlists sélectionnées ne contiennent aucun morceau'; - - @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 => 'Remplissage automatique en ligne'; - - @override - String get editMetadataAutoFillDesc => - 'Sélectionnez les champs à remplir automatiquement à partir des métadonnées en ligne'; - - @override - String get editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @override - String get editMetadataAutoFillFetch => 'Récupérer & remplir'; - - @override - String get editMetadataAutoFillSearching => 'Recherche en ligne...'; - - @override - String get editMetadataAutoFillNoResults => - 'Aucune métadonnée correspondante n\'a été trouvée en ligne'; - - @override - String editMetadataAutoFillDone(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'champs', - one: 'champ', - ); - return '$count $_temp0 renseignés à partir des métadonnées en ligne'; - } - - @override - String get editMetadataAutoFillNoneSelected => - 'Sélectionnez au moins un champ pour le remplir automatiquement'; - - @override - String get editMetadataFieldTitle => 'Titre'; - - @override - String get editMetadataFieldArtist => 'Artiste'; - - @override - String get editMetadataFieldAlbum => 'Album'; - - @override - String get editMetadataFieldAlbumArtist => 'Artiste de l\'album'; - - @override - String get editMetadataFieldDate => 'Date'; - - @override - String get editMetadataFieldTrackNum => 'Piste n°'; - - @override - String get editMetadataFieldDiscNum => 'Disque n°'; - - @override - String get editMetadataFieldGenre => 'Genre'; - - @override - String get editMetadataFieldIsrc => 'ISRC'; - - @override - String get editMetadataFieldLabel => 'Label'; - - @override - String get editMetadataFieldCopyright => 'Droits d\'auteur'; - - @override - String get editMetadataFieldCover => 'Illustration de couverture'; - - @override - String get editMetadataSelectAll => 'Tout'; - - @override - String get editMetadataSelectEmpty => 'Vide uniquement'; - - @override - String queueDownloadingCount(int count) { - return 'Téléchargement ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtrage...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count titres', - one: '1 titre', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'Aucun album téléchargé'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Téléchargez plusieurs titres d\'un album pour les écouter ici'; - - @override - String get queueEmptySingles => 'Pas de téléchargement individuel'; - - @override - String get queueEmptySinglesSubtitle => - 'Les téléchargements de titres individuels apparaîtront ici'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'Aucun historique de téléchargement'; - - @override - String get queueEmptyHistorySubtitle => - 'Les morceaux téléchargés apparaîtront ici'; - - @override - String get selectionAllPlaylistsSelected => - 'Toutes les playlists sélectionnées'; - - @override - String get selectionTapPlaylistsToSelect => - 'Appuyez sur les playlists pour les sélectionner'; - - @override - String get selectionSelectPlaylistsToDelete => - 'Sélectionnez les playlists à supprimer'; - - @override - String get audioAnalysisTitle => 'Analyse de la qualité audio'; - - @override - String get audioAnalysisDescription => - 'Vérifier la qualité sans perte à l\'aide d\'une analyse spectrale'; - - @override - String get audioAnalysisAnalyzing => 'Analyse audio en cours...'; - - @override - String get audioAnalysisSampleRate => 'Fréquence d\'échantillonnage'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Conteneur'; - - @override - String get audioAnalysisDecodedFormat => 'Format décodé'; - - @override - String get audioAnalysisBitDepth => 'Nombre de bits'; - - @override - String get audioAnalysisChannels => 'Chaînes'; - - @override - String get audioAnalysisDuration => 'Durée'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Taille'; - - @override - String get audioAnalysisDynamicRange => 'Plage dynamique'; - - @override - String get audioAnalysisPeak => 'Pic'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Coupure'; - - @override - String get audioAnalysisNoClipping => 'Pas de coupure'; - - @override - String get audioAnalysisSpectralCutoff => 'Limite spectrale'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Statistiques par chaîne'; - - @override - String get audioAnalysisSamples => 'Échantillons'; - - @override - String get audioAnalysisRescan => 'Réanalyser'; - - @override - String get audioAnalysisRescanning => 'Réanalyse du fichier audio...'; - - @override - String get extensionsHomeFeedProvider => 'Fournisseur de flux RSS'; - - @override - String get extensionsHomeFeedDescription => - 'Choisissez l\'extension qui affiche le fil d\'actualité sur l\'écran principal'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Sélectionnez automatiquement la meilleure option disponible'; - - @override - String get extensionsHomeFeedOff => 'Désactivé'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Ne pas afficher le fil d\'actualité sur l\'écran principal'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Utiliser le fil d\'actualité de $extensionName'; - } - - @override - String get extensionsNoHomeFeedExtensions => - 'Aucune extension avec le flux principal'; - - @override - String get cancelDownloadTitle => 'Annuler le téléchargement ?'; - - @override - String cancelDownloadContent(String trackName) { - return 'Cela annulera le téléchargement en cours de « $trackName ».'; - } - - @override - String get cancelDownloadKeep => 'Conserver'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => - 'Échec de l\'enregistrement des métadonnées via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Échec de la réécriture des métadonnées sur le support de stockage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Impossible d\'ouvrir le sélecteur de dossiers : $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Téléchargement de $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalisation de $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Intégration des métadonnées...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Déjà dans la bibliothèque ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Déjà dans la bibliothèque'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Téléchargement terminé ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Télécharger l\'intégralité'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Téléchargements terminés ($completed terminé, $failed en échec)'; - } - - @override - String get notifVerificationRequiredTitle => 'Vérification requise'; - - @override - String get notifVerificationRequiredBody => - 'Ouvrez l\'application pour terminer la vérification et reprendre les téléchargements'; - - @override - String get notifAllDownloadsComplete => - 'Tous les téléchargements sont terminés'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count pistes téléchargées avec succès', - one: '1 piste téléchargée avec succès', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed titres téléchargés', - one: '1 titre téléchargé', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed échecs', - one: '1 échec', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Téléchargements annulés'; - - @override - String notifDownloadsCanceledBody(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count téléchargements annulés par l\'utilisateur', - one: '1 téléchargement annulé par l\'utilisateur', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Numérisation de la bibliothèque locale'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total fichiers • $percentage %'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned fichiers analysés • $percentage %'; - } - - @override - String get notifLibraryScanComplete => 'Analyse de la bibliothèque terminée'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count titres indexés'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count exclus'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count erreurs'; - } - - @override - String get notifLibraryScanFailed => 'Échec de l\'analyse de la bibliothèque'; - - @override - String get notifLibraryScanCancelled => - 'Annulation de la numérisation de la bibliothèque'; - - @override - String get notifLibraryScanStopped => - 'L\'analyse a été interrompue avant d\'être terminée.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Télécharger SpotiFLAC v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total Mo • $percentage%'; - } - - @override - String get notifUpdateReady => 'Prêt pour la mise à jour'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC v$version a été téléchargé. Appuyez pour l\'installer.'; - } - - @override - String get notifUpdateFailed => 'Échec de la mise à jour'; - - @override - String get notifUpdateFailedBody => - 'Impossible de télécharger la mise à jour. Veuillez réessayer plus tard.'; - - @override - String get searchTracks => 'Titres'; - - @override - String get homeSearchHintDefault => - 'Collez une URL valide ou effectuez une recherche...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Rechercher avec $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Importer un fichier CSV'; - - @override - String get homeChangeSearchProviderTooltip => - 'Changer de moteur de recherche'; - - @override - String get actionPaste => 'Coller'; - - @override - String get tutorialSearchHint => 'Collez ou effectuez une recherche...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Téléchargement terminé'; - - @override - String get tutorialDownloadInProgressSemantics => 'Téléchargement en cours'; - - @override - String get tutorialStartDownloadSemantics => 'Lancer le téléchargement'; - - @override - String get optionsEmbedMetadata => 'Intégrer des métadonnées'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Ajouter des métadonnées, des pochettes et des paroles intégrées aux fichiers'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Désactivé (avancé) : ignorer l\'intégration de toutes les métadonnées'; - - @override - String get trackCoverNoEmbeddedArt => - 'Aucune pochette d\'album n\'a été trouvée'; - - @override - String get trackCoverReplace => 'Remplacer la pochette'; - - @override - String get trackCoverPick => 'Choisir une pochette'; - - @override - String get trackCoverClearSelected => 'Supprimer la pochette sélectionnée'; - - @override - String get trackCoverCurrent => 'Pochette actuelle'; - - @override - String get trackCoverSelected => 'Pochette choisie'; - - @override - String get trackCoverReplaceNotice => - 'La pochette sélectionnée remplacera la pochette actuellement intégrée lorsque vous appuierez sur « Enregistrer ».'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Arrêter'; - - @override - String get queueFinalizingDownload => 'Téléchargement en cours'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Fichier téléchargé manquant'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Téléchargement terminé'; - - @override - String get queueRateLimitTitle => 'Débit limité'; - - @override - String get queueRateLimitMessage => - 'Ce titre est peut-être encore disponible. Patientez quelques minutes, réduisez le nombre de téléchargements simultanés, puis réessayez.'; - - @override - String appearanceSelectAccentColor(String hex) { - return 'Sélectionnez une couleur d\'accentuation $hex'; - } - - @override - String get logAutoScrollOn => 'Défilement automatique activé'; - - @override - String get logAutoScrollOff => 'Défilement automatique désactivé'; - - @override - String get logCopyLogs => 'Copier les journaux'; - - @override - String get logClearSearch => 'Effacer la recherche'; - - @override - String get logIssueIspBlockingLabel => 'BLOCAGE PAR LE FAI DÉTECTÉ'; - - @override - String get logIssueIspBlockingDescription => - 'Il se peut que votre fournisseur d\'accès Internet bloque l\'accès aux services de téléchargement'; - - @override - String get 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'; - - @override - String get logIssueRateLimitedLabel => 'NOMBRE LIMITÉ'; - - @override - String get logIssueRateLimitedDescription => - 'Trop de requêtes adressées au service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Attendez quelques minutes avant de réessayer'; - - @override - String get logIssueNetworkErrorLabel => 'ERREUR DE RÉSEAU'; - - @override - String get logIssueNetworkErrorDescription => - 'Problèmes de connexion détectés'; - - @override - String get logIssueNetworkErrorSuggestion => - 'Vérifiez votre connexion Internet'; - - @override - String get logIssueTrackNotFoundLabel => 'PISTE INTROUVABLE'; - - @override - String get logIssueTrackNotFoundDescription => - 'Certains titres n\'ont pas pu être trouvés sur les plateformes de téléchargement'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'Il se peut que ce morceau ne soit pas disponible en qualité sans perte'; - - @override - String get clickableLookingUpArtist => 'Recherche d\'artiste...'; - - @override - String clickableInformationUnavailable(String type) { - return 'Informations sur $type non disponibles'; - } - - @override - String get extensionDetailsTags => 'Balises'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Fonctions utilitaires'; - - @override - String get actionDismiss => 'Ignorer'; - - @override - String get setupChangeFolderTooltip => 'Changer de dossier'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Écouter le morceau $trackName de $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Ouvrir $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'éléments', - one: 'item', - ); - return 'Ouvrir $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Ouvrir l\'album $albumName de $artistName, $trackCount titres'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName de $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Sélectionnez l\'album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Ouvrir l\'album $albumName'; - } - - @override - String get settingsFiles => 'Fichiers & Dossiers'; - - @override - String get settingsFilesSubtitle => - 'Emplacement de téléchargement, nom de fichier, structure des dossiers'; - - @override - String get settingsMetadata => 'Métadonnées'; - - @override - String get settingsMetadataSubtitle => - 'Pochettes, balises, ReplayGain, fournisseurs'; - - @override - String get settingsLyrics => 'Paroles'; - - @override - String get settingsLyricsSubtitle => - 'Intégration, mode, fournisseurs, options linguistiques'; - - @override - String get settingsApp => 'Application'; - - @override - String get settingsAppSubtitle => - 'Mises à jour, données, dépôt d\'extension, débogage'; - - @override - String get sectionMetadataProviders => 'Fournisseurs'; - - @override - String get sectionDuplicates => 'Doublons'; - - @override - String get sectionLyricsProviderOptions => 'Options du fournisseur'; - - @override - String get metadataProvidersTitle => - 'Priorité des fournisseurs de métadonnées'; - - @override - String get metadataProvidersSubtitle => - 'Faites glisser pour définir l\'ordre des sources de recherche et de métadonnées'; - - @override - String get downloadDeduplication => 'Éviter les téléchargements en double'; - - @override - String get downloadDeduplicationEnabled => - 'Les morceaux déjà téléchargés seront ignorés'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Les fichiers existants correspondant à la qualité sélectionnée seront ignorés'; - - @override - String get downloadDeduplicationDisabled => - 'Tous les morceaux seront téléchargés, quel que soit l\'historique'; - - @override - String get downloadQualityVariants => - 'Autoriser différentes versions de qualité'; - - @override - String get downloadQualityVariantsDescription => - 'Conserver chaque version de qualité ; ajouter la qualité mesurée au nom du fichier uniquement si le nom est déjà utilisé'; - - @override - String get trackOptionDownloadQualityVariant => - 'Télécharger une autre version de qualité'; - - @override - String get downloadFallbackExtensions => 'Extensions de secours'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choisissez les extensions pouvant servir de solution de secours'; - - @override - String get editMetadataFieldDateHint => 'AAAA-MM-JJ ou AAAA'; - - @override - String get editMetadataFieldTrackTotal => 'Total des pistes'; - - @override - String get editMetadataFieldDiscTotal => 'Total des disques'; - - @override - String get editMetadataFieldComposer => 'Compositeur'; - - @override - String get editMetadataFieldComment => 'Commentaire'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Avancé'; - - @override - String get libraryFilterMetadataMissingTrackNumber => - 'Numéro de piste manquant'; - - @override - String get libraryFilterMetadataMissingDiscNumber => - 'Numéro de disque manquant'; - - @override - String get libraryFilterMetadataMissingArtist => 'Artiste manquant'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Format ISRC incorrect'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Label manquant'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Supprimer $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 supprimées'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Ajout de $count $_temp0 à $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Ajout de $count $_temp0 à $playlistName ($alreadyCount titres déjà présents dans la playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'éléments', - one: 'élément', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Les métadonnées ont été réenrichies avec succès ($successCount/$total) - Échec : $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - return 'Supprimer $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Téléchargement - $speed Mo/s'; - } - - @override - String get queueDownloadStarting => 'C\'est parti...'; - - @override - String get queueCheckingDownloadSession => - 'Vérification de la session de téléchargement...'; - - @override - String get queueResolvingDownloadMetadata => - 'Récupération des métadonnées du morceau...'; - - @override - String get queueResolvingDownloadStream => 'Préparation du flux audio...'; - - @override - String get queueWaitingForVerification => 'En attente de vérification...'; - - @override - String get queueResumingAfterVerification => 'Reprise après vérification...'; - - @override - String get a11ySelectTrack => 'Sélectionner une piste'; - - @override - String get a11yDeselectTrack => 'Désélectionner la piste'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Écouter $trackName de $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Nécessite la version v$version+'; - } - - @override - String get actionGo => 'Aller'; - - @override - String get logIssueSummary => 'Résumé du problème'; - - @override - String logTotalErrors(int count) { - return 'Nombre total d\'erreurs : $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Concerne : $domains'; - } - - @override - String get libraryScanCancelled => 'Analyse annulée'; - - @override - String get libraryScanCancelledSubtitle => - 'Vous pouvez relancer l\'analyse dès que vous êtes prêt.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count dans l\'historique des téléchargements (exclu de la liste)'; - } - - @override - String get downloadNativeWorker => 'Tâche de téléchargement native'; - - @override - String get downloadNativeWorkerSubtitle => - 'Service Android en arrière-plan pour les téléchargements d\'extensions'; - - @override - String get extensionServiceStatus => 'État du service'; - - @override - String get extensionServiceHealth => 'Santé du service'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'vérifications', - one: 'vérification', - ); - return '$count $_temp0 configurées'; - } - - @override - String get extensionOauthConnectHint => - 'Appuyez sur « Se connecter à Spotify » pour remplir ce champ.'; - - @override - String extensionLastChecked(String time) { - return 'Dernière vérification à $time'; - } - - @override - String get extensionRefreshStatus => 'Actualiser l\'état'; - - @override - String get extensionCustomUrlHandling => 'Gestion des URL personnalisées'; - - @override - String get extensionCustomUrlHandlingSubtitle => - 'Cette extension prend en charge les liens provenant de ces sites'; - - @override - String get extensionCustomUrlHandlingShareHint => - 'Partagez des liens provenant de ces sites vers SpotiFLAC Mobile et cette extension s\'en chargera.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'paramètres', - one: 'paramètre', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'En ligne'; - - @override - String get extensionHealthDegraded => 'Dégradé'; - - @override - String get extensionHealthOffline => 'Hors ligne'; - - @override - String get extensionHealthNotConfigured => 'Non configuré'; - - @override - String get extensionHealthUnknown => 'Inconnu'; - - @override - String get extensionHealthRequired => 'requis'; - - @override - String get extensionSettingNotSet => 'Non défini'; - - @override - String get extensionActionFailed => 'L\'action a échoué'; - - @override - String get extensionEnterValue => 'Saisir une valeur'; - - @override - String get extensionHealthServiceOnline => 'Service en ligne'; - - @override - String get extensionHealthServiceDegraded => 'Service perturbé'; - - @override - String get extensionHealthServiceOffline => 'Service hors ligne'; - - @override - String get extensionHealthServiceUnknown => 'État du service inconnu'; - - @override - String get audioAnalysisStereo => 'Stéréo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Ouvrir dans $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Intégré'; - - @override - String get unknownAlbum => 'Album inconnu'; - - @override - String get unknownArtist => 'Artiste inconnu'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Stockage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Dossier non valide sélectionné'; - - @override - String get storeAnyVersion => 'N\'importe lequel'; - - @override - String get storeCategoryMetadata => 'Métadonnées'; - - @override - String get storeCategoryDownload => 'Télécharger'; - - @override - String get storeCategoryUtility => 'Utilitaire'; - - @override - String get storeCategoryLyrics => 'Paroles'; - - @override - String get storeCategoryIntegration => 'Intégration'; - - @override - String get artistReleases => 'Sorties'; - - @override - String get editMetadataSelectNone => 'Aucun'; - - @override - String queueRetryAllFailed(int count) { - return '$count tentatives ont échoué'; - } - - @override - String get settingsSaveDownloadHistory => - 'Enregistrer l\'historique des téléchargements'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Conserver les téléchargements terminés dans l\'historique et la bibliothèque'; - - @override - String get dialogDisableHistoryTitle => - 'Désactiver l\'historique des téléchargements ?'; - - @override - String get dialogDisableHistoryMessage => - 'L\'historique actuel sera effacé. Les fichiers téléchargés ne seront pas supprimés.'; - - @override - String get dialogDisableAndClear => 'Désactiver et effacer'; - - @override - String get openInOtherServices => 'Ouvrir dans d\'autres services'; - - @override - String get shareSheetNoExtensions => 'Aucun autre service compatible'; - - @override - String get shareSheetNotFound => 'Introuvable'; - - @override - String get shareSheetCopyLink => 'Copier le lien'; - - @override - String shareSheetLinkCopied(Object service) { - return 'Lien $service copié'; - } - - @override - String get libraryPlayback => 'Lecture'; - - @override - String get libraryExternalPlayer => 'Lecteur externe'; - - @override - String get 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'; - - @override - String get libraryBuiltInPreviewPlayer => - 'Lecteur de prévisualisation intégré'; - - @override - String get libraryBuiltInPreviewPlayerSubtitle => - 'Uniquement pour des écoutes rapides et locales dans SpotiFLAC Mobile ; non recommandé pour une écoute régulière'; - - @override - String get 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.'; - - @override - String get nowPlayingTitle => 'En cours de lecture'; - - @override - String get nowPlayingNothingPlaying => 'Il n\'y a rien à l\'écran'; - - @override - String get nowPlayingMinimize => 'Réduire'; - - @override - String get nowPlayingUpNext => 'À suivre'; - - @override - String get nowPlayingPreviousTrack => 'Piste précédente'; - - @override - String get nowPlayingNextTrack => 'Piste suivante'; - - @override - String get nowPlayingDetails => 'Détails'; - - @override - String get nowPlayingOpenInExternalPlayer => 'Ouvrir dans un lecteur externe'; - - @override - String get nowPlayingTabPlayer => 'Lecteur'; - - @override - String get nowPlayingTabLyrics => 'Paroles'; - - @override - String get nowPlayingNoLyrics => 'Ce fichier ne contient pas de paroles'; - - @override - String get nowPlayingLibraryEmpty => 'Votre bibliothèque est vide'; - - @override - String nowPlayingShuffleLibraryFailed(String error) { - return 'Impossible de lire aléatoirement la bibliothèque : $error'; - } - - @override - String get nowPlayingShuffleOn => 'Lecture aléatoire activée'; - - @override - String get nowPlayingPlayInOrder => 'Lire dans l\'ordre'; - - @override - String get nowPlayingShuffleLibrary => 'Lecture aléatoire de la bibliothèque'; - - @override - String get nowPlayingQueueEmpty => 'La file d\'attente est vide'; - - @override - String get nowPlayingNoMetadata => 'Aucune métadonnée disponible'; - - @override - String get announcementUnableToOpenLink => - 'Impossible d\'ouvrir le lien. Veuillez réessayer.'; - - @override - String trackConvertLosslessOutputWithCap(String quality) { - return 'Sortie sans perte avec une limite de $quality'; - } - - @override - String trackConvertConfirmMessageLosslessCapped( - String sourceFormat, - String targetFormat, - String quality, - ) { - 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 - String selectionBatchConvertConfirmMessageLosslessCapped( - int count, - String format, - String quality, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'titres', - one: 'titre', - ); - 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 - 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 => - 'Proxy de paroles pour Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou et Genius'; - - @override - String get snackbarPlayingNext => 'Prochainement'; - - @override - String get snackbarAddedToQueueGeneric => 'Ajouté à la file d\'attente'; - - @override - String selectionDeletePlaylistsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Supprimer $count $_temp0'; - } - - @override - String get actionShuffle => 'Lecture aléatoire'; - - @override - String get downloadPrimaryArtistOnlyOn => 'Primaire uniquement : Activé'; - - @override - String get downloadPrimaryArtistOnlyOff => 'Primaire uniquement : Désactivé'; - - @override - String get downloadAlbumArtistMetadataPrimaryOnly => - 'Métadonnées « Album » et « Artiste » : uniquement les données principales'; - - @override - String get downloadAlbumArtistMetadataFull => - 'Métadonnées de l\'artiste de l\'album : complètes'; - - @override - String get trackConvertOriginal => 'Original'; - - @override - String get trackConvertOriginalQuality => 'Qualité d\'origine'; - - @override - String get trackConvertLosslessSuffix => 'Sans perte'; - - @override - String get trackConvertDithering => 'Hésitation'; - - @override - String get trackConvertResampler => 'Rééchantillonneur'; - - @override - String get trackConvertDitherNone => 'Aucun'; - - @override - String get trackConvertDitherTriangular => 'TPDF'; - - @override - String get trackConvertDitherTriangularHp => 'HP triangulaire'; - - @override - String get trackConvertResamplerSwr => 'SWR'; - - @override - String get trackConvertResamplerSoxr => 'SoXr'; - - @override - String get updateSeeReleaseNotes => - 'Pour plus de détails, consultez les notes de mise à jour.'; - - @override - String get unknownTitle => 'Titre inconnu'; - - @override - String get trackPlayNext => 'Suivant'; - - @override - String get trackAddToQueue => 'Ajouter à la file d\'attente'; - - @override - String snackbarExtensionInstalledEnable(String extensionName) { - return '$extensionName est installée. Activez-la dans Paramètres > Extensions'; - } - - @override - String snackbarExtensionUpdatedVersion(String extensionName, String version) { - return '$extensionName a été mis à jour vers la version $version'; - } - - @override - String snackbarFailedToInstallNamed(String extensionName) { - return 'Échec de l\'installation de $extensionName'; - } - - @override - String snackbarFailedToUpdateNamed(String extensionName) { - return 'Échec de la mise à jour de $extensionName'; - } - - @override - String get releaseTypeEp => 'EP'; - - @override - String get releaseTypeSingle => 'Single'; - - @override - String get trackCoverOnline => 'Pochette en ligne'; - - @override - String get regionCountryUS => 'États-Unis'; - - @override - String get regionCountryGB => 'Royaume-Uni'; - - @override - String get regionCountryFR => 'France'; - - @override - String get regionCountryDE => 'Allemagne'; - - @override - String get regionCountryJP => 'Japon'; - - @override - String get regionCountryKR => 'Corée du Sud'; - - @override - String get regionCountryIN => 'Inde'; - - @override - String get regionCountryID => 'Indonésie'; - - @override - String get regionCountryBR => 'Brésil'; - - @override - String get regionCountryMX => 'Mexique'; - - @override - String get regionCountryAU => 'Australie'; - - @override - String get regionCountryCA => 'Canada'; - - @override - String get regionCountryXK => 'Kosovo'; - - @override - String get extensionVerificationBrowserTitle => 'Navigateur de vérification'; - - @override - String get extensionVerificationBrowserSubtitleExternal => - 'Ouvrez d\'abord les défis dans le navigateur par défaut'; - - @override - String get extensionVerificationBrowserSubtitleInApp => - 'Ouvrez d\'abord les défis dans le navigateur intégré à l\'application'; - - @override - String get extensionVerificationBrowserExternal => 'Externe'; - - @override - String get extensionVerificationBrowserInApp => 'Dans l\'application'; - - @override - String get extensionVerificationHelpTitleManual => - 'Lancer la vérification manuellement'; - - @override - String get extensionVerificationHelpTitleWaiting => - 'La vérification est toujours en attente'; - - @override - String get extensionVerificationHelpMessageManual => - 'SpotiFLAC Mobile n\'a pas pu ouvrir automatiquement le navigateur. Ouvrez ce lien dans votre navigateur ou copiez-le manuellement.'; - - @override - String get 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.'; - - @override - String get extensionVerificationClose => 'Fermer'; - - @override - String get extensionVerificationCopyLink => 'Copier le lien'; - - @override - String get extensionVerificationLinkCopied => 'Lien de vérification copié'; - - @override - String get extensionVerificationOpenBrowser => 'Ouvrir le navigateur'; - - @override - String get settingsSearchHint => 'Rechercher dans les paramètres'; - - @override - String settingsSearchNoResults(String query) { - return 'Aucun paramètre ne correspond à « $query »'; - } - - @override - String get settingsGroupInterface => 'Extensions et apparence'; - - @override - String get settingsGroupContent => 'Contenu et métadonnées'; - - @override - String get settingsGroupDownloads => 'Téléchargements et fichiers'; - - @override - String get settingsGroupSystem => 'Système'; - - @override - String get settingsGroupHelp => 'À propos et assistance'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/l10n/app_localizations_id.dart b/lib/l10n/app_localizations_id.dart deleted file mode 100644 index 69823bf1..00000000 --- a/lib/l10n/app_localizations_id.dart +++ /dev/null @@ -1,5013 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Indonesian (`id`). -class AppLocalizationsId extends AppLocalizations { - AppLocalizationsId([String locale = 'id']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Beranda'; - - @override - String get navLibrary => 'Pustaka'; - - @override - String get navSettings => 'Pengaturan'; - - @override - String get navStore => 'Repositori'; - - @override - String get homeTitle => 'Beranda'; - - @override - String get homeSubtitle => - 'Tempel URL yang didukung atau cari berdasarkan nama'; - - @override - String get homeEmptyTitle => 'Belum ada penyedia pencarian'; - - @override - String get homeEmptySubtitle => 'Instal ekstensi untuk melanjutkan.'; - - @override - String get homeSupports => - 'Mendukung: URL Lagu, Album, Daftar Putar, dan Artis'; - - @override - String get homeRecent => 'Terbaru'; - - @override - String get historyFilterAll => 'Semua'; - - @override - String get historyFilterAlbums => 'Album'; - - @override - String get historyFilterSingles => 'Single'; - - @override - String get historySearchHint => 'Cari riwayat...'; - - @override - String get settingsTitle => 'Pengaturan'; - - @override - String get settingsDownload => 'Unduhan'; - - @override - String get settingsAppearance => 'Tampilan'; - - @override - String get settingsExtensions => 'Ekstensi'; - - @override - String get settingsAbout => 'Tentang'; - - @override - String get downloadTitle => 'Unduhan'; - - @override - String get downloadAskQualitySubtitle => - 'Tampilkan pemilih kualitas untuk setiap unduhan'; - - @override - String get downloadFilenameFormat => 'Format Nama File'; - - @override - String get downloadSingleFilenameFormat => 'Format Nama Berkas Tunggal'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Pola nama file untuk single dan EP. Menggunakan tag yang sama dengan format album.'; - - @override - String get downloadFolderOrganization => 'Organisasi Folder'; - - @override - String get appearanceTitle => 'Tampilan'; - - @override - String get appearanceThemeSystem => 'Sistem'; - - @override - String get appearanceThemeLight => 'Terang'; - - @override - String get appearanceThemeDark => 'Gelap'; - - @override - String get appearanceDynamicColor => 'Warna Dinamis'; - - @override - String get appearanceDynamicColorSubtitle => - 'Gunakan warna dari wallpaper Anda'; - - @override - String get appearanceHistoryView => 'Gaya Tampilan Histori'; - - @override - String get appearanceHistoryViewList => 'Daftar'; - - @override - String get appearanceHistoryViewGrid => 'Kisi'; - - @override - String get optionsPrimaryProvider => 'Provider Utama'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Layanan yang digunakan untuk mencari berdasarkan nama lagu atau album'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Menggunakan ekstensi: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Tab Pencarian Default'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Pilih tab mana yang terbuka terlebih dahulu untuk hasil pencarian baru.'; - - @override - String get optionsAutoFallback => 'Layanan Cadangan'; - - @override - String get optionsAutoFallbackSubtitle => - 'Coba layanan lain jika unduhan gagal'; - - @override - String get optionsEmbedLyrics => 'Sematkan Lirik'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Simpan lirik yang disinkronkan bersama dengan lagu yang Anda unduh'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Pindai kenyaringan dan sematkan tag ReplayGain (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Dinonaktifkan: tidak ada tag normalisasi kenyaringan'; - - @override - String get trackReplayGain => 'Pindai ulang ReplayGain'; - - @override - String get trackReplayGainScanning => 'Menganalisis kenyaringan...'; - - @override - String get trackReplayGainSuccess => 'Tag ReplayGain ditambahkan'; - - @override - String get trackReplayGainFailed => 'Gagal menambahkan tag ReplayGain'; - - @override - String selectionReplayGainCount(int count) { - return 'ReplayGain ($count)'; - } - - @override - String get replayGainBatchConfirmTitle => 'Tambah ReplayGain'; - - @override - String replayGainBatchConfirmMessage(int count) { - return 'Analisis kenyaringan dan tulis tag ReplayGain ke $count trek?'; - } - - @override - String get replayGainBatchAnalyzing => 'Menganalisis ReplayGain...'; - - @override - String replayGainBatchSuccess(int success, int total) { - return 'ReplayGain ditambahkan ke $success dari $total trek'; - } - - @override - String get optionsArtistTagMode => 'Mode Tag Artis'; - - @override - String get optionsArtistTagModeDescription => - 'Pilih bagaimana beberapa artis dicantumkan dalam tag yang disematkan.'; - - @override - String get optionsArtistTagModeJoined => 'Nilai gabungan tunggal'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Tuliskan satu nilai ARTIS seperti \"Artis A, Artis B\" untuk kompatibilitas pemain maksimal.'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Tag terpisah untuk FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Tulis satu tag artis per artis untuk FLAC dan Opus; MP3 dan M4A tetap tergabung.'; - - @override - String get optionsExtensionStore => 'Repositori Ekstensi'; - - @override - String get optionsExtensionStoreSubtitle => 'Tampilkan tab Repo di navigasi'; - - @override - String get optionsCheckUpdates => 'Periksa Pembaruan'; - - @override - String get optionsCheckUpdatesSubtitle => 'Beritahu saat versi baru tersedia'; - - @override - String get optionsUpdateChannel => 'Saluran Pembaruan'; - - @override - String get optionsUpdateChannelStable => 'Hanya rilis stabil'; - - @override - String get optionsUpdateChannelPreview => 'Dapatkan rilis preview'; - - @override - String get optionsUpdateChannelWarning => - 'Preview mungkin mengandung bug atau fitur belum lengkap'; - - @override - String get optionsClearHistory => 'Hapus Riwayat Unduhan'; - - @override - String get optionsClearHistorySubtitle => 'Hapus semua lagu dari riwayat'; - - @override - String get optionsDetailedLogging => 'Log Detail'; - - @override - String get optionsDetailedLoggingOn => 'Log detail sedang direkam'; - - @override - String get optionsDetailedLoggingOff => 'Aktifkan untuk laporan bug'; - - @override - String get extensionsTitle => 'Ekstensi'; - - @override - String get extensionsDisabled => 'Nonaktif'; - - @override - String extensionsVersion(String version) { - return 'Versi $version'; - } - - @override - String get extensionsUninstall => 'Copot'; - - @override - String get storeTitle => 'Repositori Ekstensi'; - - @override - String get storeSearch => 'Cari ekstensi...'; - - @override - String get storeInstall => 'Pasang'; - - @override - String get storeInstalled => 'Terpasang'; - - @override - String get storeUpdate => 'Perbarui'; - - @override - String get aboutTitle => 'Tentang'; - - @override - String get aboutContributors => 'Kontributor'; - - @override - String get aboutMobileDeveloper => 'Pengembang versi mobile'; - - @override - String get aboutOriginalCreator => 'Pencipta SpotiFLAC asli'; - - @override - String get aboutLogoArtist => - 'Seniman berbakat yang membuat logo aplikasi kita yang indah!'; - - @override - String get aboutTranslators => 'Penerjemah'; - - @override - String get aboutSpecialThanks => 'Terima Kasih Khusus'; - - @override - String get aboutLinks => 'Tautan'; - - @override - String get aboutMobileSource => 'Kode sumber mobile'; - - @override - String get aboutPCSource => 'Kode sumber PC'; - - @override - String get aboutKeepAndroidOpen => 'Biarkan Android tetap terbuka'; - - @override - String get aboutReportIssue => 'Laporkan masalah'; - - @override - String get aboutReportIssueSubtitle => 'Laporkan masalah yang Anda temui'; - - @override - String get aboutFeatureRequest => 'Permintaan fitur'; - - @override - String get aboutFeatureRequestSubtitle => - 'Sarankan fitur baru untuk aplikasi'; - - @override - String get aboutTelegramChannel => 'Saluran Telegram'; - - @override - String get aboutTelegramChannelSubtitle => 'Pengumuman dan pembaruan'; - - @override - String get aboutTelegramChat => 'Komunitas Telegram'; - - @override - String get aboutTelegramChatSubtitle => 'Berbincang dengan pengguna lain'; - - @override - String get aboutSocial => 'Sosial'; - - @override - String get aboutApp => 'Aplikasi'; - - @override - String get aboutVersion => 'Versi'; - - @override - String get aboutBinimumDesc => - 'Pencipta QQDL & HiFi API. Proyek ini membantu membentuk dukungan unduhan lossless.'; - - @override - String get aboutSachinsenalDesc => - 'Pencipta proyek HiFi asli. Sebuah fondasi untuk integrasi sumber lossless.'; - - @override - String get aboutSjdonadoDesc => - 'Pencipta I Don\'t Have Spotify (IDHS). Penyelesai tautan cadangan yang menyelamatkan keadaan!'; - - @override - String get aboutAppDescription => - 'Cari metadata musik, kelola ekstensi, dan atur perpustakaan Anda.'; - - @override - String get artistAlbums => 'Album'; - - @override - String get artistSingles => 'Single & EP'; - - @override - String get artistCompilations => 'Kompilasi'; - - @override - String get artistPopular => 'Populer'; - - @override - String artistMonthlyListeners(String count) { - return '$count pendengar bulanan'; - } - - @override - String get trackMetadataService => 'Layanan'; - - @override - String get trackMetadataPlay => 'Putar'; - - @override - String get trackMetadataShare => 'Bagikan'; - - @override - String get trackMetadataDelete => 'Hapus'; - - @override - String get setupGrantPermission => 'Berikan Izin'; - - @override - String get setupSkip => 'Lewati untuk sekarang'; - - @override - String get setupStorageAccessRequired => 'Akses Penyimpanan Diperlukan'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11+ memerlukan izin \"Akses semua file\" untuk menyimpan file ke folder unduhan pilihan Anda.'; - - @override - String get setupOpenSettings => 'Buka Pengaturan'; - - @override - String get setupPermissionDeniedMessage => - 'Izin ditolak. Harap berikan semua izin untuk melanjutkan.'; - - @override - String setupPermissionRequired(String permissionType) { - return 'Izin $permissionType Diperlukan'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return 'Izin $permissionType diperlukan untuk pengalaman terbaik. Anda dapat mengubahnya nanti di Pengaturan.'; - } - - @override - String get setupUseDefaultFolder => 'Gunakan Folder Default?'; - - @override - String get setupNoFolderSelected => - 'Tidak ada folder dipilih. Apakah Anda ingin menggunakan folder Musik default?'; - - @override - String get setupUseDefault => 'Gunakan Default'; - - @override - String get setupDownloadLocationTitle => 'Lokasi Unduhan'; - - @override - String get setupDownloadLocationIosMessage => - 'Di iOS, unduhan disimpan ke folder Documents aplikasi. Anda dapat mengaksesnya melalui aplikasi Files.'; - - @override - String get setupAppDocumentsFolder => 'Folder Documents Aplikasi'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Direkomendasikan - dapat diakses via aplikasi Files'; - - @override - String get setupChooseFromFiles => 'Pilih dari Files'; - - @override - String get setupChooseFromFilesSubtitle => 'Pilih lokasi iCloud atau lainnya'; - - @override - String get setupIosEmptyFolderWarning => - 'Batasan iOS: Folder kosong tidak dapat dipilih. Pilih folder dengan minimal satu file.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive tidak didukung. Silakan gunakan folder Dokumen di aplikasi.'; - - @override - String get setupDownloadInFlac => - 'Unduh musik dalam kualitas lossless dan Hi-Res'; - - @override - String get setupStorageGranted => 'Izin Penyimpanan Diberikan!'; - - @override - String get setupStorageRequired => 'Izin Penyimpanan Diperlukan'; - - @override - String get setupStorageDescription => - 'SpotiFLAC membutuhkan izin penyimpanan untuk menyimpan file musik yang diunduh.'; - - @override - String get setupNotificationGranted => 'Izin Notifikasi Diberikan!'; - - @override - String get setupNotificationEnable => 'Aktifkan Notifikasi'; - - @override - String get setupFolderChoose => 'Pilih Folder Unduhan'; - - @override - String get setupFolderDescription => - 'Pilih folder tempat musik yang diunduh akan disimpan.'; - - @override - String get setupSelectFolder => 'Pilih Folder'; - - @override - String get setupEnableNotifications => 'Aktifkan Notifikasi'; - - @override - String get setupNotificationBackgroundDescription => - 'Dapatkan notifikasi tentang progres dan penyelesaian unduhan. Ini membantu Anda melacak unduhan saat aplikasi di latar belakang.'; - - @override - String get setupSkipForNow => 'Lewati untuk sekarang'; - - @override - String get setupNext => 'Lanjut'; - - @override - String get setupGetStarted => 'Mulai'; - - @override - String get setupAllowAccessToManageFiles => - 'Harap aktifkan \"Izinkan akses untuk mengelola semua file\" di layar berikutnya.'; - - @override - String get setupLanguageTitle => 'Pilih Bahasa'; - - @override - String get setupLanguageDescription => - 'Pilih bahasa pilihan Anda untuk aplikasi ini. Anda dapat mengubahnya nanti di Pengaturan.'; - - @override - String get setupLanguageSystemDefault => 'Bawaan Sistem'; - - @override - String get dialogCancel => 'Batal'; - - @override - String get dialogSave => 'Simpan'; - - @override - String get dialogDelete => 'Hapus'; - - @override - String get dialogRetry => 'Coba Lagi'; - - @override - String get dialogClear => 'Hapus'; - - @override - String get dialogDone => 'Selesai'; - - @override - String get dialogImport => 'Impor'; - - @override - String get dialogDownload => 'Unduh'; - - @override - String get previewPlay => 'Putar pratinjau'; - - @override - String get previewStop => 'Hentikan pratinjau'; - - @override - String get previewUnavailable => 'Pratinjau tidak tersedia'; - - @override - String get dialogDiscard => 'Buang'; - - @override - String get dialogRemove => 'Hapus'; - - @override - String get dialogUninstall => 'Copot'; - - @override - String get dialogDiscardChanges => 'Buang Perubahan?'; - - @override - String get dialogUnsavedChanges => - 'Anda memiliki perubahan yang belum disimpan. Apakah Anda ingin membuangnya?'; - - @override - String get dialogClearAll => 'Hapus Semua'; - - @override - String get dialogRemoveExtension => 'Hapus Ekstensi'; - - @override - String get dialogRemoveExtensionMessage => - 'Apakah Anda yakin ingin menghapus ekstensi ini? Tindakan ini tidak dapat dibatalkan.'; - - @override - String get dialogUninstallExtension => 'Copot Ekstensi?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Apakah Anda yakin ingin menghapus $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Hapus Riwayat'; - - @override - String get dialogClearHistoryMessage => - 'Apakah Anda yakin ingin menghapus semua riwayat unduhan? Ini tidak dapat dibatalkan.'; - - @override - String get dialogDeleteSelectedTitle => 'Hapus yang Dipilih'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'lagu', - one: 'lagu', - ); - return 'Hapus $count $_temp0 dari riwayat?\n\nIni juga akan menghapus file dari penyimpanan.'; - } - - @override - String get dialogImportPlaylistTitle => 'Impor Playlist'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Ditemukan $count lagu di CSV. Tambahkan ke antrian unduhan?'; - } - - @override - String csvImportTracks(int count) { - return '$count trek dari CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return 'Menambahkan \"$trackName\" ke antrian'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return 'Menambahkan $count lagu ke antrian'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" sudah diunduh'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" sudah ada di perpustakaan Anda'; - } - - @override - String get snackbarHistoryCleared => 'Riwayat dihapus'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'lagu', - one: 'lagu', - ); - return 'Menghapus $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Tidak dapat membuka file: $error'; - } - - @override - String get snackbarViewQueue => 'Lihat Antrian'; - - @override - String snackbarUrlCopied(String platform) { - return 'URL $platform disalin ke clipboard'; - } - - @override - String get snackbarFileNotFound => 'File tidak ditemukan'; - - @override - String get snackbarSelectExtFile => 'Harap pilih file .spotiflac-ext'; - - @override - String get snackbarProviderPrioritySaved => 'Prioritas provider disimpan'; - - @override - String get snackbarMetadataProviderSaved => - 'Prioritas provider metadata disimpan'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName terpasang.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName diperbarui.'; - } - - @override - String get snackbarFailedToInstall => 'Gagal memasang ekstensi'; - - @override - String get snackbarFailedToUpdate => 'Gagal memperbarui ekstensi'; - - @override - String get errorRateLimited => 'Dibatasi'; - - @override - String get errorRateLimitedMessage => - 'Terlalu banyak permintaan. Harap tunggu sebentar sebelum mencari lagi.'; - - @override - String get errorNoTracksFound => 'Tidak ada lagu ditemukan'; - - @override - String get searchEmptyResultSubtitle => 'Coba kata kunci lain'; - - @override - String get errorUrlNotRecognized => 'Tautan tidak dikenali'; - - @override - String get errorUrlNotRecognizedMessage => - 'Tautan ini tidak didukung. Pastikan URL sudah benar dan ekstensi yang kompatibel telah terpasang.'; - - @override - String get errorUrlFetchFailed => - 'Konten dari tautan ini gagal dimuat. Silakan coba lagi.'; - - @override - String errorMissingExtensionSource(String item) { - return 'Tidak dapat memuat $item: sumber ekstensi tidak ada'; - } - - @override - String get actionPause => 'Jeda'; - - @override - String get actionResume => 'Lanjutkan'; - - @override - String get actionCancel => 'Batal'; - - @override - String get actionSelectAll => 'Pilih Semua'; - - @override - String get actionDeselect => 'Batal Pilih'; - - @override - String selectionSelected(int count) { - return '$count dipilih'; - } - - @override - String get selectionAllSelected => 'Semua lagu dipilih'; - - @override - String get selectionSelectToDelete => 'Pilih lagu untuk dihapus'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Mengambil metadata... $current/$total'; - } - - @override - String get progressReadingCsv => 'Membaca CSV...'; - - @override - String get searchSongs => 'Lagu'; - - @override - String get searchArtists => 'Artis'; - - @override - String get searchAlbums => 'Album'; - - @override - String get searchPlaylists => 'Playlist'; - - @override - String get searchSortTitle => 'Urutkan hasil'; - - @override - String get searchSortDefault => 'Default'; - - @override - String get searchSortTitleAZ => 'Judul (A-Z)'; - - @override - String get searchSortTitleZA => 'Judul (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artis (A-Z)'; - - @override - String get searchSortArtistZA => 'Artis (Z-A)'; - - @override - String get searchSortDurationShort => 'Durasi (Terpendek)'; - - @override - String get searchSortDurationLong => 'Durasi (Terpanjang)'; - - @override - String get searchSortDateOldest => 'Tanggal rilis (Terlama)'; - - @override - String get searchSortDateNewest => 'Tanggal rilis (Terbaru)'; - - @override - String get tooltipPlay => 'Putar'; - - @override - String get filenameFormat => 'Format Nama File'; - - @override - String get filenameShowAdvancedTags => 'Tampilkan tag lanjutan'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Aktifkan tag yang diformat untuk padding trek dan pola tanggal'; - - @override - String get folderOrganizationNone => 'Tidak ada'; - - @override - String get folderOrganizationByPlaylist => 'Berdasarkan Daftar Putar'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Setiap daftar putar memerlukan folder terpisah'; - - @override - String get folderOrganizationByArtist => 'Berdasarkan Artis'; - - @override - String get folderOrganizationByAlbum => 'Berdasarkan Album'; - - @override - String get folderOrganizationByArtistAlbum => 'Berdasarkan Artis & Album'; - - @override - String get folderOrganizationDescription => - 'Atur file yang diunduh ke dalam folder'; - - @override - String get folderOrganizationNoneSubtitle => 'Semua file di folder unduhan'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Folder terpisah untuk setiap artis'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Folder terpisah untuk setiap album'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Folder bersarang untuk artis dan album'; - - @override - String get updateAvailable => 'Pembaruan Tersedia'; - - @override - String get updateLater => 'Nanti'; - - @override - String get updateStartingDownload => 'Memulai unduhan...'; - - @override - String get updateDownloadFailed => 'Unduhan gagal'; - - @override - String get updateFailedMessage => 'Gagal mengunduh pembaruan'; - - @override - String get updateNewVersionReady => 'Versi baru sudah siap'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Saat ini'; - - @override - String get updateNew => 'Baru'; - - @override - String get updateDownloading => 'Mengunduh...'; - - @override - String get updateWhatsNew => 'Apa yang baru'; - - @override - String get updateDownloadInstall => 'Unduh & Pasang'; - - @override - String get updateDontRemind => 'Jangan ingatkan'; - - @override - String get providerPriorityTitle => 'Prioritas Provider'; - - @override - String get providerPriorityDescription => - 'Seret untuk mengatur ulang urutan provider unduhan. Aplikasi akan mencoba provider dari atas ke bawah saat mengunduh lagu.'; - - @override - String get providerPriorityInfo => - 'Jika lagu tidak tersedia di provider pertama, aplikasi akan otomatis mencoba yang berikutnya.'; - - @override - String get providerPriorityFallbackExtensionsDescription => - 'Pilih ekstensi unduhan terpasang mana yang dapat digunakan selama fallback otomatis.'; - - @override - String get providerPriorityFallbackExtensionsHint => - 'Hanya ekstensi yang diaktifkan dengan kemampuan penyedia unduhan yang tercantum di sini.'; - - @override - String get providerExtension => 'Ekstensi'; - - @override - String get metadataProviderPriorityTitle => 'Prioritas Metadata'; - - @override - String get metadataProviderPriorityDescription => - 'Seret untuk mengatur ulang urutan provider metadata. Aplikasi akan mencoba provider dari atas ke bawah saat mencari lagu dan mengambil metadata.'; - - @override - String get metadataProviderPriorityInfo => - 'Deezer tidak memiliki batas rate dan direkomendasikan sebagai utama. Spotify mungkin membatasi rate setelah banyak permintaan.'; - - @override - String get logTitle => 'Log'; - - @override - String get logCopied => 'Log disalin ke clipboard'; - - @override - String get logSearchHint => 'Cari log...'; - - @override - String get logFilterLevel => 'Level'; - - @override - String get logFilterSection => 'Filter'; - - @override - String get logShareLogs => 'Bagikan log'; - - @override - String get logClearLogs => 'Hapus log'; - - @override - String get logClearLogsTitle => 'Hapus Log'; - - @override - String get logClearLogsMessage => - 'Apakah Anda yakin ingin menghapus semua log?'; - - @override - String get logFilterBySeverity => 'Filter log berdasarkan tingkat keparahan'; - - @override - String get logNoLogsYet => 'Belum ada log'; - - @override - String get logNoLogsYetSubtitle => - 'Log akan muncul di sini saat Anda menggunakan aplikasi'; - - @override - String logEntriesFiltered(int count) { - return 'Entri ($count difilter)'; - } - - @override - String logEntries(int count) { - return 'Entri ($count)'; - } - - @override - String get channelStable => 'Stabil'; - - @override - String get channelPreview => 'Pratinjau'; - - @override - String get sectionSearchSource => 'Sumber Pencarian'; - - @override - String get sectionDownload => 'Unduhan'; - - @override - String get sectionPerformance => 'Performa'; - - @override - String get sectionApp => 'Aplikasi'; - - @override - String get sectionData => 'Data'; - - @override - String get sectionDebug => 'Debug'; - - @override - String get sectionService => 'Layanan'; - - @override - String get sectionAudioQuality => 'Kualitas Audio'; - - @override - String get sectionFileSettings => 'Pengaturan File'; - - @override - String get sectionLyrics => 'Lirik'; - - @override - String get lyricsMode => 'Mode Lirik'; - - @override - String get lyricsModeDescription => - 'Pilih cara lirik disimpan bersama unduhan Anda'; - - @override - String get lyricsModeEmbed => 'Sematkan dalam file'; - - @override - String get lyricsModeEmbedSubtitle => - 'Lirik tersimpan di dalam metadata FLAC'; - - @override - String get lyricsModeExternal => 'File .lrc eksternal'; - - @override - String get lyricsModeExternalSubtitle => - 'File .lrc terpisah untuk pemutar musik seperti Samsung Music'; - - @override - String get lyricsModeBoth => 'Keduanya'; - - @override - String get lyricsModeBothSubtitle => 'Sematkan dan simpan file .lrc'; - - @override - String get sectionColor => 'Warna'; - - @override - String get sectionTheme => 'Tema'; - - @override - String get sectionLayout => 'Tata Letak'; - - @override - String get sectionLanguage => 'Bahasa'; - - @override - String get appearanceLanguage => 'Bahasa Aplikasi'; - - @override - String get settingsAppearanceSubtitle => 'Tema, warna, tampilan'; - - @override - String get settingsDownloadSubtitle => 'Layanan, kualitas, cadangan'; - - @override - String get settingsExtensionsSubtitle => 'Kelola provider unduhan'; - - @override - String get settingsLogsSubtitle => 'Lihat log aplikasi untuk debugging'; - - @override - String get loadingSharedLink => 'Memuat link yang dibagikan...'; - - @override - String get pressBackAgainToExit => 'Tekan kembali sekali lagi untuk keluar'; - - @override - String downloadAllCount(int count) { - return 'Unduh Semua ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count lagu', - one: '1 lagu', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'Salin lokasi file'; - - @override - String get trackRemoveFromDevice => 'Hapus dari perangkat'; - - @override - String get trackLoadLyrics => 'Muat Lirik'; - - @override - String get trackMetadata => 'Metadata'; - - @override - String get trackFileInfo => 'Info File'; - - @override - String get trackLyrics => 'Lirik'; - - @override - String get trackFileNotFound => 'File tidak ditemukan'; - - @override - String get trackOpenInDeezer => 'Buka di Deezer'; - - @override - String get trackOpenInSpotify => 'Buka di Spotify'; - - @override - String get trackTrackName => 'Nama lagu'; - - @override - String get trackArtist => 'Artis'; - - @override - String get trackAlbumArtist => 'Artis album'; - - @override - String get trackAlbum => 'Album'; - - @override - String get trackTrackNumber => 'Nomor lagu'; - - @override - String get trackDiscNumber => 'Nomor disc'; - - @override - String get trackDuration => 'Durasi'; - - @override - String get trackAudioQuality => 'Kualitas audio'; - - @override - String get libraryQualityLabelFileFormat => 'Format berkas'; - - @override - String get trackReleaseDate => 'Tanggal rilis'; - - @override - String get trackGenre => 'Genre'; - - @override - String get trackLabel => 'Label'; - - @override - String get trackCopyright => 'Hak cipta'; - - @override - String get trackDownloaded => 'Diunduh'; - - @override - String get trackCopyLyrics => 'Salin lirik'; - - @override - String trackLyricsSource(String source) { - return 'Sumber: $source'; - } - - @override - String get trackLyricsNotAvailable => 'Lirik tidak tersedia untuk lagu ini'; - - @override - String get trackLyricsNotInFile => 'Tidak ditemukan lirik dalam file ini'; - - @override - String get trackFetchOnlineLyrics => 'Ambil dari Online'; - - @override - String get trackLyricsTimeout => 'Permintaan habis waktu. Coba lagi nanti.'; - - @override - String get trackLyricsLoadFailed => 'Gagal memuat lirik'; - - @override - String get trackEmbedLyrics => 'Sematkan Lirik'; - - @override - String get trackLyricsEmbedded => 'Lirik berhasil disematkan'; - - @override - String get trackInstrumental => 'Lagu instrumental'; - - @override - String get trackCopiedToClipboard => 'Disalin ke clipboard'; - - @override - String get trackDeleteConfirmTitle => 'Hapus dari perangkat?'; - - @override - String get trackDeleteConfirmMessage => - 'Ini akan menghapus file unduhan secara permanen dan menghapusnya dari riwayat Anda.'; - - @override - String get dateToday => 'Hari ini'; - - @override - String get dateYesterday => 'Kemarin'; - - @override - String dateDaysAgo(int count) { - return '$count hari lalu'; - } - - @override - String dateWeeksAgo(int count) { - return '$count minggu lalu'; - } - - @override - String dateMonthsAgo(int count) { - return '$count bulan lalu'; - } - - @override - String get storeFilterAll => 'Semua'; - - @override - String get storeFilterMetadata => 'Metadata'; - - @override - String get storeFilterDownload => 'Unduhan'; - - @override - String get storeFilterUtility => 'Utilitas'; - - @override - String get storeFilterLyrics => 'Lirik'; - - @override - String get storeFilterIntegration => 'Integrasi'; - - @override - String get storeClearFilters => 'Hapus filter'; - - @override - String get storeAddRepoTitle => 'Tambahkan Repositori Ekstensi'; - - @override - String get storeAddRepoDescription => - 'Masukkan URL repositori GitHub yang berisi file registry.json untuk menelusuri dan memasang ekstensi.'; - - @override - String get storeRepoUrlLabel => 'Tautan Repositori'; - - @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; - - @override - String get storeAddRepoButton => 'Tambahkan Repositori'; - - @override - String get storeChangeRepoTooltip => 'Ubah repositori'; - - @override - String get storeRepoDialogTitle => 'Repositori Ekstensi'; - - @override - String get storeRepoDialogCurrent => 'Repositori saat ini:'; - - @override - String get storeNewRepoUrlLabel => 'URL Repositori Baru'; - - @override - String get storeLoadError => 'Gagal memuat repositori'; - - @override - String get storeEmptyNoExtensions => 'Tidak ada ekstensi yang tersedia'; - - @override - String get storeEmptyNoResults => 'Tidak ada ekstensi ditemukan'; - - @override - String get extensionId => 'ID'; - - @override - String get extensionError => 'Terjadi kesalahan'; - - @override - String get extensionCapabilities => 'Kemampuan'; - - @override - String get extensionMetadataProvider => 'Provider Metadata'; - - @override - String get extensionDownloadProvider => 'Provider Unduhan'; - - @override - String get extensionLyricsProvider => 'Provider Lirik'; - - @override - String get extensionUrlHandler => 'Penanganan URL'; - - @override - String get extensionQualityOptions => 'Opsi Kualitas'; - - @override - String get extensionPostProcessingHooks => 'Hook Pasca-Pemrosesan'; - - @override - String get extensionPermissions => 'Izin'; - - @override - String get extensionSettings => 'Pengaturan'; - - @override - String get extensionRemoveButton => 'Hapus Ekstensi'; - - @override - String get extensionUpdated => 'Diperbarui'; - - @override - String get extensionMinAppVersion => 'Versi App Minimum'; - - @override - String get extensionCustomTrackMatching => 'Pencocokan Lagu Kustom'; - - @override - String get extensionPostProcessing => 'Pasca-Pemrosesan'; - - @override - String extensionHooksAvailable(int count) { - return '$count hook tersedia'; - } - - @override - String extensionPatternsCount(int count) { - return '$count pola'; - } - - @override - String extensionStrategy(String strategy) { - return 'Strategi: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'Prioritas Provider'; - - @override - String get extensionsInstalledSection => 'Ekstensi Terpasang'; - - @override - String get extensionsNoExtensions => 'Tidak ada ekstensi terpasang'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Pasang file .spotiflac-ext untuk menambahkan provider baru'; - - @override - String get extensionsInstallButton => 'Pasang Ekstensi'; - - @override - String get extensionsInfoTip => - 'Ekstensi dapat menambahkan provider metadata dan unduhan baru. Hanya pasang ekstensi dari sumber terpercaya.'; - - @override - String get extensionsInstalledSuccess => 'Ekstensi berhasil dipasang'; - - @override - String extensionsInstalledCount(int count) { - return '$count ekstensi berhasil terpasang'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Ekstensi yang terpasang berjumlah $installed dari $attempted'; - } - - @override - String get extensionsDownloadPriority => 'Prioritas Unduhan'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'Atur urutan layanan unduhan'; - - @override - String get extensionsFallbackTitle => 'Ekstensi Cadangan'; - - @override - String get extensionsFallbackSubtitle => - 'Pilih ekstensi unduhan terpasang mana yang dapat digunakan sebagai cadangan'; - - @override - String get extensionsNoDownloadProvider => - 'Tidak ada ekstensi dengan provider unduhan'; - - @override - String get extensionsMetadataPriority => 'Prioritas Metadata'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Atur urutan sumber pencarian & metadata'; - - @override - String get extensionsNoMetadataProvider => - 'Tidak ada ekstensi dengan provider metadata'; - - @override - String get extensionsSearchProvider => 'Provider Pencarian'; - - @override - String get extensionsNoCustomSearch => - 'Tidak ada ekstensi dengan pencarian kustom'; - - @override - String get extensionsSearchProviderDescription => - 'Pilih layanan yang digunakan untuk mencari lagu'; - - @override - String get extensionsCustomSearch => 'Pencarian kustom'; - - @override - String get extensionsErrorLoading => 'Error memuat ekstensi'; - - @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 / hingga 96kHz'; - - @override - String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-bit / hingga 192kHz'; - - @override - String get downloadLossy320 => 'Lossy 320kbps'; - - @override - String get downloadLossyFormat => 'Format Lossy'; - - @override - String get downloadAutoConvert => 'Konversi otomatis setelah unduh'; - - @override - String get downloadAutoConvertSubtitle => - 'Ubah unduhan yang selesai ke format lossy yang lebih kecil. File asli hanya diganti setelah konversi berhasil.'; - - @override - String get downloadAutoConvertFormat => 'Format keluaran'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Pilih format lossy untuk unduhan yang baru selesai.'; - - @override - String get downloadAutoConvertBitrate => 'Kualitas keluaran'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Bitrate lebih tinggi menjaga lebih banyak detail, tetapi ukuran file juga lebih besar.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Kompatibilitas terbaik di berbagai pemutar dan perangkat'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Audio AAC yang efisien dalam container M4A'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Efisiensi terbaik untuk pemutar modern'; - - @override - String get downloadLossy320Format => 'Format Lossy 320kbps'; - - @override - String get downloadLossy320FormatDesc => - '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 => - 'Kompatibilitas terbaik, ~10MB per trek'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Kompatibilitas seluler terbaik, kontainer M4A'; - - @override - String get downloadLossyOpus256 => 'Opus 256kbps'; - - @override - String get downloadLossyOpus256Subtitle => - 'Opus kualitas terbaik, ~8MB per trek'; - - @override - String get downloadLossyOpus128 => 'Opus 128kbps'; - - @override - String get downloadLossyOpus128Subtitle => 'Ukuran terkecil, ~4MB per trek'; - - @override - String get downloadAskBeforeDownload => 'Tanya Sebelum Unduh'; - - @override - String get downloadDirectory => 'Direktori Unduhan'; - - @override - String get downloadSeparateSinglesFolder => 'Folder Singles Terpisah'; - - @override - String get downloadAlbumFolderStructure => 'Struktur Folder Album'; - - @override - String get albumFolderStructureDescription => - 'Pilih bagaimana struktur folder album akan dibuat'; - - @override - String get downloadUseAlbumArtistForFolders => - 'Gunakan Artis Album untuk folder'; - - @override - String get downloadUsePrimaryArtistOnly => 'Hanya artis utama untuk folder'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - 'Artis unggulan dihapus dari nama folder (misalnya Justin Bieber, Quavo → Justin Bieber)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - 'Nama lengkap artis digunakan untuk nama folder'; - - @override - String get downloadSelectQuality => 'Pilih Kualitas'; - - @override - String get downloadFrom => 'Unduh Dari'; - - @override - String get appearanceAmoledDark => 'AMOLED Gelap'; - - @override - String get appearanceAmoledDarkSubtitle => 'Latar belakang hitam murni'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => 'Hapus Semua'; - - @override - String get queueClearAllMessage => - 'Apakah Anda yakin ingin menghapus semua unduhan?'; - - @override - String get settingsAutoExportFailed => 'Unduhan yang gagal diekspor otomatis'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Simpan unduhan yang gagal ke file TXT secara otomatis'; - - @override - String get settingsDownloadNetwork => 'Jaringan Unduhan'; - - @override - String get settingsDownloadNetworkAny => 'WiFi + Data Seluler'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Hanya WiFi'; - - @override - String get settingsDownloadNetworkSubtitle => - 'Pilih jaringan mana yang akan digunakan untuk mengunduh. Jika diatur ke Hanya WiFi, unduhan akan berhenti sementara dan menggunakan data seluler.'; - - @override - String get settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'Artis / Album'; - - @override - String get albumFolderArtistAlbumSubtitle => 'Albums/Nama Artis/Nama Album/'; - - @override - String get albumFolderArtistYearAlbum => 'Artis / [Tahun] Album'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Albums/Nama Artis/[2005] Nama Album/'; - - @override - String get albumFolderAlbumOnly => 'Album Saja'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Albums/Nama Album/'; - - @override - String get albumFolderYearAlbum => '[Tahun] Album'; - - @override - String get albumFolderYearAlbumSubtitle => 'Albums/[2005] Nama Album/'; - - @override - String get albumFolderArtistAlbumSingles => 'Artis / Album + Singel'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Artis/Album/ dan Artis/Single/'; - - @override - String get albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Hapus yang Dipilih'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'lagu', - one: 'lagu', - ); - return 'Hapus $count $_temp0 dari album ini?\n\nIni juga akan menghapus file dari penyimpanan.'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return '$count dipilih'; - } - - @override - String get downloadedAlbumTapToSelect => 'Ketuk lagu untuk memilih'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'lagu', - one: 'lagu', - ); - return 'Hapus $count $_temp0'; - } - - @override - String get downloadedAlbumSelectToDelete => 'Pilih lagu untuk dihapus'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Disc $discNumber'; - } - - @override - String get recentTypeArtist => 'Artis'; - - @override - String get recentTypeAlbum => 'Album'; - - @override - String get recentTypeSong => 'Lagu'; - - @override - String get recentTypePlaylist => 'Daftar putar'; - - @override - String get recentEmpty => 'Belum ada item terbaru'; - - @override - String get recentClearAllMessage => - 'Hapus semua aktivitas terbaru? Riwayat unduhan dan file musik tidak akan dihapus.'; - - @override - String get recentShowAllDownloads => 'Tampilkan Semua Unduhan'; - - @override - String recentPlaylistInfo(String name) { - return 'Daftar Putar: $name'; - } - - @override - String get discographyDownload => 'Unduh Diskografi'; - - @override - String get discographyDownloadAll => 'Unduh Semua'; - - @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 libraryAddFolder => 'Tambah folder library'; - - @override - String get libraryAddFolderSubtitle => - 'Penyimpanan internal, kartu SD, SSD, atau drive eksternal lain'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Sambungkan kembali storage untuk memulihkan lagu'; - - @override - String get librarySourceDisabled => 'Dinonaktifkan'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned dari $total file dipindai ($progress%)'; - } - - @override - String get libraryExternalStorage => 'Storage eksternal'; - - @override - String get libraryRemoveFolder => 'Hapus folder library'; - - @override - String get libraryRemoveFolderMessage => - 'Hapus folder ini dan indeks lagunya dari SpotiFLAC Mobile? File audio di storage tidak akan dihapus.'; - - @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 => - '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.'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'files', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Last scanned: $time'; - } - - @override - String get libraryLastScannedNever => 'Never'; - - @override - String get libraryScanning => 'Scanning...'; - - @override - String get libraryScanFinalizing => 'Finalizing library...'; - - @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 libraryFilterMetadata => 'Metadata'; - - @override - String get libraryFilterMetadataComplete => 'Complete metadata'; - - @override - String get libraryFilterMetadataMissingAny => 'Missing any metadata'; - - @override - String get libraryFilterMetadataMissingYear => 'Missing year'; - - @override - String get libraryFilterMetadataMissingGenre => 'Missing genre'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; - - @override - String get libraryFilterSort => 'Sort'; - - @override - String get libraryFilterSortLatest => 'Latest'; - - @override - String get libraryFilterSortOldest => 'Oldest'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @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 => 'Selamat Datang di SpotiFLAC Mobile!'; - - @override - String get tutorialWelcomeDesc => - 'Pelajari cara menemukan musik dengan extension, memilih kualitas, dan mengelola unduhan di SpotiFLAC Mobile.'; - - @override - String get tutorialWelcomeTip1 => - 'Cari dengan extension terpasang atau tempel tautan musik yang didukung'; - - @override - String get tutorialWelcomeTip2 => - 'Pilih kualitas audio yang disediakan oleh provider unduhan'; - - @override - String get tutorialWelcomeTip3 => - 'Sematkan metadata, sampul, lirik, dan informasi rilisan secara otomatis'; - - @override - String get tutorialSearchTitle => 'Menemukan Musik'; - - @override - String get tutorialSearchDesc => - 'Cari dengan extension pilihan Anda atau tempel tautan musik yang didukung.'; - - @override - String get tutorialDownloadTitle => 'Mengunduh Musik'; - - @override - String get tutorialDownloadDesc => - 'Pilih kualitas yang tersedia, mulai unduhan, lalu pantau progresnya dalam antrean.'; - - @override - String get tutorialLibraryTitle => 'Perpustakaan Anda'; - - @override - String get tutorialLibraryDesc => - 'Musik yang diunduh dan dipindai dari perangkat tersusun rapi di Perpustakaan.'; - - @override - String get tutorialLibraryTip1 => - 'Kelola unduhan aktif, tertunda, dan selesai dari antrean Perpustakaan'; - - @override - String get tutorialLibraryTip2 => - 'Ketuk lagu untuk memutarnya dengan pemutar bawaan'; - - @override - String get tutorialLibraryTip3 => - 'Telusuri lagu, album, dan playlist dalam tampilan daftar atau grid'; - - @override - String get tutorialExtensionsTitle => 'Extensions'; - - @override - String get tutorialExtensionsDesc => - 'Extension menambahkan pencarian, unduhan, metadata, lirik, dan integrasi lainnya.'; - - @override - String get tutorialExtensionsTip1 => - 'Telusuri tab Repo untuk menemukan extension yang berguna'; - - @override - String get tutorialExtensionsTip2 => - 'Pilih provider untuk pencarian, unduhan, metadata, dan fallback'; - - @override - String get tutorialExtensionsTip3 => - 'Hubungkan akun jika diperlukan dan selalu perbarui extension'; - - @override - String get tutorialSettingsTitle => 'Customize Your Experience'; - - @override - String get tutorialSettingsDesc => - 'Sesuaikan unduhan, pemutaran, perilaku Perpustakaan, tampilan, dan penyimpanan.'; - - @override - String get tutorialSettingsTip1 => - 'Ubah lokasi unduhan dan pengaturan folder'; - - @override - String get tutorialSettingsTip2 => - 'Atur kualitas, unduhan bersamaan, nama berkas, dan konversi'; - - @override - String get tutorialSettingsTip3 => 'Sesuaikan tema dan tampilan aplikasi'; - - @override - String get tutorialReadyMessage => - 'Semua siap. Pilih extension, lalu cari musik atau tempel tautan yang didukung.'; - - @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 libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @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 trackSaveLyrics => 'Save Lyrics (.lrc)'; - - @override - String get trackSaveLyricsProgress => 'Saving lyrics...'; - - @override - String get trackReEnrich => 'Perkaya ulang'; - - @override - String get trackReEnrichOnlineSubtitle => - 'Search metadata online and embed into file'; - - @override - String get trackReEnrichFieldCover => 'Cover Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Select All'; - - @override - String get trackReEnrichModeIsrc => 'ISRC saja'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Cari dan tambahkan pengenal rekaman tanpa mengubah tag lain'; - - @override - String get trackReEnrichModeMissing => 'Isi tag yang kosong'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Pertahankan nilai yang ada dan isi hanya kolom yang kosong'; - - @override - String get trackReEnrichModeReplace => 'Perbarui tag yang dipilih'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Pilih nilai yang boleh diganti oleh metadata online'; - - @override - String get trackReEnrichFieldsTitle => 'Tag yang diperbarui'; - - @override - String get trackReEnrichReview => 'Tinjau perubahan'; - - @override - String get trackReEnrichReviewTitle => 'Tinjau perubahan metadata'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount perubahan diusulkan untuk $trackCount trek'; - } - - @override - String get trackReEnrichNoChanges => - 'Tidak ada perubahan metadata yang ditemukan untuk trek yang dipilih.'; - - @override - String get trackReEnrichApplyChanges => 'Terapkan perubahan'; - - @override - String get trackReEnrichRefreshOnline => 'Perbarui dari online'; - - @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 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 trackConvertTitle => 'Convert Audio'; - - @override - String get trackConvertTargetFormat => 'Target Format'; - - @override - String get trackConvertBitrate => 'Bitrate'; - - @override - String get trackConvertKeepOriginal => 'Pertahankan file asli'; - - @override - String get trackConvertKeepOriginalDescription => - 'Tambahkan file hasil konversi sebagai entri library terpisah'; - - @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 trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Konversi dari $sourceFormat ke $targetFormat?\n\nFile asli akan dipertahankan dan file hasil konversi akan ditambahkan sebagai entri library terpisah.'; - } - - @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 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 collectionFavoriteArtists => 'Favorite Artists'; - - @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 collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Added to \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Already in \"$playlistName\"'; - } - - @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 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 collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @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 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 collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @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 artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - return 'Konversi $count lagu ke $format?\n\nFile asli akan dipertahankan dan file hasil konversi akan ditambahkan sebagai entri library terpisah.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Converted $success of $total tracks to $format'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count diunduh'; - } - - @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'; - - @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)'; - } - - @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 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 lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, 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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @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 where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => 'Custom Folder (SAF)'; - - @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'SongLink Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Mengizinkan endpoint HTTP lama; verifikasi TLS tetap aktif'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Language code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @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 => - 'Pilih extension metadata dan field, lalu periksa datanya sebelum diterapkan'; - - @override - String get editMetadataAutoFillSource => 'Sumber metadata'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Otomatis (prioritas provider)'; - - @override - String get editMetadataAutoFillFind => 'Cari metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data dari $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Sampul tersedia'; - - @override - String get editMetadataAutoFillApply => 'Terapkan data terpilih'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - return 'Mengisi $count field dari $source'; - } - - @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'; - - @override - String queueDownloadingCount(int count) { - return 'Downloading ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtering...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'No download history'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Sample Rate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Bit Depth'; - - @override - String get audioAnalysisChannels => 'Channels'; - - @override - String get audioAnalysisDuration => 'Duration'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Size'; - - @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Tidak terdeteksi'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Samples'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Cancel download?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Keep'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download Complete'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks downloaded successfully', - one: '1 track downloaded successfully', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanning local library'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Library scan complete'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count errors'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; - - @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Update Ready'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import CSV'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Resolusi cover'; - - @override - String get trackCoverResolutionHint => - 'Mengatur sisi terpanjang saat disimpan. Memperbesar gambar tidak menambah detail.'; - - @override - String get trackCoverResizeFailed => - 'Ukuran cover tidak dapat diubah. Coba ukuran atau gambar lain.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'File yang sudah ada pada kualitas yang dipilih akan dilewati'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Izinkan versi dengan kualitas berbeda'; - - @override - String get downloadQualityVariantsDescription => - 'Simpan setiap versi kualitas; tambahkan kualitas terukur ke nama file hanya jika namanya sudah digunakan'; - - @override - String get trackOptionDownloadQualityVariant => 'Unduh kualitas lain'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get trackAlbumType => 'Jenis Rilisan'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, singel, EP, kompilasi...'; - - @override - String get editMetadataFieldExplicit => 'Eksplisit'; - - @override - String get editMetadataFieldExplicitHint => - 'Tandai lagu ini sebagai konten eksplisit'; - - @override - String get metadataExplicitValue => 'Eksplisit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'UPC, EAN, atau GTIN numerik'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Memeriksa sesi unduhan...'; - - @override - String get queueResolvingDownloadMetadata => 'Mencari metadata lagu...'; - - @override - String get queueResolvingDownloadStream => 'Menyiapkan stream audio...'; - - @override - String get queueWaitingForVerification => 'Menunggu verifikasi...'; - - @override - String get queueResumingAfterVerification => - 'Melanjutkan setelah verifikasi...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Layanan latar belakang Android untuk unduhan ekstensi'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Lagu sebelumnya'; - - @override - String get nowPlayingNextTrack => 'Lagu berikutnya'; - - @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'; - - @override - String get settingsSearchHint => 'Cari pengaturan'; - - @override - String settingsSearchNoResults(String query) { - return 'Tidak ada pengaturan yang cocok dengan \"$query\"'; - } - - @override - String get settingsGroupInterface => 'Ekstensi & tampilan'; - - @override - String get settingsGroupContent => 'Konten & metadata'; - - @override - String get settingsGroupDownloads => 'Unduhan & file'; - - @override - String get settingsGroupSystem => 'Sistem'; - - @override - String get settingsGroupHelp => 'Tentang & dukungan'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Lirik tidak tersedia'; - - @override - String get trackOptionCopyTrackName => 'Salin judul lagu'; - - @override - String get trackOptionCopyArtist => 'Salin artis'; - - @override - String get trackOptionCopyTrackAndArtist => 'Salin judul dan artis'; - - @override - String get metadataCopyValue => 'Salin nilai'; - - @override - String get metadataCopyField => 'Salin field dan nilai'; - - @override - String get metadataCopyAll => 'Salin semua metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Ukuran Cover Tertanam'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Perkecil cover yang diunduh dari internet sebelum ditanamkan. Gambar yang sudah berada dalam batas tidak akan diubah.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Resolusi asli'; -} diff --git a/lib/l10n/app_localizations_ja.dart b/lib/l10n/app_localizations_ja.dart deleted file mode 100644 index c3e6bf73..00000000 --- a/lib/l10n/app_localizations_ja.dart +++ /dev/null @@ -1,5003 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Japanese (`ja`). -class AppLocalizationsJa extends AppLocalizations { - AppLocalizationsJa([String locale = 'ja']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'ホーム'; - - @override - String get navLibrary => 'ライブラリ'; - - @override - String get navSettings => '設定'; - - @override - String get navStore => 'Repo'; - - @override - String get homeTitle => 'ホーム'; - - @override - String get homeSubtitle => 'Paste a supported URL or search by name'; - - @override - String get homeEmptyTitle => 'No search providers yet'; - - @override - String get homeEmptySubtitle => 'Install an extension to continue.'; - - @override - String get homeSupports => 'サポート: トラック、アルバム、プレイリスト、アーティスト、URL'; - - @override - String get homeRecent => '最近'; - - @override - String get historyFilterAll => 'すべて'; - - @override - String get historyFilterAlbums => 'アルバム'; - - @override - String get historyFilterSingles => 'シングル'; - - @override - String get historySearchHint => '検索履歴...'; - - @override - String get settingsTitle => '設定'; - - @override - String get settingsDownload => 'ダウンロード'; - - @override - String get settingsAppearance => '外観'; - - @override - String get settingsExtensions => '拡張'; - - @override - String get settingsAbout => 'アプリについて'; - - @override - String get downloadTitle => 'ダウンロード'; - - @override - String get downloadAskQualitySubtitle => - 'Show quality picker for each download'; - - @override - String get downloadFilenameFormat => 'ファイル名の形式'; - - @override - String get downloadSingleFilenameFormat => 'Single Filename Format'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Filename pattern for singles and EPs. Uses the same tags as the album format.'; - - @override - String get downloadFolderOrganization => 'フォルダ構成'; - - @override - String get appearanceTitle => '外観'; - - @override - String get appearanceThemeSystem => 'システム'; - - @override - String get appearanceThemeLight => 'ライト'; - - @override - String get appearanceThemeDark => 'ダーク'; - - @override - String get appearanceDynamicColor => 'ダイナミックカラー'; - - @override - String get appearanceDynamicColorSubtitle => '壁紙の色を使用する'; - - @override - String get appearanceHistoryView => '履歴の表示'; - - @override - String get appearanceHistoryViewList => 'リスト'; - - @override - String get appearanceHistoryViewGrid => 'グリッド'; - - @override - String get optionsPrimaryProvider => 'プライマリーのプロバイダー'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Service used for searching by track or album name'; - - @override - String optionsUsingExtension(String extensionName) { - return '拡張の使用: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Default Search Tab'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; - - @override - String get optionsAutoFallback => 'Auto Fallback'; - - @override - String get optionsAutoFallbackSubtitle => - 'Try other services if download fails'; - - @override - String get optionsEmbedLyrics => '歌詞を埋め込む'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Save synced lyrics alongside your downloaded tracks'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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'; - - @override - String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; - - @override - String get optionsArtistTagModeJoined => 'Single joined value'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; - - @override - String get optionsExtensionStore => 'Extension Repo'; - - @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; - - @override - String get optionsCheckUpdates => '更新を確認'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Notify when new version is available'; - - @override - String get optionsUpdateChannel => '更新チャンネル'; - - @override - String get optionsUpdateChannelStable => '安定版リリースのみ'; - - @override - String get optionsUpdateChannelPreview => 'プレビューリリースを入手'; - - @override - String get optionsUpdateChannelWarning => - 'Preview may contain bugs or incomplete features'; - - @override - String get optionsClearHistory => 'ダウンロード履歴を消去'; - - @override - String get optionsClearHistorySubtitle => 'ダウンロード済みのすべてのトラックを履歴から削除'; - - @override - String get optionsDetailedLogging => '詳細ログ'; - - @override - String get optionsDetailedLoggingOn => '詳細なログを記録しています'; - - @override - String get optionsDetailedLoggingOff => 'バグレポートを有効'; - - @override - String get extensionsTitle => '拡張'; - - @override - String get extensionsDisabled => '無効'; - - @override - String extensionsVersion(String version) { - return 'バージョン $version'; - } - - @override - String get extensionsUninstall => 'アンインストール'; - - @override - String get storeTitle => 'Extension Repo'; - - @override - String get storeSearch => '拡張を検索...'; - - @override - String get storeInstall => 'インストール'; - - @override - String get storeInstalled => 'インストール済み'; - - @override - String get storeUpdate => '更新'; - - @override - String get aboutTitle => 'アプリについて'; - - @override - String get aboutContributors => '貢献者'; - - @override - String get aboutMobileDeveloper => 'モバイルバージョンの開発者'; - - @override - String get aboutOriginalCreator => 'オリジナルの SpotiFLAC の作者'; - - @override - String get aboutLogoArtist => '美しいアプリロゴを作成した才能あるアーティストです!'; - - @override - String get aboutTranslators => '翻訳者'; - - @override - String get aboutSpecialThanks => 'スペシャルサンクス'; - - @override - String get aboutLinks => 'リンク'; - - @override - String get aboutMobileSource => 'モバイル版のソースコード'; - - @override - String get aboutPCSource => 'PC 版のソースコード'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => '問題を報告する'; - - @override - String get aboutReportIssueSubtitle => '問題が発生した場合に報告してください'; - - @override - String get aboutFeatureRequest => '機能の要望'; - - @override - String get aboutFeatureRequestSubtitle => 'アプリの新機能を提案する'; - - @override - String get aboutTelegramChannel => 'Telegram チャンネル'; - - @override - String get aboutTelegramChannelSubtitle => 'お知らせと更新'; - - @override - String get aboutTelegramChat => 'Telegram コミュニティ'; - - @override - String get aboutTelegramChatSubtitle => 'その他のユーザーとチャット'; - - @override - String get aboutSocial => 'ソーシャル'; - - @override - String get aboutApp => 'アプリ'; - - @override - String get aboutVersion => 'バージョン'; - - @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - - @override - String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; - - @override - String get artistAlbums => 'アルバム'; - - @override - String get artistSingles => 'シングルと EP'; - - @override - String get artistCompilations => 'コンピレーション'; - - @override - String get artistPopular => '人気'; - - @override - String artistMonthlyListeners(String count) { - return '$count 人の月間リスナー'; - } - - @override - String get trackMetadataService => 'サービス'; - - @override - String get trackMetadataPlay => '再生'; - - @override - String get trackMetadataShare => '共有'; - - @override - String get trackMetadataDelete => '削除'; - - @override - String get setupGrantPermission => '権限を許可'; - - @override - String get setupSkip => '今はスキップ'; - - @override - String get setupStorageAccessRequired => 'ストレージアクセスが必要です'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; - - @override - String get setupOpenSettings => '設定を開く'; - - @override - String get setupPermissionDeniedMessage => - 'Permission denied. Please grant all permissions to continue.'; - - @override - String setupPermissionRequired(String permissionType) { - return '$permissionType の権限が必要です'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return '最適な体験を得るには $permissionType の権限が必要です。この権限は設定で後から変更できます。'; - } - - @override - String get setupUseDefaultFolder => 'デフォルトのフォルダを使用しますか?'; - - @override - String get setupNoFolderSelected => - 'No folder selected. Would you like to use the default Music folder?'; - - @override - String get setupUseDefault => 'デフォルトを使用する'; - - @override - 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.'; - - @override - String get setupAppDocumentsFolder => 'アプリのドキュメントフォルダ'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Recommended - accessible via Files app'; - - @override - String get setupChooseFromFiles => 'ファイルから選択'; - - @override - String get setupChooseFromFilesSubtitle => 'iCloud またはその他の場所を選択'; - - @override - String get setupIosEmptyFolderWarning => - 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive is not supported. Please use the app Documents folder.'; - - @override - String get setupDownloadInFlac => 'ロスレス/ハイレゾ音質で音楽をダウンロード'; - - @override - String get setupStorageGranted => 'ストレージの権限が許可されました!'; - - @override - String get setupStorageRequired => 'ストレージの権限が必要です'; - - @override - String get setupStorageDescription => - 'SpotiFLAC はダウンロードした音楽ファイルを保存するためにストレージの権限が必要です。'; - - @override - String get setupNotificationGranted => '通知の権限が許可されました!'; - - @override - String get setupNotificationEnable => '通知を有効化する'; - - @override - String get setupFolderChoose => 'ダウンロードフォルダを選択'; - - @override - String get setupFolderDescription => - 'Select a folder where your downloaded music will be saved.'; - - @override - String get setupSelectFolder => 'フォルダを選択'; - - @override - 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 => '今はスキップ'; - - @override - String get setupNext => '次へ'; - - @override - String get setupGetStarted => 'Get Started'; - - @override - String get setupAllowAccessToManageFiles => - 'Please enable \"Allow access to manage all files\" in the next screen.'; - - @override - String get setupLanguageTitle => 'Choose Language'; - - @override - String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; - - @override - String get setupLanguageSystemDefault => 'System Default'; - - @override - String get dialogCancel => 'キャンセル'; - - @override - String get dialogSave => '保存'; - - @override - String get dialogDelete => '削除'; - - @override - String get dialogRetry => '再試行'; - - @override - String get dialogClear => '消去'; - - @override - String get dialogDone => '完了'; - - @override - String get dialogImport => 'インポート'; - - @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 => '破棄'; - - @override - String get dialogRemove => '削除'; - - @override - String get dialogUninstall => 'アンインストール'; - - @override - String get dialogDiscardChanges => '変更を破棄しますか?'; - - @override - String get dialogUnsavedChanges => - 'You have unsaved changes. Do you want to discard them?'; - - @override - String get dialogClearAll => 'すべて消去'; - - @override - String get dialogRemoveExtension => '拡張を削除'; - - @override - String get dialogRemoveExtensionMessage => - 'Are you sure you want to remove this extension? This cannot be undone.'; - - @override - String get dialogUninstallExtension => '拡張をアンインストールしますか?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Are you sure you want to remove $extensionName?'; - } - - @override - 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 => '選択済みを削除'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; - } - - @override - String get dialogImportPlaylistTitle => 'プレイリストをインポート'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Found $count tracks in CSV. Add them to download queue?'; - } - - @override - String csvImportTracks(int count) { - return '$count tracks from CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return '「$trackName」をキューに追加しました'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return '$count 個のトラックをキューに追加しました'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '「$trackName」は既にダウンロードされています'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" already exists in your library'; - } - - @override - String get snackbarHistoryCleared => '履歴を消去しました'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '個のトラック', - one: '個のトラック', - ); - return '$count $_temp0を削除'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'ファイルが開けません: $error'; - } - - @override - String get snackbarViewQueue => 'キューを表示'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform の URL をクリップボードにコピーしました'; - } - - @override - String get snackbarFileNotFound => 'ファイルがありません'; - - @override - String get snackbarSelectExtFile => '.spotiflac-ext ファイルを選択してください'; - - @override - String get snackbarProviderPrioritySaved => 'プロバイダーの優先度を保存しました'; - - @override - String get snackbarMetadataProviderSaved => 'メタデータプロバイダーの優先度を保存しました'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName をインストールしました。'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName を更新しました。'; - } - - @override - String get snackbarFailedToInstall => '拡張のインストールに失敗しました'; - - @override - String get snackbarFailedToUpdate => '拡張の更新に失敗しました'; - - @override - String get errorRateLimited => 'レート制限'; - - @override - String get errorRateLimitedMessage => - 'Too many requests. Please wait a moment before searching again.'; - - @override - String get errorNoTracksFound => 'トラックがありません'; - - @override - String get searchEmptyResultSubtitle => 'Try another keyword'; - - @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 を読み込めません: 拡張ソースがありません'; - } - - @override - String get actionPause => '一時停止'; - - @override - String get actionResume => '再開'; - - @override - String get actionCancel => 'キャンセル'; - - @override - String get actionSelectAll => 'すべて選択'; - - @override - String get actionDeselect => '選択を解除'; - - @override - String selectionSelected(int count) { - return '$count 個を選択済み'; - } - - @override - String get selectionAllSelected => 'すべてのトラックを選択済み'; - - @override - String get selectionSelectToDelete => 'トラックを選択で削除'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'メタデータを取得中... $current/$total'; - } - - @override - String get progressReadingCsv => 'CSV を読み取り中...'; - - @override - String get searchSongs => '曲'; - - @override - String get searchArtists => 'アーティスト'; - - @override - String get searchAlbums => 'アルバム'; - - @override - String get searchPlaylists => 'プレイリスト'; - - @override - String get searchSortTitle => 'Sort Results'; - - @override - String get searchSortDefault => 'Default'; - - @override - String get searchSortTitleAZ => 'Title (A-Z)'; - - @override - String get searchSortTitleZA => 'Title (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artist (A-Z)'; - - @override - String get searchSortArtistZA => 'Artist (Z-A)'; - - @override - String get searchSortDurationShort => 'Duration (Shortest)'; - - @override - String get searchSortDurationLong => 'Duration (Longest)'; - - @override - String get searchSortDateOldest => 'Release Date (Oldest)'; - - @override - String get searchSortDateNewest => 'Release Date (Newest)'; - - @override - String get tooltipPlay => '再生'; - - @override - String get filenameFormat => 'ファイル名の形式'; - - @override - String get filenameShowAdvancedTags => '高度なタグを表示'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Enable formatted tags for track padding and date patterns'; - - @override - String get folderOrganizationNone => '構成がありません'; - - @override - String get folderOrganizationByPlaylist => 'By Playlist'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Separate folder for each playlist'; - - @override - String get folderOrganizationByArtist => 'アーティスト別'; - - @override - String get folderOrganizationByAlbum => 'アルバム別'; - - @override - String get folderOrganizationByArtistAlbum => 'アーティスト/アルバム'; - - @override - String get folderOrganizationDescription => 'ダウンロードしたファイルをフォルダに整理する'; - - @override - String get folderOrganizationNoneSubtitle => 'ダウンロードフォルダ内のすべてのファイル'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Separate folder for each artist'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Separate folder for each album'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Nested folders for artist and album'; - - @override - String get updateAvailable => '更新が利用可能です'; - - @override - String get updateLater => '後で'; - - @override - String get updateStartingDownload => 'ダウンロードを開始中...'; - - @override - String get updateDownloadFailed => 'ダウンロードに失敗しました'; - - @override - String get updateFailedMessage => '更新のダウンロードに失敗しました'; - - @override - String get updateNewVersionReady => '新しいバージョンの準備ができています'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => '現在'; - - @override - String get updateNew => '新着'; - - @override - String get updateDownloading => 'ダウンロード中...'; - - @override - String get updateWhatsNew => '新着情報'; - - @override - String get updateDownloadInstall => 'ダウンロードとインストール'; - - @override - String get updateDontRemind => '通知しない'; - - @override - 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 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 providerExtension => '拡張'; - - @override - 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.'; - - @override - String get logTitle => 'ログ'; - - @override - String get logCopied => 'ログをクリップボードにコピーしました'; - - @override - String get logSearchHint => 'ログを検索...'; - - @override - String get logFilterLevel => 'レベル'; - - @override - String get logFilterSection => 'フィルター'; - - @override - String get logShareLogs => 'ログを共有'; - - @override - String get logClearLogs => 'ログを消去'; - - @override - String get logClearLogsTitle => 'ログを消去'; - - @override - String get logClearLogsMessage => 'すべてのログを消去してもよろしいですか?'; - - @override - String get logFilterBySeverity => 'Filter logs by severity'; - - @override - String get logNoLogsYet => 'まだログはありません'; - - @override - String get logNoLogsYetSubtitle => 'Logs will appear here as you use the app'; - - @override - String logEntriesFiltered(int count) { - return 'エントリー ($count 個をフィルター済み)'; - } - - @override - String logEntries(int count) { - return 'エントリー ($count)'; - } - - @override - String get channelStable => '安定版'; - - @override - String get channelPreview => 'プレビュー'; - - @override - String get sectionSearchSource => '検索ソース'; - - @override - String get sectionDownload => 'ダウンロード'; - - @override - String get sectionPerformance => 'パフォーマンス'; - - @override - String get sectionApp => 'アプリ'; - - @override - String get sectionData => 'データ'; - - @override - String get sectionDebug => 'デバッグ'; - - @override - String get sectionService => 'サービス'; - - @override - String get sectionAudioQuality => 'オーディオ品質'; - - @override - String get sectionFileSettings => 'ファイル設定'; - - @override - String get sectionLyrics => '歌詞'; - - @override - String get lyricsMode => '歌詞モード'; - - @override - String get lyricsModeDescription => - 'Choose how lyrics are saved with your downloads'; - - @override - String get lyricsModeEmbed => 'Embed in file'; - - @override - String get lyricsModeEmbedSubtitle => 'FLAC メタデータに保存された歌詞'; - - @override - String get lyricsModeExternal => '外部 .lrc ファイル'; - - @override - String get lyricsModeExternalSubtitle => - 'Separate .lrc file for players like Samsung Music'; - - @override - String get lyricsModeBoth => '両方'; - - @override - String get lyricsModeBothSubtitle => 'Embed and save .lrc file'; - - @override - String get sectionColor => 'カラー'; - - @override - String get sectionTheme => 'テーマ'; - - @override - String get sectionLayout => 'レイアウト'; - - @override - String get sectionLanguage => '言語'; - - @override - String get appearanceLanguage => 'アプリの言語'; - - @override - String get settingsAppearanceSubtitle => 'テーマ、カラー、画面'; - - @override - String get settingsDownloadSubtitle => 'Service, quality, fallback'; - - @override - String get settingsExtensionsSubtitle => 'ダウンロードプロバイダーを管理'; - - @override - String get settingsLogsSubtitle => 'デバッグのためのアプリログを表示'; - - @override - String get loadingSharedLink => '共有リンクを読み込み中...'; - - @override - String get pressBackAgainToExit => 'Press back again to exit'; - - @override - String downloadAllCount(int count) { - return 'すべてダウンロード ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 個のトラック', - one: '1 個のトラック', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'ファイルパスをコピー'; - - @override - String get trackRemoveFromDevice => 'デバイスから削除'; - - @override - String get trackLoadLyrics => '歌詞を読み込み'; - - @override - String get trackMetadata => 'メタデータ'; - - @override - String get trackFileInfo => 'ファイル情報'; - - @override - String get trackLyrics => '歌詞'; - - @override - String get trackFileNotFound => 'ファイルがありません'; - - @override - String get trackOpenInDeezer => 'Deezer で開く'; - - @override - String get trackOpenInSpotify => 'Spotify で開く'; - - @override - String get trackTrackName => 'トラック名'; - - @override - String get trackArtist => 'アーティスト'; - - @override - String get trackAlbumArtist => 'アルバムアーティスト'; - - @override - String get trackAlbum => 'アルバム'; - - @override - String get trackTrackNumber => 'トラック番号'; - - @override - String get trackDiscNumber => 'ディスク番号'; - - @override - String get trackDuration => '再生時間'; - - @override - String get trackAudioQuality => 'オーディオ品質'; - - @override - String get libraryQualityLabelFileFormat => 'File format'; - - @override - String get trackReleaseDate => 'リリース日'; - - @override - String get trackGenre => 'ジャンル'; - - @override - String get trackLabel => 'レーベル'; - - @override - String get trackCopyright => '著作権'; - - @override - String get trackDownloaded => 'ダウンロード済み'; - - @override - String get trackCopyLyrics => '歌詞をコピー'; - - @override - String trackLyricsSource(String source) { - return 'Source: $source'; - } - - @override - String get trackLyricsNotAvailable => 'このトラックの歌詞は利用できません'; - - @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; - - @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; - - @override - String get trackLyricsTimeout => 'リクエストがタイムアウトしました。後ほどお試しください。'; - - @override - String get trackLyricsLoadFailed => '歌詞の読み込みに失敗しました'; - - @override - String get trackEmbedLyrics => '歌詞を埋め込む'; - - @override - String get trackLyricsEmbedded => 'Lyrics embedded successfully'; - - @override - String get trackInstrumental => 'インストゥルメンタルのトラック'; - - @override - String get trackCopiedToClipboard => 'クリップボードにコピーしました'; - - @override - String get trackDeleteConfirmTitle => 'デバイスから削除しますか?'; - - @override - String get trackDeleteConfirmMessage => - 'This will permanently delete the downloaded file and remove it from your history.'; - - @override - String get dateToday => '今日'; - - @override - String get dateYesterday => '昨日'; - - @override - String dateDaysAgo(int count) { - return '$count 日前'; - } - - @override - String dateWeeksAgo(int count) { - return '$count 週間前'; - } - - @override - String dateMonthsAgo(int count) { - return '$count ヶ月前'; - } - - @override - String get storeFilterAll => 'すべて'; - - @override - String get storeFilterMetadata => 'メタデータ'; - - @override - String get storeFilterDownload => 'ダウンロード'; - - @override - String get storeFilterUtility => 'ユーティリティ'; - - @override - String get storeFilterLyrics => '歌詞'; - - @override - String get storeFilterIntegration => '統合'; - - @override - String get storeClearFilters => 'フィルターを消去'; - - @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 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 repository'; - - @override - String get storeEmptyNoExtensions => 'No extensions available'; - - @override - String get storeEmptyNoResults => 'No extensions found'; - - @override - String get extensionId => 'ID'; - - @override - String get extensionError => 'エラー'; - - @override - String get extensionCapabilities => '機能'; - - @override - String get extensionMetadataProvider => 'メタデータのプロバイダー'; - - @override - String get extensionDownloadProvider => 'ダウンロードのプロバイダー'; - - @override - String get extensionLyricsProvider => '歌詞のプロバイダー'; - - @override - String get extensionUrlHandler => 'URL ハンドラ'; - - @override - String get extensionQualityOptions => '品質のオプション'; - - @override - String get extensionPostProcessingHooks => 'ポストプロセスフック'; - - @override - String get extensionPermissions => '権限'; - - @override - String get extensionSettings => '設定'; - - @override - String get extensionRemoveButton => '拡張を削除'; - - @override - String get extensionUpdated => '更新済み'; - - @override - String get extensionMinAppVersion => '最小のアプリバージョン'; - - @override - String get extensionCustomTrackMatching => 'カスタムトラックマッチング'; - - @override - String get extensionPostProcessing => 'ポストプロセス'; - - @override - String extensionHooksAvailable(int count) { - return '$count 個のフックが利用可能です'; - } - - @override - String extensionPatternsCount(int count) { - return '$count 個のパターン'; - } - - @override - String extensionStrategy(String strategy) { - return 'ストラテジー: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'プロバイダーの優先度'; - - @override - String get extensionsInstalledSection => 'インストール済みの拡張'; - - @override - String get extensionsNoExtensions => '拡張はインストールされていません'; - - @override - String get extensionsNoExtensionsSubtitle => - '新しいプロバイダーを追加するには .spotiflac-ext ファイルをインストールします'; - - @override - String get extensionsInstallButton => '拡張をインストール'; - - @override - String get extensionsInfoTip => - '拡張は新しいメタデータとダウンロードプロバイダーを追加することがあります。信頼できるソースからの拡張のみをインストールしてください。'; - - @override - String get extensionsInstalledSuccess => '拡張のインストールが成功しました'; - - @override - String extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; - } - - @override - String get extensionsDownloadPriority => 'ダウンロードの優先度'; - - @override - String get extensionsDownloadPrioritySubtitle => 'ダウンロードサービスの順序を設定'; - - @override - String get extensionsFallbackTitle => 'Fallback Extensions'; - - @override - String get extensionsFallbackSubtitle => - 'Choose which installed download extensions can be used as fallback'; - - @override - String get extensionsNoDownloadProvider => 'ダウンロードプロバイダーの拡張はありません'; - - @override - String get extensionsMetadataPriority => 'メタデータの優先度'; - - @override - String get extensionsMetadataPrioritySubtitle => '検索とメタデータソースの順序を設定'; - - @override - String get extensionsNoMetadataProvider => 'メタデータプロバイダーの拡張はありません'; - - @override - String get extensionsSearchProvider => '検索のプロバイダー'; - - @override - String get extensionsNoCustomSearch => 'カスタム検索の拡張はありません'; - - @override - String get extensionsSearchProviderDescription => 'トラックの検索に使用するサービスを選択してください'; - - @override - String get extensionsCustomSearch => 'カスタム検索'; - - @override - String get extensionsErrorLoading => '拡張の読み込みエラー'; - - @override - String get qualityFlacLossless => 'FLAC ロスレス'; - - @override - String get qualityFlacLosslessSubtitle => '16-bit / 44.1kHz'; - - @override - String get qualityHiResFlac => 'ハイレゾ FLAC'; - - @override - String get qualityHiResFlacSubtitle => '24-bit / 最大 96kHz'; - - @override - String get qualityHiResFlacMax => 'ハイレゾ FLAC 最大'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-bit / 最大 192kHz'; - - @override - String get downloadLossy320 => 'Lossy 320kbps'; - - @override - String get downloadLossyFormat => 'Lossy Format'; - - @override - String get downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Lossy 320kbps Format'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; - - @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 downloadAskBeforeDownload => 'ダウンロード前に確認する'; - - @override - String get downloadDirectory => 'ダウンロードディレクトリ'; - - @override - String get downloadSeparateSinglesFolder => 'シングルのフォルダを分割'; - - @override - String get downloadAlbumFolderStructure => 'アルバムフォルダの構造'; - - @override - String get albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @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 => '品質を選択'; - - @override - String get downloadFrom => 'ダウンロード元'; - - @override - String get appearanceAmoledDark => 'AMOLED ダーク'; - - @override - String get appearanceAmoledDarkSubtitle => 'ピュアブラックの背景'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => 'すべて消去'; - - @override - String get queueClearAllMessage => 'すべてのダウンロードを消去してもよろしいですか?'; - - @override - String get settingsAutoExportFailed => 'ダウンロードの自動エクスポートに失敗しました'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Save failed downloads to TXT file automatically'; - - @override - String get settingsDownloadNetwork => 'ダウンロードネットワーク'; - - @override - String get settingsDownloadNetworkAny => 'Wi-Fi + モバイルデータ'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Wi-Fi のみ'; - - @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 settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'アーティスト / アルバム'; - - @override - String get albumFolderArtistAlbumSubtitle => 'アルバム/アーティスト名/アルバム名/'; - - @override - String get albumFolderArtistYearAlbum => 'アーティスト / [年] アルバム'; - - @override - String get albumFolderArtistYearAlbumSubtitle => 'アルバム/アーティスト名/[2005] アルバム名/'; - - @override - String get albumFolderAlbumOnly => 'アルバムのみ'; - - @override - String get albumFolderAlbumOnlySubtitle => 'アルバム/アルバム名/'; - - @override - String get albumFolderYearAlbum => '[年] アルバム'; - - @override - String get albumFolderYearAlbumSubtitle => 'アルバム/[2005] アルバム名/'; - - @override - String get albumFolderArtistAlbumSingles => 'アーティスト / アルバム + シングル'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Artist/Album/ and Artist/Singles/'; - - @override - String get albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; - - @override - String get downloadedAlbumDeleteSelected => '選択済みを削除'; - - @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 個を選択済み'; - } - - @override - String get downloadedAlbumTapToSelect => 'トラックをタップで選択'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '個のトラック', - one: '個のトラック', - ); - return '$count $_temp0を削除'; - } - - @override - String get downloadedAlbumSelectToDelete => 'トラックを選択で削除'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'ディスク $discNumber'; - } - - @override - String get recentTypeArtist => 'アーティスト'; - - @override - String get recentTypeAlbum => 'アルバム'; - - @override - String get recentTypeSong => '曲'; - - @override - String get recentTypePlaylist => 'プレイリスト'; - - @override - String get recentEmpty => 'No recent items yet'; - - @override - String get recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @override - String get recentShowAllDownloads => 'すべてのダウンロードを表示'; - - @override - String recentPlaylistInfo(String name) { - return 'プレイリスト: $name'; - } - - @override - String get discographyDownload => 'ディスコグラフィをダウンロード'; - - @override - String get discographyDownloadAll => 'すべてダウンロード'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$albumCount 個のリリースから $count 個のトラック'; - } - - @override - String get discographyAlbumsOnly => 'アルバムのみ'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count tracks from $albumCount albums'; - } - - @override - String get discographySinglesOnly => 'シングルと EP のみ'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count tracks from $albumCount singles'; - } - - @override - String get discographySelectAlbums => 'アルバムを選択...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Choose specific albums or singles'; - - @override - String get discographyFetchingTracks => 'トラックを取得中です...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return 'Fetching $current of $total...'; - } - - @override - String discographySelectedCount(int count) { - return '$count 個を選択済み'; - } - - @override - String get discographyDownloadSelected => '選択済みをダウンロード'; - - @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 => '利用可能なアルバムがありません'; - - @override - String get discographyFailedToFetch => '一部のアルバムの取得に失敗しました'; - - @override - String get sectionStorageAccess => 'ストレージアクセス'; - - @override - String get allFilesAccess => 'すべてのファイルへのアクセス'; - - @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 => 'ローカルライブラリ'; - - @override - String get settingsLocalLibrarySubtitle => 'Scan music & detect duplicates'; - - @override - String get settingsCache => 'ストレージとキャッシュ'; - - @override - String get settingsCacheSubtitle => 'View size and clear cached data'; - - @override - String get libraryTitle => 'ローカルライブラリ'; - - @override - String get libraryScanSettings => 'スキャン設定'; - - @override - String get libraryEnableLocalLibrary => 'ローカルライブラリを有効'; - - @override - String get libraryEnableLocalLibrarySubtitle => - 'Scan and track your existing music'; - - @override - String get libraryFolder => 'ライブラリのフォルダ'; - - @override - String get libraryFolderHint => 'タップでフォルダを選択'; - - @override - String get libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @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 => 'アクション'; - - @override - String get libraryScan => 'ライブラリをスキャン'; - - @override - String get libraryScanSubtitle => 'オーディオファイルをスキャン'; - - @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 => 'ライブラリを消去'; - - @override - String get libraryClearSubtitle => 'Remove all scanned tracks'; - - @override - 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 => 'ローカルライブラリについて'; - - @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 libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'files', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return '最終スキャン: $time'; - } - - @override - String get libraryLastScannedNever => 'Never'; - - @override - String get libraryScanning => 'スキャン中...'; - - @override - String get libraryScanFinalizing => 'Finalizing library...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$progress% of $total files'; - } - - @override - String get libraryInLibrary => 'ライブラリ内'; - - @override - String libraryRemovedMissingFiles(int count) { - return 'Removed $count missing files from library'; - } - - @override - String get libraryCleared => 'Library cleared'; - - @override - String get libraryStorageAccessRequired => 'ストレージアクセスが必要です'; - - @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 => 'ダウンロード済み'; - - @override - String get librarySourceLocal => 'ローカル'; - - @override - String get libraryFilterAll => 'すべて'; - - @override - String get libraryFilterDownloaded => 'ダウンロード済み'; - - @override - String get libraryFilterLocal => 'ローカル'; - - @override - String get libraryFilterTitle => 'フィルター'; - - @override - String get libraryFilterReset => 'リセット'; - - @override - String get libraryFilterApply => '適用'; - - @override - String get libraryFilterSource => 'ソース'; - - @override - String get libraryFilterQuality => '品質'; - - @override - String get libraryFilterQualityHiRes => 'ハイレゾ (24bit)'; - - @override - String get libraryFilterQualityCD => 'CD (16bit)'; - - @override - String get libraryFilterQualityLossy => 'Lossy'; - - @override - String get libraryFilterFormat => '形式'; - - @override - String get libraryFilterMetadata => 'Metadata'; - - @override - String get libraryFilterMetadataComplete => 'Complete metadata'; - - @override - String get libraryFilterMetadataMissingAny => 'Missing any metadata'; - - @override - String get libraryFilterMetadataMissingYear => 'Missing year'; - - @override - String get libraryFilterMetadataMissingGenre => 'Missing genre'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; - - @override - String get libraryFilterSort => 'Sort'; - - @override - String get libraryFilterSortLatest => 'Latest'; - - @override - String get libraryFilterSortOldest => 'Oldest'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @override - String get timeJustNow => 'Just now'; - - @override - String timeMinutesAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 分前', - one: '1 分前', - ); - return '$_temp0'; - } - - @override - String timeHoursAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 時間前', - one: '1 時間前', - ); - return '$_temp0'; - } - - @override - String get tutorialWelcomeTitle => 'SpotiFLAC Mobile へようこそ!'; - - @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 => 'インストール済みの拡張機能で検索するか、対応リンクを貼り付けます'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @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 => '音楽をダウンロード中'; - - @override - String get tutorialDownloadDesc => - 'Downloading music is simple and fast. Here\'s how it works.'; - - @override - String get tutorialLibraryTitle => 'あなたのライブラリ'; - - @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 => '拡張'; - - @override - String get tutorialExtensionsDesc => - 'Extend the app\'s capabilities with community extensions.'; - - @override - String get tutorialExtensionsTip1 => - 'Browse the Repo 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 => '強制フルスキャン'; - - @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 => 'ストレージとキャッシュ'; - - @override - String get cacheSummaryTitle => 'キャッシュの概要'; - - @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 => 'キャッシュ済みデータ'; - - @override - String get cacheSectionMaintenance => 'メンテナンス'; - - @override - String get cacheAppDirectory => 'アプリキャッシュのディレクトリ'; - - @override - String get cacheAppDirectoryDesc => - 'HTTP responses, WebView data, and other temporary app data.'; - - @override - String get cacheTempDirectory => '一時ディレクトリ'; - - @override - String get cacheTempDirectoryDesc => - 'Temporary files from downloads and audio conversion.'; - - @override - String get cacheCoverImage => 'カバー画像のキャッシュ'; - - @override - String get cacheCoverImageDesc => - 'Downloaded album and track cover art. Will re-download when viewed.'; - - @override - String get cacheLibraryCover => 'ライブラリのカバーキャッシュ'; - - @override - String get cacheLibraryCoverDesc => - 'Cover art extracted from local music files. Will re-extract on next scan.'; - - @override - String get libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @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 => 'キャッシュデータはありません'; - - @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 個のエントリ'; - } - - @override - String cacheClearSuccess(String target) { - return '消去済み: $target'; - } - - @override - String get cacheClearConfirmTitle => 'キャッシュを消去しますか?'; - - @override - String cacheClearConfirmMessage(String target) { - return 'This will clear cached data for $target. Downloaded music files will not be deleted.'; - } - - @override - 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 => 'すべてのキャッシュを消去'; - - @override - String get cacheCleanupUnused => '未使用のデータを削除'; - - @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 => '状態を更新'; - - @override - String get trackSaveCoverArt => 'カバー画像を保存'; - - @override - String get trackSaveLyrics => '歌詞を保存 (.lrc)'; - - @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 trackReEnrichFieldCover => 'Cover Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Select All'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @override - String get trackEditMetadata => 'メタデータを編集'; - - @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 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 '失敗: $error'; - } - - @override - String get trackConvertFormat => '変換の形式'; - - @override - String get trackConvertTitle => 'オーディオを変換'; - - @override - String get trackConvertTargetFormat => 'ターゲットの形式'; - - @override - String get trackConvertBitrate => 'ビットレート'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @override - String get trackConvertConfirmTitle => '変換を確認'; - - @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 trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @override - String get trackConvertLosslessHint => - 'Lossless conversion — no quality loss'; - - @override - String get trackConvertConverting => 'オーディオを変換中...'; - - @override - String trackConvertSuccess(String format) { - return 'Converted to $format successfully'; - } - - @override - String get trackConvertFailed => '変換に失敗しました'; - - @override - String get cueSplitTitle => '分割 CUE シート'; - - @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 collectionFavoriteArtists => 'Favorite Artists'; - - @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 collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Added to \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Already in \"$playlistName\"'; - } - - @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 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 collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @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 => 'フォルダから削除'; - - @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 collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @override - String get trackOptionAddToLoved => 'Add to Loved'; - - @override - String get trackOptionRemoveFromLoved => 'Remove from Loved'; - - @override - String get trackOptionAddToWishlist => 'ウィッシュリストに追加'; - - @override - String get trackOptionRemoveFromWishlist => 'ウィッシュから削除'; - - @override - String get artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @override - String get collectionPlaylistChangeCover => 'カバー画像を変更'; - - @override - String get collectionPlaylistRemoveCover => 'カバー画像を削除'; - - @override - String selectionShareCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '個のトラック', - one: '個のトラック', - ); - return '$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 => '一括変換'; - - @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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Converted $success of $total tracks to $format'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - 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'; - - @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)'; - } - - @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 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 lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, 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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @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 where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => 'Custom Folder (SAF)'; - - @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'SongLink Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Language code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @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 editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @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'; - - @override - String queueDownloadingCount(int count) { - return 'Downloading ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtering...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'No download history'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Sample Rate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Bit Depth'; - - @override - String get audioAnalysisChannels => 'Channels'; - - @override - String get audioAnalysisDuration => 'Duration'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Size'; - - @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Samples'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Cancel download?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Keep'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download Complete'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks downloaded successfully', - one: '1 track downloaded successfully', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanning local library'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Library scan complete'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count errors'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; - - @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Update Ready'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import CSV'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - '各品質版を保持し、同じ名前が既に使用されている場合のみ測定品質をファイル名に追加します'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - '拡張機能のダウンロード用 Android バックグラウンドサービス'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => '前の曲'; - - @override - String get nowPlayingNextTrack => '次の曲'; - - @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'; - - @override - String get settingsSearchHint => '設定を検索'; - - @override - String settingsSearchNoResults(String query) { - return '「$query」に一致する設定はありません'; - } - - @override - String get settingsGroupInterface => '拡張機能と外観'; - - @override - String get settingsGroupContent => 'コンテンツとメタデータ'; - - @override - String get settingsGroupDownloads => 'ダウンロードとファイル'; - - @override - String get settingsGroupSystem => 'システム'; - - @override - String get settingsGroupHelp => 'アプリ情報とサポート'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/l10n/app_localizations_ko.dart b/lib/l10n/app_localizations_ko.dart deleted file mode 100644 index 9c1c2114..00000000 --- a/lib/l10n/app_localizations_ko.dart +++ /dev/null @@ -1,4884 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Korean (`ko`). -class AppLocalizationsKo extends AppLocalizations { - AppLocalizationsKo([String locale = 'ko']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => '홈'; - - @override - String get navLibrary => '라이브러리'; - - @override - String get navSettings => '설정'; - - @override - String get navStore => '레포'; - - @override - String get homeTitle => '홈'; - - @override - String get homeSubtitle => '지원되는 URL을 붙여넣거나, 이름으로 검색하세요'; - - @override - String get homeEmptyTitle => '아직 검색 제공자가 없음'; - - @override - String get homeEmptySubtitle => '계속하려면 확장 프로그램을 설치하세요'; - - @override - String get homeSupports => '지원 항목: 트랙, 앨범, 재생목록, 아티스트 URL'; - - @override - String get homeRecent => '최근 기록'; - - @override - String get historyFilterAll => '모두'; - - @override - String get historyFilterAlbums => '앨범'; - - @override - String get historyFilterSingles => '싱글'; - - @override - String get historySearchHint => '기록 검색...'; - - @override - String get settingsTitle => '설정'; - - @override - String get settingsDownload => '다운로드'; - - @override - String get settingsAppearance => '디자인'; - - @override - String get settingsExtensions => '확장 프로그램'; - - @override - String get settingsAbout => '정보'; - - @override - String get downloadTitle => '다운로드'; - - @override - String get downloadAskQualitySubtitle => '다운로드를 할 때마다 음질을 선택하도록 합니다'; - - @override - String get downloadFilenameFormat => '파일 이름 형식'; - - @override - String get downloadSingleFilenameFormat => '싱글 파일 이름 형식'; - - @override - String get downloadSingleFilenameFormatDescription => - '싱글 및 EP용 파일 이름 패턴입니다. 앨범 형식과 동일한 태그를 사용합니다'; - - @override - String get downloadFolderOrganization => '폴더 분류 형식'; - - @override - String get appearanceTitle => '디자인'; - - @override - String get appearanceThemeSystem => '시스템'; - - @override - String get appearanceThemeLight => '밝은'; - - @override - String get appearanceThemeDark => '어두운'; - - @override - String get appearanceDynamicColor => '동적 색상'; - - @override - String get appearanceDynamicColorSubtitle => '배경 화면을 참고하여 강조 색상이 지정됩니다'; - - @override - String get appearanceHistoryView => '기록 정렬 방식'; - - @override - String get appearanceHistoryViewList => '리스트'; - - @override - String get appearanceHistoryViewGrid => '그리드'; - - @override - String get optionsPrimaryProvider => '기본 제공자'; - - @override - String get optionsPrimaryProviderSubtitle => '트랙 또는 앨범 이름으로 검색하는 데 사용되는 서비스'; - - @override - String optionsUsingExtension(String extensionName) { - return '확장 프로그램 사용: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => '기본 검색 탭'; - - @override - String get optionsDefaultSearchTabSubtitle => '새 검색 결과를 표시할 탭을 먼저 선택하세요'; - - @override - String get optionsAutoFallback => '자동 대체'; - - @override - String get optionsAutoFallbackSubtitle => '다운로드가 실패한 경우에 다른 서비스를 사용합니다'; - - @override - String get optionsEmbedLyrics => '가사 삽입'; - - @override - String get optionsEmbedLyricsSubtitle => '다운로드된 트랙과 함께 동기화된 가사를 저장합니다'; - - @override - String get optionsReplayGain => '리플레이게인'; - - @override - String get optionsReplayGainSubtitleOn => '음량 스캔 및 리플레이게인 태그 삽입 (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => '비활성화됨: 음량 정규화 태그 없음'; - - @override - String get trackReplayGain => '리플레이게인 다시 스캔'; - - @override - String get trackReplayGainScanning => '음량을 분석하는 중...'; - - @override - String get trackReplayGainSuccess => '리플레이게인 태그가 추가됨'; - - @override - String get trackReplayGainFailed => '리플레이게인 태그 추가 실패'; - - @override - String selectionReplayGainCount(int count) { - return '리플레이게인 ($count)'; - } - - @override - String get replayGainBatchConfirmTitle => '리플레이게인 추가'; - - @override - String replayGainBatchConfirmMessage(int count) { - return '음량을 분석하고 $count 개의 트랙에 리플레이게인 태그를 추가하시겠습니까?'; - } - - @override - String get replayGainBatchAnalyzing => '리플레이게인을 분석하는 중...'; - - @override - String replayGainBatchSuccess(int success, int total) { - return '$total 개의 트랙 중 $success 개에 리플레이게인이 추가됨'; - } - - @override - String get optionsArtistTagMode => '아티스트 태그 모드'; - - @override - String get optionsArtistTagModeDescription => - '여러 아티스트를 내장 태그에 작성하는 방법을 선택하세요'; - - @override - String get optionsArtistTagModeJoined => '단일 결합 값'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - '플레이어 호환성을 최대화하려면 \'아티스트 A, 아티스트 B\'와 같이 하나의 아티스트 값을 입력하세요'; - - @override - String get optionsArtistTagModeSplitVorbis => 'FLAC/Opus용 태그 분할'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'FLAC 및 Opus의 경우 아티스트당 하나의 아티스트 태그를 작성하세요. MP3 및 M4A는 병합된 상태로 유지됩니다'; - - @override - String get optionsExtensionStore => '확장 프로그램 레포'; - - @override - String get optionsExtensionStoreSubtitle => '하단바에서 레포 탭 표시'; - - @override - String get optionsCheckUpdates => '업데이트 확인'; - - @override - String get optionsCheckUpdatesSubtitle => '새 버전이 출시되면 알림'; - - @override - String get optionsUpdateChannel => '업데이트 채널'; - - @override - String get optionsUpdateChannelStable => '안정 버전만 받기'; - - @override - String get optionsUpdateChannelPreview => '베타 버전을 받기'; - - @override - String get optionsUpdateChannelWarning => '베타 버전은 불안정할 수 있습니다'; - - @override - String get optionsClearHistory => '다운로드 기록 지우기'; - - @override - String get optionsClearHistorySubtitle => '기록에서 모든 다운로드된 트랙을 제거합니다'; - - @override - String get optionsDetailedLogging => '상세 로깅'; - - @override - String get optionsDetailedLoggingOn => '상세한 로그가 기록되고 있습니다'; - - @override - String get optionsDetailedLoggingOff => '버그 보고서 활성화'; - - @override - String get extensionsTitle => '확장 프로그램'; - - @override - String get extensionsDisabled => '비활성화됨'; - - @override - String extensionsVersion(String version) { - return '버전 $version'; - } - - @override - String get extensionsUninstall => '제거'; - - @override - String get storeTitle => '확장 프로그램 레포'; - - @override - String get storeSearch => '확장 프로그램 검색...'; - - @override - String get storeInstall => '설치'; - - @override - String get storeInstalled => '설치됨'; - - @override - String get storeUpdate => '업데이트'; - - @override - String get aboutTitle => '정보'; - - @override - String get aboutContributors => '개발에 힘써주신 분들'; - - @override - String get aboutMobileDeveloper => '모바일 버전 개발자'; - - @override - String get aboutOriginalCreator => 'SpotiFLAC 오리지널 개발자'; - - @override - String get aboutLogoArtist => '아름다운 로고를 만들어주신 재능 있는 아티스트!'; - - @override - String get aboutTranslators => '번역에 도움주신 분들'; - - @override - String get aboutSpecialThanks => '특별히 감사드리는 분들'; - - @override - String get aboutLinks => '링크'; - - @override - String get aboutMobileSource => '모바일 소스 코드'; - - @override - String get aboutPCSource => 'PC 소스 코드'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => '문제 신고'; - - @override - String get aboutReportIssueSubtitle => '발생하는 모든 문제를 신고해 주세요'; - - @override - String get aboutFeatureRequest => '기능 요청'; - - @override - String get aboutFeatureRequestSubtitle => '앱의 새 기능을 제안해 주세요'; - - @override - String get aboutTelegramChannel => '텔레그램 채널'; - - @override - String get aboutTelegramChannelSubtitle => '공지 및 업데이트 안내'; - - @override - String get aboutTelegramChat => '텔레그램 커뮤니티'; - - @override - String get aboutTelegramChatSubtitle => '다른 이용자와 소통'; - - @override - String get aboutSocial => '소셜 네트워크'; - - @override - String get aboutApp => '앱 정보'; - - @override - String get aboutVersion => '버전'; - - @override - String get aboutBinimumDesc => - 'QQDL 및 HiFi API 개발자입니다. 이 프로젝트는 무손실 다운로드 지원을 형성하는 데 도움을 주셨습니다'; - - @override - String get aboutSachinsenalDesc => - 'HiFi 프로젝트의 원작자이자, 무손실 음원 소스 연동 기능의 토대를 구축한 개발자입니다'; - - @override - String get aboutSjdonadoDesc => - 'I Don\'t Have Spotify(IDHS) 개발자입니다. 위급 상황 발생 시 해결해 주는 대체 링크 해결 도구를 만들었습니다!'; - - @override - String get aboutAppDescription => - '음악 메타데이터를 검색하고\\n확장 프로그램을 관리하고\\n라이브러리를 정리하세요'; - - @override - String get artistAlbums => '앨범'; - - @override - String get artistSingles => '싱글 및 EP'; - - @override - String get artistCompilations => '컴필레이션'; - - @override - String get artistPopular => '인기'; - - @override - String artistMonthlyListeners(String count) { - return '월별 청취자 $count'; - } - - @override - String get trackMetadataService => '제공자'; - - @override - String get trackMetadataPlay => '재생'; - - @override - String get trackMetadataShare => '공유'; - - @override - String get trackMetadataDelete => '삭제'; - - @override - String get setupGrantPermission => '권한을 부여해 주세요'; - - @override - String get setupSkip => '다음에 할래요'; - - @override - String get setupStorageAccessRequired => '저장소 접근 권한 필요'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11 이상 버전에서는 선택한 다운로드 폴더에 파일을 저장하려면 \'모든 파일 접근\' 권한이 필요합니다'; - - @override - String get setupOpenSettings => '설정 열기'; - - @override - String get setupPermissionDeniedMessage => - '권한이 거부되었습니다. 계속하려면 모든 권한을 허용해 주세요'; - - @override - String setupPermissionRequired(String permissionType) { - return '\'\'$permissionType\'\' 권한 필요'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return '최상의 사용 경험을 위해 \'\'$permissionType\'\' 권한이 필요합니다. 설정에서 나중에 변경할 수 있습니다'; - } - - @override - String get setupUseDefaultFolder => '기본 폴더를 사용하시겠습니까?'; - - @override - String get setupNoFolderSelected => '선택된 폴더가 없습니다. 기본 음악 폴더를 사용하시겠습니까?'; - - @override - String get setupUseDefault => '기본값 사용'; - - @override - String get setupDownloadLocationTitle => '다운로드 경로'; - - @override - String get setupDownloadLocationIosMessage => - 'iOS에서는 다운로드된 파일이 앱의 문서 폴더에 저장됩니다. 파일 앱을 통해 해당 파일에 접근할 수 있습니다'; - - @override - String get setupAppDocumentsFolder => '앱 문서 폴더'; - - @override - String get setupAppDocumentsFolderSubtitle => '권장 사항 - 파일 앱을 통해 접근 가능'; - - @override - String get setupChooseFromFiles => '파일 탐색기에서 선택'; - - @override - String get setupChooseFromFilesSubtitle => 'iCloud 또는 다른 위치를 선택하세요'; - - @override - String get setupIosEmptyFolderWarning => - 'iOS 제한 사항: 빈 폴더는 선택할 수 없습니다. 파일이 하나 이상 있는 폴더를 선택하세요'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive는 지원되지 않습니다. 앱의 문서 폴더를 사용해 주세요'; - - @override - String get setupDownloadInFlac => '무손실 및 Hi-Res 음질로 음악을 다운로드하세요'; - - @override - String get setupStorageGranted => '저장소 접근 권한이 부여되었습니다!'; - - @override - String get setupStorageRequired => '저장소 접근 권한 필요'; - - @override - String get setupStorageDescription => - 'SpotiFLAC은 다운로드된 음악 파일을 저장하기 위해 저장소 접근 권한이 필요합니다'; - - @override - String get setupNotificationGranted => '알림 권한이 부여되었습니다!'; - - @override - String get setupNotificationEnable => '알림 활성화'; - - @override - String get setupFolderChoose => '다운로드 폴더를 선택하세요'; - - @override - String get setupFolderDescription => '다운로드된 음악 파일이 저장될 폴더를 선택하세요'; - - @override - String get setupSelectFolder => '폴더 선택'; - - @override - String get setupEnableNotifications => '알림 활성화'; - - @override - String get setupNotificationBackgroundDescription => - '알림으로 다운로드 진행 상황을 확인하세요. 앱이 백그라운드에서 실행 중일 때 다운로드 상태와 완료 여부를 확인할 수 있습니다'; - - @override - String get setupSkipForNow => '다음에 할래요'; - - @override - String get setupNext => '다음'; - - @override - String get setupGetStarted => '시작하기'; - - @override - String get setupAllowAccessToManageFiles => - '다음 화면에서 \'모든 파일 관리 권한 허용\'을 활성화해 주세요'; - - @override - String get setupLanguageTitle => '언어 선택'; - - @override - String get setupLanguageDescription => - '앱에서 사용할 언어를 선택하세요\\n나중에 설정에서 변경할 수 있습니다'; - - @override - String get setupLanguageSystemDefault => '시스템 기본값'; - - @override - String get dialogCancel => '취소'; - - @override - String get dialogSave => '저장'; - - @override - String get dialogDelete => '삭제'; - - @override - String get dialogRetry => '다시 시도'; - - @override - String get dialogClear => '지우기'; - - @override - String get dialogDone => '완료'; - - @override - String get dialogImport => '불러오기'; - - @override - String get dialogDownload => '다운로드'; - - @override - String get previewPlay => '미리듣기 재생'; - - @override - String get previewStop => '미리듣기 중지'; - - @override - String get previewUnavailable => '미리듣기를 사용할 수 없음'; - - @override - String get dialogDiscard => '폐기'; - - @override - String get dialogRemove => '제거'; - - @override - String get dialogUninstall => '삭제'; - - @override - String get dialogDiscardChanges => '변경 사항 폐기'; - - @override - String get dialogUnsavedChanges => '저장되지 않은 변경 사항이 있습니다. 폐기하시겠습니까?'; - - @override - String get dialogClearAll => '모두 지우기'; - - @override - String get dialogRemoveExtension => '확장 프로그램 제거'; - - @override - String get dialogRemoveExtensionMessage => - '이 확장 프로그램을 제거하시겠습니까? 이 작업은 되돌릴 수 없습니다'; - - @override - String get dialogUninstallExtension => '확장 프로그램을 제거하시겠습니까?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return '\'\'$extensionName\'\'을 제거하시겠습니까?'; - } - - @override - String get dialogClearHistoryTitle => '기록 지우기'; - - @override - String get dialogClearHistoryMessage => - '모든 다운로드 기록을 지우시겠습니까? 이 작업은 되돌릴 수 없습니다'; - - @override - String get dialogDeleteSelectedTitle => '선택 항목 삭제'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '기록에서 $count 개의 $_temp0을 삭제하시겠습니까?\n\n저장소에서도 파일이 삭제됩니다'; - } - - @override - String get dialogImportPlaylistTitle => '재생목록 가져오기'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'CSV 파일에서 $count 개의 트랙을 찾았습니다. 다운로드 목록에 추가하시겠습니까?'; - } - - @override - String csvImportTracks(int count) { - return 'CSV 파일의 트랙: $count'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return '\'\'$trackName\'\'가 다운로드 목록에 추가됨'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return '다운로드 목록에 $count 개의 트랙이 추가됨'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\'\'$trackName\'\'은 이미 다운로드되어 있음'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '라이브러리에 \'\'$trackName\'\'이 이미 존재함'; - } - - @override - String get snackbarHistoryCleared => '기록 지워짐'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count 개의 $_temp0이 삭제됨'; - } - - @override - String snackbarCannotOpenFile(String error) { - return '파일을 열 수 없음: $error'; - } - - @override - String get snackbarViewQueue => '다운로드 목록 보기'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform 링크가 클립보드에 저장됨'; - } - - @override - String get snackbarFileNotFound => '파일을 찾을 수 없음'; - - @override - String get snackbarSelectExtFile => '.spotiflac-ext 파일을 선택하세요'; - - @override - String get snackbarProviderPrioritySaved => '제공자 우선순위가 저장됨'; - - @override - String get snackbarMetadataProviderSaved => '메타데이터 제공자 우선순위가 저장됨'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '\'\'$extensionName\'\'이 설치됨'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '\'\'$extensionName\'\'이 설치됨'; - } - - @override - String get snackbarFailedToInstall => '확장 프로그램 설치 실패'; - - @override - String get snackbarFailedToUpdate => '확장 프로그램 업데이트 실패'; - - @override - String get errorRateLimited => '사용 제한됨'; - - @override - String get errorRateLimitedMessage => '요청이 너무 많습니다. 잠시 후 다시 검색해 주세요'; - - @override - String get errorNoTracksFound => '트랙을 찾을 수 없음'; - - @override - String get searchEmptyResultSubtitle => '다른 키워드를 검색해 보세요'; - - @override - String get errorUrlNotRecognized => '링크를 인식할 수 없음'; - - @override - String get errorUrlNotRecognizedMessage => - '이 링크는 지원되지 않습니다. URL이 올바른지, 호환되는 확장 프로그램이 설치되어 있는지 확인하세요'; - - @override - String get errorUrlFetchFailed => '이 링크에서 콘텐츠를 불러오는 데 실패하였습니다. 다시 시도해 주세요'; - - @override - String errorMissingExtensionSource(String item) { - return '\'\'$item\'\'을 불러올 수 없음: 확장 소스가 누락됨'; - } - - @override - String get actionPause => '일시 중지'; - - @override - String get actionResume => '계속'; - - @override - String get actionCancel => '취소'; - - @override - String get actionSelectAll => '모두 선택'; - - @override - String get actionDeselect => '선택 해제'; - - @override - String selectionSelected(int count) { - return '$count 개 선택됨'; - } - - @override - String get selectionAllSelected => '모든 트랙 선택됨'; - - @override - String get selectionSelectToDelete => '삭제할 트랙을 선택'; - - @override - String progressFetchingMetadata(int current, int total) { - return '메타데이터를 가져오는 중... $current/$total'; - } - - @override - String get progressReadingCsv => 'CSV 파일을 읽는 중...'; - - @override - String get searchSongs => '노래'; - - @override - String get searchArtists => '아티스트'; - - @override - String get searchAlbums => '앨범'; - - @override - String get searchPlaylists => '재생목록'; - - @override - String get searchSortTitle => '결과 정렬'; - - @override - String get searchSortDefault => '기본값'; - - @override - String get searchSortTitleAZ => '제목 (오름차순)'; - - @override - String get searchSortTitleZA => '제목 (내림차순)'; - - @override - String get searchSortArtistAZ => '아티스트 (오름차순)'; - - @override - String get searchSortArtistZA => '아티스트 (내림차순)'; - - @override - String get searchSortDurationShort => '재생시간 (짧은순)'; - - @override - String get searchSortDurationLong => '재생시간 (긴순)'; - - @override - String get searchSortDateOldest => '발매일자 (오래된순)'; - - @override - String get searchSortDateNewest => '발매일자 (최신순)'; - - @override - String get tooltipPlay => '재생'; - - @override - String get filenameFormat => '파일 이름 형식'; - - @override - String get filenameShowAdvancedTags => '고급 태그 표시'; - - @override - String get filenameShowAdvancedTagsDescription => - '트랙 패딩 및 날짜 패턴에 대한 서식 있는 태그를 활성화합니다'; - - @override - String get folderOrganizationNone => '정리하지 않음'; - - @override - String get folderOrganizationByPlaylist => '재생목록별'; - - @override - String get folderOrganizationByPlaylistSubtitle => '각 재생목록별 별도 폴더'; - - @override - String get folderOrganizationByArtist => '아티스트별'; - - @override - String get folderOrganizationByAlbum => '앨범별'; - - @override - String get folderOrganizationByArtistAlbum => '아티스트/앨범'; - - @override - String get folderOrganizationDescription => '다운로드된 파일을 폴더로 정리'; - - @override - String get folderOrganizationNoneSubtitle => '다운로드 폴더의 모든 파일'; - - @override - String get folderOrganizationByArtistSubtitle => '각 아티스트별 별도 폴더'; - - @override - String get folderOrganizationByAlbumSubtitle => '각 앨범별 별도 폴더'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => '아티스트 및 앨범용 중첩 폴더'; - - @override - String get updateAvailable => '업데이트 사용 가능'; - - @override - String get updateLater => '나중에'; - - @override - String get updateStartingDownload => '다운로드를 시작하는 중...'; - - @override - String get updateDownloadFailed => '다운로드 실패'; - - @override - String get updateFailedMessage => '업데이트 다운로드 실패'; - - @override - String get updateNewVersionReady => '새 버전이 준비되었습니다'; - - @override - String get updateRequiredTitle => '업데이트 필요'; - - @override - String updateRequiredNotice(int count) { - return '이 버전은 최신 버전보다 $count 개 이전 버전이며 더 이상 지원되지 않습니다. 앱을 계속 사용하려면 업데이트하세요'; - } - - @override - String get updateCurrent => '현재 버전'; - - @override - String get updateNew => '새 버전'; - - @override - String get updateDownloading => '다운로드하는 중...'; - - @override - String get updateWhatsNew => '새 기능'; - - @override - String get updateDownloadInstall => '다운로드 & 설치'; - - @override - String get updateDontRemind => '알림 안 함'; - - @override - String get providerPriorityTitle => '제공자 우선순위'; - - @override - String get providerPriorityDescription => - '드래그하여 다운로드 제공자 순서를 변경하세요. 앱은 트랙을 다운로드할 경우에 위에서 아래로 제공자를 차례로 시도합니다'; - - @override - String get providerPriorityInfo => - '첫 ​​번째 제공자에서 트랙을 사용할 수 없는 경우에 앱은 자동으로 다음 제공자를 시도합니다'; - - @override - String get providerPriorityFallbackExtensionsDescription => - '자동 대체 중에 사용할 수 있는 설치된 다운로드 확장 프로그램을 선택하세요'; - - @override - String get providerPriorityFallbackExtensionsHint => - '다운로드 공급자 기능이 활성화된 확장 프로그램만 여기에 나열됩니다'; - - @override - String get providerExtension => '확장 프로그램'; - - @override - String get metadataProviderPriorityTitle => '메타데이터 우선순위'; - - @override - String get metadataProviderPriorityDescription => - '드래그하여 메타데이터 제공자 순서를 변경하세요. 앱은 트랙을 검색하고 메타데이터를 가져올 경우에 위에서 아래로 제공자를 시도합니다'; - - @override - String get metadataProviderPriorityInfo => - 'Deezer는 요청 횟수 제한이 없으므로 기본 앱으로 사용하는 것이 좋습니다. Spotify는 요청 횟수가 많아지면 요청 횟수를 제한할 수 있습니다'; - - @override - String get logTitle => '로그'; - - @override - String get logCopied => '로그가 클립보드에 복사됨'; - - @override - String get logSearchHint => '로그 검색...'; - - @override - String get logFilterLevel => '레벨'; - - @override - String get logFilterSection => '필터'; - - @override - String get logShareLogs => '로그 공유'; - - @override - String get logClearLogs => '로그 지우기'; - - @override - String get logClearLogsTitle => '로그 지우기'; - - @override - String get logClearLogsMessage => '모든 로그를 지우시겠습니까?'; - - @override - String get logFilterBySeverity => '심각성에 따라 로그 분류'; - - @override - String get logNoLogsYet => '아직 로그 없음'; - - @override - String get logNoLogsYetSubtitle => '앱을 사용하는 동안에 로그가 여기에 표시됩니다'; - - @override - String logEntriesFiltered(int count) { - return '항목 ($count 개 필터됨)'; - } - - @override - String logEntries(int count) { - return '항목 ($count)'; - } - - @override - String get channelStable => '안정'; - - @override - String get channelPreview => '베타'; - - @override - String get sectionSearchSource => '검색 출처'; - - @override - String get sectionDownload => '다운로드'; - - @override - String get sectionPerformance => '성능'; - - @override - String get sectionApp => '앱'; - - @override - String get sectionData => '데이터'; - - @override - String get sectionDebug => '디버그'; - - @override - String get sectionService => '서비스'; - - @override - String get sectionAudioQuality => '오디오 음질'; - - @override - String get sectionFileSettings => '파일 설정'; - - @override - String get sectionLyrics => '가사'; - - @override - String get lyricsMode => '가사 설정'; - - @override - String get lyricsModeDescription => '다운로드된 파일에 가사를 저장하는 방법을 선택하세요'; - - @override - String get lyricsModeEmbed => '파일에 포함'; - - @override - String get lyricsModeEmbedSubtitle => 'FLAC 메타데이터 내에 저장됩니다'; - - @override - String get lyricsModeExternal => '외부 .lrc 파일'; - - @override - String get lyricsModeExternalSubtitle => '삼성 뮤직과 같은 플레이어용 별도 .lrc 파일'; - - @override - String get lyricsModeBoth => '둘 다'; - - @override - String get lyricsModeBothSubtitle => '.lrc 파일을 삽입하고 저장합니다'; - - @override - String get sectionColor => '색상'; - - @override - String get sectionTheme => '테마'; - - @override - String get sectionLayout => '레이아웃'; - - @override - String get sectionLanguage => '언어'; - - @override - String get appearanceLanguage => '앱 언어'; - - @override - String get settingsAppearanceSubtitle => '테마, 색상, 디스플레이'; - - @override - String get settingsDownloadSubtitle => '서비스, 음질, 대체'; - - @override - String get settingsExtensionsSubtitle => '다운로드 제공자 관리'; - - @override - String get settingsLogsSubtitle => '디버깅을 위한 앱 로그 보기'; - - @override - String get loadingSharedLink => '공유된 링크를 불러오는 중...'; - - @override - String get pressBackAgainToExit => '종료하려면 뒤로가기 버튼을 다시 탭하세요'; - - @override - String downloadAllCount(int count) { - return '모두 다운로드 ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 트랙', - one: '1 개의 트랙', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => '파일 경로 복사'; - - @override - String get trackRemoveFromDevice => '기기에서 제거'; - - @override - String get trackLoadLyrics => '가사 불러오기'; - - @override - String get trackMetadata => '메타데이터'; - - @override - String get trackFileInfo => '파일 정보'; - - @override - String get trackLyrics => '가사'; - - @override - String get trackFileNotFound => '파일을 찾을 수 없음'; - - @override - String get trackOpenInDeezer => 'Deezer에서 열기'; - - @override - String get trackOpenInSpotify => 'Spotify에서 열기'; - - @override - String get trackTrackName => '트랙 이름'; - - @override - String get trackArtist => '아티스트'; - - @override - String get trackAlbumArtist => '앨범 아티스트'; - - @override - String get trackAlbum => '앨범'; - - @override - String get trackTrackNumber => '트랙 번호'; - - @override - String get trackDiscNumber => '디스크 번호'; - - @override - String get trackDuration => '재생시간'; - - @override - String get trackAudioQuality => '오디오 음질'; - - @override - String get libraryQualityLabelFileFormat => 'File format'; - - @override - String get trackReleaseDate => '발매일자'; - - @override - String get trackGenre => '장르'; - - @override - String get trackLabel => '레이블'; - - @override - String get trackCopyright => '저작권'; - - @override - String get trackDownloaded => '다운로드됨'; - - @override - String get trackCopyLyrics => '가사 복사'; - - @override - String trackLyricsSource(String source) { - return '출처: $source'; - } - - @override - String get trackLyricsNotAvailable => '이 트랙의 가사를 사용할 수 없습니다'; - - @override - String get trackLyricsNotInFile => '이 파일에서 가사를 찾을 수 없습니다'; - - @override - String get trackFetchOnlineLyrics => '온라인에서 가져오기'; - - @override - String get trackLyricsTimeout => '요청 시간이 초과되었습니다. 나중에 다시 시도하세요'; - - @override - String get trackLyricsLoadFailed => '가사 불러오기 실패'; - - @override - String get trackEmbedLyrics => '가사 삽입'; - - @override - String get trackLyricsEmbedded => '가사 삽입 성공'; - - @override - String get trackInstrumental => '반주 트랙'; - - @override - String get trackCopiedToClipboard => '클립보드에 복사됨'; - - @override - String get trackDeleteConfirmTitle => '기기에서 제거하시겠습니까?'; - - @override - String get trackDeleteConfirmMessage => - '이렇게 하면 다운로드된 파일이 영구적으로 삭제되고 기록에서 제거됩니다'; - - @override - String get dateToday => '오늘'; - - @override - String get dateYesterday => '어제'; - - @override - String dateDaysAgo(int count) { - return '$count 일 전'; - } - - @override - String dateWeeksAgo(int count) { - return '$count 주 전'; - } - - @override - String dateMonthsAgo(int count) { - return '$count 달 전'; - } - - @override - String get storeFilterAll => '모두'; - - @override - String get storeFilterMetadata => '메타데이터'; - - @override - String get storeFilterDownload => '다운로드'; - - @override - String get storeFilterUtility => '유틸리티'; - - @override - String get storeFilterLyrics => '가사'; - - @override - String get storeFilterIntegration => '연동'; - - @override - String get storeClearFilters => '필터 지우기'; - - @override - String get storeAddRepoTitle => '확장 프로그램 레포지토리 추가'; - - @override - String get storeAddRepoDescription => - '확장 프로그램을 찾아보고 설치하려면 registry.json 파일이 포함된 GitHub 레포지토리 URL을 입력하세요'; - - @override - String get storeRepoUrlLabel => '레포지토리 URL'; - - @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; - - @override - String get storeAddRepoButton => '레포지토리 추가'; - - @override - String get storeChangeRepoTooltip => '레포지토리 변경'; - - @override - String get storeRepoDialogTitle => '확장 프로그램 레포지토리'; - - @override - String get storeRepoDialogCurrent => '현재 레포지토리:'; - - @override - String get storeNewRepoUrlLabel => '새 레포지토리 URL'; - - @override - String get storeLoadError => '레포지토리 불러오기 실패'; - - @override - String get storeEmptyNoExtensions => '사용 가능한 확장 프로그램이 없음'; - - @override - String get storeEmptyNoResults => '확장 프로그램을 찾을 수 없음'; - - @override - String get extensionId => 'ID'; - - @override - String get extensionError => '오류'; - - @override - String get extensionCapabilities => '기능'; - - @override - String get extensionMetadataProvider => '메타데이터 제공자'; - - @override - String get extensionDownloadProvider => '다운로드 제공자'; - - @override - String get extensionLyricsProvider => '가사 제공자'; - - @override - String get extensionUrlHandler => 'URL 핸들러'; - - @override - String get extensionQualityOptions => '음질 옵션'; - - @override - String get extensionPostProcessingHooks => '후처리 후크'; - - @override - String get extensionPermissions => '권한'; - - @override - String get extensionSettings => '설정'; - - @override - String get extensionRemoveButton => '확장 프로그램 제거'; - - @override - String get extensionUpdated => '업데이트됨'; - - @override - String get extensionMinAppVersion => '최소 앱 버전'; - - @override - String get extensionCustomTrackMatching => '사용자 정의 트랙 매칭'; - - @override - String get extensionPostProcessing => '후처리'; - - @override - String extensionHooksAvailable(int count) { - return '$count 개의 후크 사용 가능'; - } - - @override - String extensionPatternsCount(int count) { - return '$count 개의 패턴'; - } - - @override - String extensionStrategy(String strategy) { - return '전략: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => '제공자 우선순위'; - - @override - String get extensionsInstalledSection => '설치된 확장 프로그램'; - - @override - String get extensionsNoExtensions => '설치된 확장 프로그램이 없음'; - - @override - String get extensionsNoExtensionsSubtitle => - '새 제공자를 추가하려면 .spotiflac-ext 파일을 설치하세요'; - - @override - String get extensionsInstallButton => '확장 프로그램 설치'; - - @override - String get extensionsInfoTip => - '확장 프로그램은 새 메타데이터와 다운로드 제공자를 추가할 수 있습니다. 신뢰할 수 있는 출처에서만 확장 프로그램을 설치하세요'; - - @override - String get extensionsInstalledSuccess => '확장 프로그램 설치 성공'; - - @override - String extensionsInstalledCount(int count) { - return '$count 개의 확장 프로그램 설치 성공'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return '$attempted 개의 확장 프로그램 중 $installed 개가 설치됨'; - } - - @override - String get extensionsDownloadPriority => '다운로드 우선순위'; - - @override - String get extensionsDownloadPrioritySubtitle => '다운로드 서비스 순서를 설정하세요'; - - @override - String get extensionsFallbackTitle => '대체 확장 프로그램'; - - @override - String get extensionsFallbackSubtitle => - '설치된 다운로드 확장 프로그램 중 대체 프로그램으로 사용할 항목을 선택하세요'; - - @override - String get extensionsNoDownloadProvider => '다운로드 제공자가 있는 확장 프로그램가 없음'; - - @override - String get extensionsMetadataPriority => '메타데이터 우선순위'; - - @override - String get extensionsMetadataPrioritySubtitle => '검색 & 메타데이터 출처 순서 설정'; - - @override - String get extensionsNoMetadataProvider => '메타데이터 제공자가 있는 확장 프로그램이 없음'; - - @override - String get extensionsSearchProvider => '검색 제공자'; - - @override - String get extensionsNoCustomSearch => '사용자 정의 검색이 있는 확장 프로그램이 없음'; - - @override - String get extensionsSearchProviderDescription => '트랙 검색에 사용할 서비스를 선택하세요'; - - @override - String get extensionsCustomSearch => '사용자 정의 검색'; - - @override - String get extensionsErrorLoading => '확장 프로그램 불러오기 오류'; - - @override - String get qualityFlacLossless => 'FLAC 무손실'; - - @override - String get qualityFlacLosslessSubtitle => '16-bit / 44.1kHz'; - - @override - String get qualityHiResFlac => 'Hi-Res FLAC'; - - @override - String get qualityHiResFlacSubtitle => '24-bit / 최대 96kHz'; - - @override - String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-bit / 최대 192kHz'; - - @override - String get downloadLossy320 => '손실 압축 320kbps'; - - @override - String get downloadLossyFormat => '손실 압축 형식'; - - @override - String get downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => '손실 압축 320kbps 형식'; - - @override - String get downloadLossy320FormatDesc => - '320kbps 손실 다운로드의 출력 형식을 선택하세요. 필요에 따라 원본 스트림이 선택한 형식으로 변환됩니다'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => '최상의 호환성, 트랙당 약 10MB'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => '최상의 모바일 호환성, M4A 컨테이너'; - - @override - String get downloadLossyOpus256 => 'Opus 256kbps'; - - @override - String get downloadLossyOpus256Subtitle => '최고 음질 Opus, 트랙당 약 8MB'; - - @override - String get downloadLossyOpus128 => 'Opus 128kbps'; - - @override - String get downloadLossyOpus128Subtitle => '트랙당 최소 크기, 약 4MB'; - - @override - String get downloadAskBeforeDownload => '다운로드 전 확인'; - - @override - String get downloadDirectory => '다운로드 디렉토리'; - - @override - String get downloadSeparateSinglesFolder => '싱글 폴더 별도 다운로드'; - - @override - String get downloadAlbumFolderStructure => '앨범 폴더 구조'; - - @override - String get albumFolderStructureDescription => '앨범 폴더 구조를 선택하세요'; - - @override - String get downloadUseAlbumArtistForFolders => '폴더에 앨범 아티스트 사용'; - - @override - String get downloadUsePrimaryArtistOnly => '폴더에 기본 아티스트만 사용'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - '폴더 이름에서 피처링 아티스트가 제거됩니다 (예: Justin Bieber, Quavo → Justin Bieber)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - '폴더 이름에 전체 아티스트 문자열이 사용됩니다'; - - @override - String get downloadSelectQuality => '음질 선택'; - - @override - String get downloadFrom => '다운로드 제공자 선택'; - - @override - String get appearanceAmoledDark => '아몰레드 블랙'; - - @override - String get appearanceAmoledDarkSubtitle => '순수 검정 배경화면'; - - @override - String get appearanceHeroAnimations => '히어로 애니메이션'; - - @override - String get appearanceHeroAnimationsSubtitle => - '화면 간 이동 시 표지 이미지가 날아가는 애니메이션을 표시합니다 (예시: 플레이어를 실행할 경우)'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => '모두 지우기'; - - @override - String get queueClearAllMessage => '모든 다운로드를 지우시겠습니까?'; - - @override - String get settingsAutoExportFailed => '실패한 다운로드 자동 내보내기'; - - @override - String get settingsAutoExportFailedSubtitle => '실패한 다운로드를 TXT 파일으로 자동 저장합니다'; - - @override - String get settingsDownloadNetwork => '다운로드 네트워크'; - - @override - String get settingsDownloadNetworkAny => 'WiFi + 모바일 네트워크'; - - @override - String get settingsDownloadNetworkWifiOnly => 'WiFi 전용'; - - @override - String get settingsDownloadNetworkSubtitle => - '다운로드에 사용할 네트워크를 선택하세요. Wi-Fi 전용으로 설정하면 모바일 데이터 사용 시 다운로드가 일시 중지됩니다'; - - @override - String get settingsConcurrentDownloads => '동시 다운로드'; - - @override - String get settingsConcurrentDownloadsSubtitle => - '여러 트랙을 동시에 다운로드하면 속도는 빨라지지만, 일부 제공자는 동시 요청을 제한할 수 있습니다'; - - @override - String get concurrentDownloadsOne => '한 번에 1개의 트랙'; - - @override - String concurrentDownloadsCount(int count) { - return '한 번에 최대 $count 개의 트랙'; - } - - @override - String get albumFolderArtistAlbum => '아티스트 / 앨범'; - - @override - String get albumFolderArtistAlbumSubtitle => '앨범/아티스트 이름/앨범 이름/'; - - @override - String get albumFolderArtistYearAlbum => '아티스트 / [연도] 앨범'; - - @override - String get albumFolderArtistYearAlbumSubtitle => '앨범/아티스트 이름/[2005] 앨범 이름/'; - - @override - String get albumFolderAlbumOnly => '앨범만'; - - @override - String get albumFolderAlbumOnlySubtitle => '앨범/앨범 이름/'; - - @override - String get albumFolderYearAlbum => '[연도] 앨범'; - - @override - String get albumFolderYearAlbumSubtitle => '앨범/[2005] 앨범 이름/'; - - @override - String get albumFolderArtistAlbumSingles => '아티스트 / 앨범 + 싱글'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => '아티스트/앨범/ 및 아티스트/싱글/'; - - @override - String get albumFolderArtistAlbumFlat => '아티스트 / 앨범 (싱글 플랫)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => '아티스트/앨범/ 및 아티스트/song.flac'; - - @override - String get downloadedAlbumDeleteSelected => '선택 항목 삭제'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '앨범에서 $count 개의 $_temp0을 삭제하시겠습니까?\n\n저장소에서도 파일이 삭제됩니다'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return '$count 개 선택됨'; - } - - @override - String get downloadedAlbumTapToSelect => '트랙을 탭하여 선택하세요'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count $_temp0 삭제'; - } - - @override - String get downloadedAlbumSelectToDelete => '삭제할 트랙 선택'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return '디스크 $discNumber'; - } - - @override - String get recentTypeArtist => '아티스트'; - - @override - String get recentTypeAlbum => '앨범'; - - @override - String get recentTypeSong => '노래'; - - @override - String get recentTypePlaylist => '재생목록'; - - @override - String get recentEmpty => '최근 항목이 없음'; - - @override - String get recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @override - String get recentShowAllDownloads => '모든 다운로드 표시'; - - @override - String recentPlaylistInfo(String name) { - return '재생목록: $name'; - } - - @override - String get discographyDownload => '디스코그래피 다운로드'; - - @override - String get discographyDownloadAll => '모두 다운로드'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$albumCount 개의 발매 음악에서 $count 개의 트랙'; - } - - @override - String get discographyAlbumsOnly => '앨범만'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$albumCount 개의 앨범에서 $count 개의 트랙'; - } - - @override - String get discographySinglesOnly => '싱글 & EP만'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$albumCount 개의 싱글에서 $count 개의 트랙'; - } - - @override - String get discographySelectAlbums => '앨범 검색...'; - - @override - String get discographySelectAlbumsSubtitle => '특정 앨범 또는 싱글을 선택하세요'; - - @override - String get discographyFetchingTracks => '트랙을 가져오는 중...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return '$total 개 중 $current 개를 가져오는 중...'; - } - - @override - String discographySelectedCount(int count) { - return '$count 개 선택됨'; - } - - @override - String get discographyDownloadSelected => '선택 항목 다운로드'; - - @override - String discographyAddedToQueue(int count) { - return '다운로드 목록에 $count 개의 트랙이 추가됨'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added 개 추가됨, $skipped 개 이미 다운로드됨'; - } - - @override - String get discographyNoAlbums => '사용 가능한 앨범이 없음'; - - @override - String get discographyFailedToFetch => '일부 앨범 가져오기 실패'; - - @override - String get sectionStorageAccess => '저장소 접근'; - - @override - String get allFilesAccess => '모든 파일 접근'; - - @override - String get allFilesAccessEnabledSubtitle => '모든 폴더에 쓰기 가능'; - - @override - String get allFilesAccessDisabledSubtitle => '미디어 폴더에만 제한됨'; - - @override - String get allFilesAccessDescription => - '사용자 정의 폴더에 저장할 경우에 쓰기 오류가 발생하면 이 옵션을 활성화하세요. Android 13 이상에서는 기본적으로 특정 디렉터리에 대한 접근이 제한됩니다'; - - @override - String get allFilesAccessDeniedMessage => - '권한이 거부되었습니다. 시스템 설정에서 \'모든 파일 접근\'를 수동으로 활성화하세요'; - - @override - String get allFilesAccessDisabledMessage => - '모든 파일 접근을 비활성화하였습니다. 앱은 제한된 저장소 접근을 사용합니다'; - - @override - String get settingsLocalLibrary => '로컬 라이브러리'; - - @override - String get settingsLocalLibrarySubtitle => '음악 스캔 & 중복 감지'; - - @override - String get settingsCache => '저장소 & 캐시'; - - @override - String get settingsCacheSubtitle => '크기 보기 및 캐시된 데이터 지우기'; - - @override - String get libraryTitle => '로컬 라이브러리'; - - @override - String get libraryScanSettings => '스캔 설정'; - - @override - String get libraryEnableLocalLibrary => '로컬 라이브러리 활성화'; - - @override - String get libraryEnableLocalLibrarySubtitle => '기존 음악을 스캔하고 추적하세요'; - - @override - String get libraryFolder => '라이브러리 폴더'; - - @override - String get libraryFolderHint => '탭하여 폴더를 선택하세요'; - - @override - String get libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @override - String get libraryShowDuplicateIndicator => '중복 표시기 표시'; - - @override - String get libraryShowDuplicateIndicatorSubtitle => '기존 트랙을 검색할 때 표시'; - - @override - String get libraryAutoScan => '자동 스캔'; - - @override - String get libraryAutoScanSubtitle => '라이브러리에서 새 파일을 자동으로 스캔합니다'; - - @override - String get libraryAutoScanOff => '끄기'; - - @override - String get libraryAutoScanOnOpen => '앱을 열 때마다'; - - @override - String get libraryAutoScanDaily => '매일'; - - @override - String get libraryAutoScanWeekly => '주간'; - - @override - String get libraryActions => '작업'; - - @override - String get libraryScan => '라이브러리 스캔'; - - @override - String get libraryScanSubtitle => '오디오 파일 스캔'; - - @override - String get libraryScanSelectFolderFirst => '먼저 폴더를 선택하세요'; - - @override - String get libraryCleanupMissingFiles => '누락된 파일 정리'; - - @override - String get libraryCleanupMissingFilesSubtitle => - '더 이상 존재하지 않는 파일에 대한 항목을 제거합니다'; - - @override - String get libraryClear => '라이브러리 정리'; - - @override - String get libraryClearSubtitle => '스캔된 모든 트랙 제거'; - - @override - String get libraryClearConfirmTitle => '라이브러리 정리'; - - @override - String get libraryClearConfirmMessage => - '이렇게 하면 라이브러리에서 스캔된 모든 트랙이 제거됩니다. 실제 음악 파일은 삭제되지 않습니다'; - - @override - String get libraryAbout => '로컬 라이브러리에 대한 정보'; - - @override - String get libraryAboutDescription => - '기존 음악 라이브러리를 검사하여 다운로드 시 중복 곡을 감지합니다. FLAC, ALAC, M4A, MP3, Opus, OGG, WAV, AIFF 및 APE 형식을 지원합니다. 가능한 경우 파일 태그의 메타데이터를 읽어 사용합니다'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '파일', - one: '파일', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return '마지막 스캔 시간: $time'; - } - - @override - String get libraryLastScannedNever => '스캔한 적 없음'; - - @override - String get libraryScanning => '스캔하는 중...'; - - @override - String get libraryScanFinalizing => '라이브러리를 마무리하는 중...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$total 개의 파일 중 $progress%'; - } - - @override - String get libraryInLibrary => 'in 라이브러리'; - - @override - String libraryRemovedMissingFiles(int count) { - return '라이브러리에서 $count 개의 누락된 파일이 삭제됨'; - } - - @override - String get libraryCleared => '라이브러리가 초기화됨'; - - @override - String get libraryStorageAccessRequired => '저장소 접근 권한 필요'; - - @override - String get libraryStorageAccessMessage => - 'SpotifyFLAC은 음악 라이브러리를 스캔하기 위해 저장소 접근 권한이 필요합니다. 설정에서 권한을 부여해 주세요'; - - @override - String get libraryFolderNotExist => '선택한 폴더가 존재하지 않음'; - - @override - String get librarySourceDownloaded => '다운로드됨'; - - @override - String get librarySourceLocal => '로컬'; - - @override - String get libraryFilterAll => '모두'; - - @override - String get libraryFilterDownloaded => '다운로드됨'; - - @override - String get libraryFilterLocal => '로컬'; - - @override - String get libraryFilterTitle => '필터'; - - @override - String get libraryFilterReset => '초기화'; - - @override - String get libraryFilterApply => '적용'; - - @override - String get libraryFilterSource => '출처'; - - @override - String get libraryFilterQuality => '음질'; - - @override - String get libraryFilterQualityHiRes => 'Hi-Res (24bit)'; - - @override - String get libraryFilterQualityCD => 'CD (16bit)'; - - @override - String get libraryFilterQualityLossy => '손실 압축'; - - @override - String get libraryFilterFormat => '형식'; - - @override - String get libraryFilterMetadata => '메타데이터'; - - @override - String get libraryFilterMetadataComplete => '전체 메타데이터'; - - @override - String get libraryFilterMetadataMissingAny => '메타데이터 누락'; - - @override - String get libraryFilterMetadataMissingYear => '연도 누락'; - - @override - String get libraryFilterMetadataMissingGenre => '장르 누락'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => '앨범 아티스트 누락'; - - @override - String get libraryFilterSort => '정렬'; - - @override - String get libraryFilterSortLatest => '최신순'; - - @override - String get libraryFilterSortOldest => '오래된순'; - - @override - String get libraryFilterSortAlbumAsc => '앨범 (오름차순)'; - - @override - String get libraryFilterSortAlbumDesc => '앨범 (내림차순)'; - - @override - String get libraryFilterSortGenreAsc => '장르 (오름차순)'; - - @override - String get libraryFilterSortGenreDesc => '장르 (내림차순)'; - - @override - String get timeJustNow => '방금 전'; - - @override - String timeMinutesAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 분 전', - one: '1 분 전', - ); - return '$_temp0'; - } - - @override - String timeHoursAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 시간 전', - one: '1 시간 전', - ); - return '$_temp0'; - } - - @override - String get tutorialWelcomeTitle => 'SpotiFLAC Mobile에 오신 것을 환영합니다!'; - - @override - String get tutorialWelcomeDesc => - '좋아하는 음악을 무손실 음질로 다운로드하는 방법을 알아보겠습니다. 이 간단한 튜토리얼은 기본 사항을 보여줍니다'; - - @override - String get tutorialWelcomeTip1 => '설치된 확장 프로그램으로 검색하거나 지원되는 링크를 붙여넣으세요'; - - @override - String get tutorialWelcomeTip2 => - '설치된 다운로드 확장 프로그램으로 FLAC 고음질 오디오를 다운로드할 수 있습니다'; - - @override - String get tutorialWelcomeTip3 => '메타데이터, 표지 이미지 및 가사를 자동으로 추가할 수 있습니다'; - - @override - String get tutorialSearchTitle => '음악 찾기'; - - @override - String get tutorialSearchDesc => '다운로드하고 싶은 음악을 찾는 두 가지 쉬운 방법이 있습니다'; - - @override - String get tutorialDownloadTitle => '음악 다운로드'; - - @override - String get tutorialDownloadDesc => '음악 다운로드는 간단하고 빠릅니다\\n작동 방식은 다음과 같습니다'; - - @override - String get tutorialLibraryTitle => '내 라이브러리'; - - @override - String get tutorialLibraryDesc => '다운로드된 모든 음악은 라이브러리 탭에 정리되어 있습니다'; - - @override - String get tutorialLibraryTip1 => '라이브러리 탭에서 다운로드 진행 상황과 다운로드 목록을 확인할 수 있습니다'; - - @override - String get tutorialLibraryTip2 => '아무 트랙을 탭하여 음악 플레이어로 재생할 수 있습니다'; - - @override - String get tutorialLibraryTip3 => '리스트 보기 또는 그리드 보기로 전환하여 더 나은 탐색을 할 수 있습니다'; - - @override - String get tutorialExtensionsTitle => '확장 프로그램'; - - @override - String get tutorialExtensionsDesc => '커뮤니티 확장 프로그램을 사용하여 앱의 기능을 확장하세요'; - - @override - String get tutorialExtensionsTip1 => '레포 탭을 탐색하여 유용한 확장 프로그램을 찾을 수 있습니다'; - - @override - String get tutorialExtensionsTip2 => '새 다운로드 제공자 또는 검색 출처를 추가할 수 있습니다'; - - @override - String get tutorialExtensionsTip3 => '가사, 향상된 메타데이터 및 더 많은 기능을 사용할 수 있습니다'; - - @override - String get tutorialSettingsTitle => '사용자 환경 맞춤 설정'; - - @override - String get tutorialSettingsDesc => '설정에서 앱을 원하는 대로 맞춤 설정하세요'; - - @override - String get tutorialSettingsTip1 => '다운로드 위치 및 폴더 구성 변경'; - - @override - String get tutorialSettingsTip2 => '기본 오디오 음질 및 형식 설정'; - - @override - String get tutorialSettingsTip3 => '앱 테마 및 디자인 사용자 정의'; - - @override - String get tutorialReadyMessage => '모든 준비가 완료되었습니다! 지금 바로 좋아하는 음악을 다운로드하세요'; - - @override - String get libraryForceFullScan => '전제 스캔 강제 실행'; - - @override - String get libraryForceFullScanSubtitle => '캐시를 무시하고 모든 파일을 다시 스캔합니다'; - - @override - String get cleanupOrphanedDownloads => '불필요한 다운로드 파일 정리'; - - @override - String get cleanupOrphanedDownloadsSubtitle => - '더 이상 존재하지 않는 파일의 기록 항목을 제거합니다'; - - @override - String cleanupOrphanedDownloadsResult(int count) { - return '기록에서 $count 개의 불필요한 항목이 제거됨'; - } - - @override - String get cleanupOrphanedDownloadsNone => '불필요한 항목이 없습니다'; - - @override - String get cacheTitle => '저장소 & 캐시'; - - @override - String get cacheSummaryTitle => '캐시 요약'; - - @override - String get cacheSummarySubtitle => '캐시를 지워도 다운로드된 음악 파일은 삭제되지 않습니다'; - - @override - String cacheEstimatedTotal(String size) { - return '예상 캐시 사용량: $size'; - } - - @override - String get cacheSectionStorage => '캐시된 데이터'; - - @override - String get cacheSectionMaintenance => '유지 관리'; - - @override - String get cacheAppDirectory => '앱 캐시 디렉토리'; - - @override - String get cacheAppDirectoryDesc => 'HTTP 응답, WebView 데이터 및 기타 임시 앱 데이터입니다'; - - @override - String get cacheTempDirectory => '임시 디렉토리'; - - @override - String get cacheTempDirectoryDesc => '다운로드 및 오디오 변환으로 만들어진 임시 파일'; - - @override - String get cacheCoverImage => '표지 이미지 캐시'; - - @override - String get cacheCoverImageDesc => '다운로드된 앨범 및 트랙 표지 이미지입니다. 볼 때 다시 다운로드됩니다'; - - @override - String get cacheLibraryCover => '라이브러리 표지 캐시'; - - @override - String get cacheLibraryCoverDesc => - '로컬 음악 파일에서 추출된 표지 이미지입니다. 다음 스캔 시 다시 추출됩니다'; - - @override - String get libraryPlaybackNormalization => '볼륨 정규화'; - - @override - String get libraryPlaybackNormalizationSubtitle => - '트랙에 ReplayGain 또는 R128 태그가 있는 경우에 이를 사용하여 트랙 간 음량을 일정하게 맞춥니다'; - - @override - String get cacheAudioAnalysis => '오디오 분석 캐시'; - - @override - String get cacheAudioAnalysisDesc => - '저장된 스펙트로그램과 분석 결과입니다. 다음에 실행할 경우에 다시 분석합니다'; - - @override - String get cacheExploreFeed => '탐색 피드 캐시'; - - @override - String get cacheExploreFeedDesc => - '탐색 탭 콘텐츠(최신 발매 음악, 인기 콘텐츠)는 다음 방문 시 새로 고쳐집니다'; - - @override - String get cacheTrackLookup => '트랙 조회 캐시'; - - @override - String get cacheTrackLookupDesc => - '조회된 Spotify/Deezer 트랙 ID입니다. 지우면 속도가 느려질 수 있습니다'; - - @override - String get cacheCleanupUnusedDesc => - '누락된 파일에 대한 불필요한 다운로드 기록 및 라이브러리 항목을 제거합니다'; - - @override - String get cacheNoData => '캐시된 데이터가 없음'; - - @override - String cacheSizeWithFiles(String size, int count) { - return '$count 개의 파일에 $size 사용'; - } - - @override - String cacheSizeOnly(String size) { - return '$size'; - } - - @override - String cacheEntries(int count) { - return '$count 개의 항목'; - } - - @override - String cacheClearSuccess(String target) { - return '지워짐: $target'; - } - - @override - String get cacheClearConfirmTitle => '캐시를 지우시겠습니까?'; - - @override - String cacheClearConfirmMessage(String target) { - return '\'\'$target\'\'의 캐시된 데이터를 지웁니다. 다운로드된 음악 파일은 삭제되지 않습니다'; - } - - @override - String get cacheClearAllConfirmTitle => '모든 캐시를 지우시겠습니까?'; - - @override - String get cacheClearAllConfirmMessage => - '이 페이지의 모든 캐시 카테고리가 지워집니다. 다운로드된 음악 파일은 삭제되지 않습니다'; - - @override - String get cacheClearAll => '모든 캐시 지우기'; - - @override - String get cacheCleanupUnused => '사용되지 않는 데이터 정리'; - - @override - String get cacheCleanupUnusedSubtitle => '불필요한 다운로드 기록 및 누락된 라이브러리 항목을 제거합니다'; - - @override - String cacheCleanupResult(int downloadCount, int libraryCount) { - return '정리 완료: $downloadCount 개의 사용되지 않는 다운로드, $libraryCount 개의 누락된 라이브러리 항목'; - } - - @override - String get cacheRefreshStats => '통계 새로고침'; - - @override - String get trackSaveCoverArt => '표지 이미지 저장'; - - @override - String get trackSaveLyrics => '가사 (.lrc) 저장'; - - @override - String get trackSaveLyricsProgress => '가사를 저장하는 중...'; - - @override - String get trackReEnrich => '보강'; - - @override - String get trackReEnrichOnlineSubtitle => '온라인에서 메타데이터를 검색하고 파일에 삽입'; - - @override - String get trackReEnrichFieldCover => '표지 이미지'; - - @override - String get trackReEnrichFieldLyrics => '가사'; - - @override - String get trackReEnrichFieldBasicTags => '앨범, 앨범 아티스트'; - - @override - String get trackReEnrichFieldTrackInfo => '트랙 & 디스크 번호'; - - @override - String get trackReEnrichFieldReleaseInfo => '데이터 & ISRC'; - - @override - String get trackReEnrichFieldExtra => '장르, 레이블, 저작권'; - - @override - String get trackReEnrichSelectAll => '모두 선택'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @override - String get trackEditMetadata => '메타데이터 편집'; - - @override - String trackCoverSaved(String fileName) { - return '표지 이미지가 \'\'$fileName\'\'에 저장됨'; - } - - @override - String get trackCoverNoSource => '사용할 수 있는 표지 출처가 없음'; - - @override - String trackLyricsSaved(String fileName) { - return '가사가 \'\'$fileName\'\'에 저장됨'; - } - - @override - String get trackReEnrichProgress => '메타데이터를 다시 구성하는 중...'; - - @override - String get trackReEnrichSearching => '온라인에서 메타데이터를 검색하는 중...'; - - @override - String get trackReEnrichSuccess => '메타데이터 재구성 성공'; - - @override - String get trackReEnrichFfmpegFailed => 'FFmpeg 메타데이터 삽입 실패'; - - @override - String get queueFlacAction => 'FLAC 다운로드 목록'; - - @override - String queueFlacConfirmMessage(int count) { - return '선택한 트랙에 대한 온라인 일치 항목을 검색하고 FLAC을 다운로드 목록에 추가합니다\n\n기존 파일은 수정되거나 삭제되지 않습니다\n\n신뢰도가 높은 일치 항목만 자동으로 대기열에 추가됩니다\n\n$count 개가 선택되었습니다'; - } - - @override - String get queueFlacNoReliableMatches => - '선택한 항목에 대한 신뢰할 수 있는 온라인 일치 항목을 찾을 수 없음'; - - @override - String queueFlacQueuedWithSkipped(int addedCount, int skippedCount) { - return '다운로드 목록에 $addedCount 개의 트랙을 추가하고, $skippedCount 개의 트랙을 건너뜀'; - } - - @override - String trackSaveFailed(String error) { - return '실패: $error'; - } - - @override - String get trackConvertFormat => '형식 변환'; - - @override - String get trackConvertTitle => '오디오 변환'; - - @override - String get trackConvertTargetFormat => '변경될 형식'; - - @override - String get trackConvertBitrate => '비트레이트'; - - @override - String get trackConvertKeepOriginal => '원본 파일 유지'; - - @override - String get trackConvertKeepOriginalDescription => - '변환된 파일을 별도의 라이브러리 항목으로 추가합니다'; - - @override - String get trackConvertConfirmTitle => '변환 확인'; - - @override - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ) { - return '$bitrate 비트레이트로 $sourceFormat에서 $targetFormat으로 변환하시겠습니까?\n\n변환 후 원본 파일이 삭제됩니다'; - } - - @override - String trackConvertConfirmMessageLossless( - String sourceFormat, - String targetFormat, - ) { - return '$sourceFormat에서 $targetFormat으로 변환하시겠습니까? (무손실 — 음질 손실 없음)\n\n변환 후에 원본 파일이 삭제됩니다'; - } - - @override - String trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return '$sourceFormat에서 $targetFormat으로 변환하시겠습니까?\n\n원본 파일은 유지되고 변환된 파일은 별도의 라이브러리 항목으로 추가됩니다'; - } - - @override - String get trackConvertLosslessHint => '무손실 변환 — 음질 손실 없음'; - - @override - String get trackConvertConverting => '오디오를 변환하는 중...'; - - @override - String trackConvertSuccess(String format) { - return '$format으로 변환 성공'; - } - - @override - String get trackConvertFailed => '변환 실패'; - - @override - String get cueSplitTitle => 'CUE 시트 분할'; - - @override - String cueSplitAlbum(String album) { - return '앨범: $album'; - } - - @override - String cueSplitArtist(String artist) { - return '아티스트: $artist'; - } - - @override - String cueSplitTrackCount(int count) { - return '$count 개의 트랙'; - } - - @override - String get cueSplitConfirmTitle => 'CUE 앨범 분할'; - - @override - String cueSplitConfirmMessage(String album, int count) { - return '\'\'$album\'\'을 $count 개의 개별 FLAC 파일로 분할하시겠습니까?\n\n파일은 동일한 디렉토리에 저장됩니다'; - } - - @override - String cueSplitSplitting(int current, int total) { - return 'CUE 시트를 분할하는 중... ($current/$total)'; - } - - @override - String cueSplitSuccess(int count) { - return '$count 개의 트랙 분할 성공'; - } - - @override - String get cueSplitFailed => 'CUE 분할 실패'; - - @override - String get cueSplitNoAudioFile => '이 CUE 시트에 대한 오디오 파일을 찾을 수 없습니다'; - - @override - String get cueSplitButton => '트랙으로 분할'; - - @override - String get actionCreate => '만들기'; - - @override - String get collectionFoldersTitle => '내 폴더'; - - @override - String get collectionWishlist => '위시리스트'; - - @override - String get collectionLoved => '좋아요 표시한 음악'; - - @override - String get collectionFavoriteArtists => '좋아하는 아티스트'; - - @override - String get collectionPlaylist => '재생목록'; - - @override - String get collectionAddToPlaylist => '재생목록에 추가'; - - @override - String get collectionCreatePlaylist => '재생목록 만들기'; - - @override - String get collectionNoPlaylistsYet => '아직 재생목록이 없음'; - - @override - String collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 트랙', - one: '1 개의 트랙', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 명의 아티스트', - one: '1 명의 아티스트', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return '\'\'$playlistName\'\'에 추가됨'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return '이미 \'\'$playlistName\'\'에 있음'; - } - - @override - String get collectionPlaylistNameHint => '재생목록 이름'; - - @override - String get collectionPlaylistNameRequired => '재생목록 이름은 필수입니다'; - - @override - String get collectionRenamePlaylist => '재생목록 이름 변경'; - - @override - String get collectionDeletePlaylist => '재생목록 삭제'; - - @override - String get collectionPlaylistRenamed => '재생목록 이름 변경 완료'; - - @override - String get collectionWishlistEmptyTitle => '위시리스트가 비어 있음'; - - @override - String get collectionWishlistEmptySubtitle => - '나중에 다운로드할 트랙을 저장하려면 트랙에서 +를 탭하세요'; - - @override - String get collectionLovedEmptyTitle => '\'좋아요 표시한 음악\' 폴더가 비어 있음'; - - @override - String get collectionLovedEmptySubtitle => '트랙에 하트를 탭하여 \'좋아요\'를 유지하세요'; - - @override - String get collectionFavoriteArtistsEmptyTitle => '아직 좋아하는 아티스트가 없음'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - '아티스트 페이지에서 하트를 탭하여 여기에 추가하세요'; - - @override - String get collectionPlaylistEmptyTitle => '재생목록이 비어 있음'; - - @override - String get collectionPlaylistEmptySubtitle => '아무 트랙에서 +를 길게 탭하여 여기에 추가하세요'; - - @override - String get collectionRemoveFromPlaylist => '재생목록에서 제거'; - - @override - String get collectionRemoveFromFolder => '폴더에서 제거'; - - @override - String collectionAddedToLoved(String trackName) { - return '\'\'$trackName\'\'이 \'좋아요 표시한 음악\'에 추가됨'; - } - - @override - String collectionRemovedFromLoved(String trackName) { - return '\'\'$trackName\'\'이 \'좋아요 표시한 음악\'에서 제거됨'; - } - - @override - String collectionAddedToWishlist(String trackName) { - return '\'\'$trackName\'\'가 위시리스트에 추가됨'; - } - - @override - String collectionRemovedFromWishlist(String trackName) { - return '\'\'$trackName\'\'가 위시리스트에서 제거됨'; - } - - @override - String collectionAddedToFavoriteArtists(String artistName) { - return '\'\'$artistName\'\'가 좋아하는 아티스트에 추가됨'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\'\'$artistName\'\'가 좋아하는 아티스트에서 제거됨'; - } - - @override - String get trackOptionAddToLoved => '좋아요 표시한 음악에 추가'; - - @override - String get trackOptionRemoveFromLoved => '좋아요 표시한 음악에서 제거'; - - @override - String get trackOptionAddToWishlist => '위시리스트에 추가'; - - @override - String get trackOptionRemoveFromWishlist => '위시리스트에서 제거'; - - @override - String get artistOptionAddToFavorites => '즐겨찾는 아티스트에 추가'; - - @override - String get artistOptionRemoveFromFavorites => '즐겨찾는 아티스트에서 제거'; - - @override - String get collectionPlaylistChangeCover => '표지 이미지 변경'; - - @override - String get collectionPlaylistRemoveCover => '표지 이미지 제거'; - - @override - String selectionShareCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count $_temp0 공유'; - } - - @override - String get selectionShareNoFiles => '공유할 수 있는 파일을 찾을 수 없음'; - - @override - String selectionConvertCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count $_temp0 변환'; - } - - @override - String get selectionConvertNoConvertible => '선택된 변환할 수 있는 트랙이 없음'; - - @override - String get selectionBatchConvertConfirmTitle => '일괄 변환'; - - @override - String selectionBatchConvertConfirmMessage( - int count, - String format, - String bitrate, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count 개의 $_temp0을 $bitrate 비트레이트로 $format으로 변환하시겠습니까?\n\n변환 후 원본 파일이 삭제됩니다'; - } - - @override - String selectionBatchConvertConfirmMessageLossless(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count 개의 $_temp0을 $format으로 변환하시겠습니까? (무손실 — 음질 손실 없음)\n\n변환 후 원본 파일이 삭제됩니다'; - } - - @override - String selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count 개의 $_temp0을 $format으로 변환하시겠습니까?\n\n원본 파일은 유지되고 변환된 파일은 별도의 라이브러리 항목으로 추가됩니다'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return '$total 개 중 $success 개를 $format로 변환 완료'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count 개 다운로드됨'; - } - - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - '앨범 아티스트 태그로 이름이 지정된 폴더'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - '트랙 아티스트 태그로 이름이 지정된 폴더'; - - @override - String get lyricsProvidersTitle => '가사 제공자 우선순위'; - - @override - String get lyricsProvidersDescription => - '가사 출처를 활성화, 비활성화 및 재정렬할 수 있습니다. 가사가 발견될 때까지 위에서 아래로 제공자를 시도합니다'; - - @override - String get lyricsProvidersInfoText => - '확장 프로그램 가사 제공자는 내부 가사 제공자보다 먼저 실행됩니다. 하나 이상의 제공자가 활성화되어 있어야 합니다'; - - @override - String lyricsProvidersEnabledSection(int count) { - return '활성화됨 ($count)'; - } - - @override - String lyricsProvidersDisabledSection(int count) { - return '비활성화됨 ($count)'; - } - - @override - String get lyricsProvidersAtLeastOne => '최소 한 명의 제공자가 활성화된 상태로 유지되어야 합니다'; - - @override - String get lyricsProvidersSaved => '가사 제공자 우선순위가 저장됨'; - - @override - String get lyricsProvidersDiscardContent => '저장되지 않은 변경 사항이 손실됩니다'; - - @override - String get lyricsProviderLrclibDesc => '오픈 소스 동기화 가사 데이터베이스'; - - @override - String get lyricsProviderNeteaseDesc => 'NetEase Cloud Music (아시아 노래에 적합)'; - - @override - String get lyricsProviderMusixmatchDesc => '최대 규모의 가사 데이터베이스 (다국어 지원)'; - - @override - String get lyricsProviderAppleMusicDesc => '단어별 동기화 가사 (프록시 경유)'; - - @override - String get lyricsProviderQqMusicDesc => 'QQ Music (중국 노래에 적합, 프록시 경유)'; - - @override - String get lyricsProviderLyricsPlusDesc => - '단어별 노래방 가사 (Apple/Musixmatch/Spotify/QQ, 프록시 이용)'; - - @override - String get lyricsProviderExtensionDesc => '확장 프로그램 제공자'; - - @override - String get safMigrationTitle => '저장소 업데이트 필요'; - - @override - String get safMigrationMessage1 => - 'SpotiFLAC은 이제 다운로드에 Android 저장소 접근 프레임워크(SAF)를 사용합니다. 이로써 Android 10 이상에서 \'권한 거부\' 오류가 해결됩니다'; - - @override - String get safMigrationMessage2 => '새 저장소 시스템으로 전환하려면 다운로드 폴더를 다시 선택하세요'; - - @override - String get safMigrationSuccess => '다운로드 폴더가 SAF 모드로 업데이트됨'; - - @override - String get settingsDonate => '개발 후원'; - - @override - String get settingsDonateSubtitle => '개발자에게 커피 한 잔 사주세요'; - - @override - String get settingsBackup => '백업 & 복원'; - - @override - String get settingsBackupSubtitle => '라이브러리, 기록 및 설정을 새 기기로 옮겨보세요'; - - @override - String get backupTitle => '백업 & 복원'; - - @override - String get backupExportSectionTitle => '백업 생성'; - - @override - String get backupExportSectionDescription => - '설정, 다운로드 기록, 좋아요 표시한 음악, 위시리스트, 즐겨찾는 아티스트 및 재생목록을 하나의 파일로 저장하여 보관하거나 다른 휴대전화로 옮길 수 있습니다'; - - @override - String get backupExportButton => '백업 파일 생성'; - - @override - String get backupImportSectionTitle => '백업 복원'; - - @override - String get backupImportSectionDescription => - '데이터를 복원할 백업 파일을 선택하세요. 이 작업을 수행하면 현재 기기에 저장된 설정, 기록 및 라이브러리가 백업 파일의 내용으로 대체됩니다'; - - @override - String get backupImportButton => '백업 파일 선택'; - - @override - String get backupCreated => '백업 생성 완료'; - - @override - String get backupCreateFailed => '백업 생성 실패'; - - @override - String get backupRestoreConfirmTitle => '이 백업을 복원하시겠습니까?'; - - @override - String get backupRestoreConfirmMessage => - '현재 설정, 다운로드 기록, 좋아요 표시한 음악, 위시리스트 및 재생목록이 백업 파일의 내용으로 대체됩니다. 이 작업은 되돌릴 수 없습니다'; - - @override - String get backupRestoreConfirmButton => '복원'; - - @override - String get backupRestored => '백업 복원 성공'; - - @override - String get backupRestoreFailed => '백업 복원 실패'; - - @override - String get backupInvalidFile => '이 파일은 유효한 SpotiFLAC 백업이 아닙니다'; - - @override - String get backupRestoreRestartHint => '모든 변경 사항을 적용하려면 앱을 다시 시작하세요'; - - @override - String get backupContentsTitle => '백업 콘텐츠'; - - @override - String get backupContentsSettings => '앱 설정'; - - @override - String backupContentsHistory(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '항목', - one: '항목', - ); - return '$count 개의 기록 $_temp0'; - } - - @override - String backupContentsLiked(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '음악', - one: '음악', - ); - return '$count 개의 좋아요 표시한 $_temp0'; - } - - @override - String backupContentsWishlist(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count 개의 위시리스트 $_temp0'; - } - - @override - String backupContentsPlaylists(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 재생목록', - one: '1 개의 재생목록', - ); - return '$_temp0'; - } - - @override - String backupContentsArtists(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 명의 좋아하는 아티스트', - one: '1 명의 좋아하는 아티스트', - ); - return '$_temp0'; - } - - @override - String backupContentsExtensions(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 확장 프로그램', - one: '1 개의 확장 프로그램', - ); - return '$_temp0'; - } - - @override - String get backupIncludeSecrets => '확장 프로그램 자격 증명 포함'; - - @override - String get backupIncludeSecretsDescription => - '확장 프로그램의 토큰과 API 키가 백업 파일에 함께 저장됩니다. 백업 파일은 안전하게 보관하세요. 비활성화하면 복원 후 다시 입력해야 합니다'; - - @override - String backupExtensionsRestoreFailed(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '확장 프로그램', - one: '확장 프로그램', - ); - return '$count 개의 $_temp0을 다시 설치할 수 없습니다. 레포에서 수동으로 설치하세요'; - } - - @override - String get tooltipLoveAll => '모두 좋아요 표시'; - - @override - String get tooltipAddToPlaylist => '재생목록에 추가'; - - @override - String snackbarRemovedTracksFromLoved(int count) { - return '\'좋아요 표시한 음악\'에서 $count 개의 트랙이 제거됨'; - } - - @override - String snackbarAddedTracksToLoved(int count) { - return '\'좋아요 표시한 음악\'에 $count 개의 트랙이 추가됨'; - } - - @override - String get dialogDownloadAllTitle => '모두 다운로드'; - - @override - String dialogDownloadAllMessage(int count) { - return '$count 개의 트랙을 다운로드하시겠습니까?'; - } - - @override - String get homeSkipAlreadyDownloaded => '이미 다운로드된 노래 건너뛰기'; - - @override - String get homeGoToAlbum => '앨범으로 이동'; - - @override - String get homeAlbumInfoUnavailable => '앨범 정보를 사용할 수 없음'; - - @override - String get snackbarLoadingCueSheet => 'CUE 시트를 불러오는 중...'; - - @override - String get snackbarMetadataSaved => '메타데이터 저장 성공'; - - @override - String get snackbarFailedToEmbedLyrics => '가사 삽입 실패'; - - @override - String get snackbarFailedToWriteStorage => '저장소 다시 쓰기 실패'; - - @override - String snackbarError(String error) { - return '오류: $error'; - } - - @override - String get snackbarNoActionDefined => '이 버튼에 대해 정의된 작업이 없음'; - - @override - String get noTracksFoundForAlbum => '이 앨범에서 트랙을 찾을 수 없음'; - - @override - String get downloadLocationSubtitle => '다운로드된 트랙을 저장할 위치를 선택하세요'; - - @override - String get storageModeAppFolder => '앱 폴더 (추천)'; - - @override - String get storageModeAppFolderSubtitle => '기본적으로 Music/SpotiFLAC에 저장'; - - @override - String get storageModeSaf => '사용자 정의 폴더 (SAF)'; - - @override - String get storageModeSafSubtitle => 'SD 카드를 포함한 아무 폴더나 선택하세요'; - - @override - String get downloadFolderAccessLostTitle => '다운로드 폴더 접근 손실'; - - @override - String get downloadFolderAccessLostSubtitle => '폴더를 다시 선택할 때까지 다운로드할 수 없습니다'; - - @override - String get downloadFolderReselect => '폴더 다시 선택'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF 권한이 잘못되었거나 취소되었습니다. 설정에서 다운로드 위치를 다시 설정하세요'; - - @override - String get downloadErrorFolderAccessLost => - '다운로드 폴더 접근 권한이 없습니다. 설정에서 다운로드 폴더를 다시 설정하세요'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return '\'\'$artist\'\', \'\'$title\'\', \'\'$album\'\', \'\'$track\'\', \'\'$year\'\', \'\'$date\'\', \'\'$disc\'\'를 자리표시자로 사용하세요'; - } - - @override - String get downloadFilenameInsertTag => '태그를 삽입하려면 탭하세요:'; - - @override - String get downloadSeparateSinglesEnabled => '싱글과 EP를 별도의 폴더에 저장합니다'; - - @override - String get downloadSeparateSinglesDisabled => '싱글과 앨범을 같은 폴더에 저장합니다'; - - @override - String get downloadArtistNameFilters => '아티스트 이름 필터'; - - @override - String get downloadCreatePlaylistSourceFolder => '재생목록 소스 폴더'; - - @override - String get downloadCreatePlaylistSourceFolderEnabled => - '각 재생 목록에 대한 하위 폴더를 만듭니다'; - - @override - String get downloadCreatePlaylistSourceFolderDisabled => - '모든 트랙을 다운로드 폴더에 직접 저장합니다'; - - @override - String get downloadCreatePlaylistSourceFolderRedundant => '폴더 구성 설정에 의해 처리됨'; - - @override - String get downloadSongLinkRegion => 'SongLink 지역'; - - @override - String get downloadNetworkCompatibilityMode => '네트워크 호환 모드'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - '레거시 HTTP 엔드포인트 허용; TLS 검증은 계속 활성화됨'; - - @override - String get downloadNetworkCompatibilityModeDisabled => '표준 ​​네트워크 설정 사용'; - - @override - String get downloadAllowLocalNetwork => '로컬 네트워크 접근 허용'; - - @override - String get downloadAllowLocalNetworkEnabled => - '로컬/사설 주소에 대한 요청이 허용됨 (로컬 프록시 또는 사용자 지정 DNS용)'; - - @override - String get downloadAllowLocalNetworkDisabled => '보안을 위해 로컬/사설 주소가 차단됨'; - - @override - String get downloadSelectServiceToEnable => - '이 옵션을 활성화하려면 음질 옵션이 있는 공급자를 선택하세요'; - - @override - String get downloadEmbedLyricsDisabled => '먼저 메타데이터 삽입을 활성화하세요'; - - @override - String get downloadNeteaseIncludeTranslation => 'Netease: 번역 포함'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => '중국어 번역 포함'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => '원본 가사만'; - - @override - String get downloadNeteaseIncludeRomanization => 'Netease: 로마자 표기 포함'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => '로마자 표기 포함'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => '로마자 표기 없음'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: 다인용 가사'; - - @override - String get downloadAppleQqMultiPersonEnabled => '듀엣 및 그룹 트랙이 포함된 스피커 레이블'; - - @override - String get downloadAppleQqMultiPersonDisabled => '스피커 레이블이 없는 표준 가사'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC 단어 동기화'; - - @override - String get downloadAppleElrcWordSyncEnabled => '단어별 타임스탬프 원본 유지'; - - @override - String get downloadAppleElrcWordSyncDisabled => '더 안전한 Apple Music 가사 (줄 단위)'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch 언어'; - - @override - String get downloadMusixmatchLanguageAuto => '자동 (원본 언어)'; - - @override - String get downloadFilterContributing => '참여 아티스트 필터'; - - @override - String get downloadFilterContributingEnabled => '앨범 아티스트 폴더 이름에서 제거된 참여 아티스트'; - - @override - String get downloadFilterContributingDisabled => '전체 앨범 아티스트 문자열 사용'; - - @override - String get downloadProvidersNoneEnabled => '활성화된 제공자가 없음'; - - @override - String get downloadMusixmatchLanguageCode => '언어 코드'; - - @override - String get downloadMusixmatchLanguageHint => '예시: en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Musixmatch에서 번역된 가사를 요청하려면 BCP-47 언어 코드를 입력하세요 (예시: ko, en, ja)'; - - @override - String get downloadMusixmatchAuto => '자동'; - - @override - String get downloadNetworkAnySubtitle => 'Wi-Fi 또는 모바일 네트워크 사용'; - - @override - String get downloadNetworkWifiOnlySubtitle => '모바일 네트워크 사용 시 다운로드 일시 중지'; - - @override - String get downloadSongLinkRegionDesc => - 'SongLink를 통해 트랙 링크를 해결할 경우에 사용되는 지역입니다. 스트리밍 서비스를 이용할 수 있는 국가를 선택하세요'; - - @override - String get snackbarUnsupportedAudioFormat => '지원되지 않는 오디오 형식'; - - @override - String get cacheRefresh => '새로고침'; - - @override - String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount) { - String _temp0 = intl.Intl.pluralLogic( - playlistCount, - locale: localeName, - other: '재생록록', - one: '재생목록', - ); - String _temp1 = intl.Intl.pluralLogic( - trackCount, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$playlistCount 개의 $_temp0에서 $trackCount 개의 $_temp1을 다운로드하시겠습니까?'; - } - - @override - String bulkDownloadPlaylistsButton(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '재생목록', - one: '재생목록', - ); - return '$count 개의 $_temp0 다운로드'; - } - - @override - String get bulkDownloadSelectPlaylists => '다운로드할 재생목록 선택'; - - @override - String get snackbarSelectedPlaylistsEmpty => '선택한 재생목록에 트랙이 없습니다'; - - @override - String playlistsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 재생목록', - one: '1 개의 재생목록', - ); - return '$_temp0'; - } - - @override - String get editMetadataAutoFill => '온라인에서 자동 채우기'; - - @override - String get editMetadataAutoFillDesc => '온라인 메타데이터에서 자동으로 채워질 필드를 선택하세요'; - - @override - String get editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @override - String get editMetadataAutoFillFetch => '가져오기 & 채우기'; - - @override - String get editMetadataAutoFillSearching => '온라인에서 검색하는 중...'; - - @override - String get editMetadataAutoFillNoResults => '온라인에서 일치하는 메타데이터를 찾을 수 없음'; - - @override - String editMetadataAutoFillDone(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '필드', - one: '필드', - ); - return '온라인 메타데이터로부터 $count 개의 $_temp0가 채워짐'; - } - - @override - String get editMetadataAutoFillNoneSelected => '자동 채우기를 위해 하나 이상의 필드를 선택하세요'; - - @override - String get editMetadataFieldTitle => '제목'; - - @override - String get editMetadataFieldArtist => '아티스트'; - - @override - String get editMetadataFieldAlbum => '앨범'; - - @override - String get editMetadataFieldAlbumArtist => '앨범 아티스트'; - - @override - String get editMetadataFieldDate => '날짜'; - - @override - String get editMetadataFieldTrackNum => '트랙 #'; - - @override - String get editMetadataFieldDiscNum => '디스크 #'; - - @override - String get editMetadataFieldGenre => '장르'; - - @override - String get editMetadataFieldIsrc => 'ISRC'; - - @override - String get editMetadataFieldLabel => '레이블'; - - @override - String get editMetadataFieldCopyright => '저작권'; - - @override - String get editMetadataFieldCover => '표지 이미지'; - - @override - String get editMetadataSelectAll => '모두'; - - @override - String get editMetadataSelectEmpty => '비어 있음만'; - - @override - String queueDownloadingCount(int count) { - return '다운로드하는 중 ($count)'; - } - - @override - String get queueFilteringIndicator => '필터링하는 중...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 트랙', - one: '1 개의 트랙', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 앨범', - one: '1 개의 앨범', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => '앨범 다운로드가 없음'; - - @override - String get queueEmptyAlbumsSubtitle => '앨범에서 여러 트랙을 다운로드하면 여기에 표시됩니다'; - - @override - String get queueEmptySingles => '싱글 다운로드가 없음'; - - @override - String get queueEmptySinglesSubtitle => '싱글 트랙 다운로드는 여기에 표시됩니다'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => '다운로드 기록이 없음'; - - @override - String get queueEmptyHistorySubtitle => '다운로드된 트랙이 여기에 표시됩니다'; - - @override - String get selectionAllPlaylistsSelected => '모든 재생목록이 선택됨'; - - @override - String get selectionTapPlaylistsToSelect => '선택할 재생목록을 탭하세요'; - - @override - String get selectionSelectPlaylistsToDelete => '삭제할 재생 목록 선택'; - - @override - String get audioAnalysisTitle => '오디오 음질 분석'; - - @override - String get audioAnalysisDescription => '스펙트럼 분석으로 무손실 음질을 확인합니다'; - - @override - String get audioAnalysisAnalyzing => '오디오를 분석하는 중...'; - - @override - String get audioAnalysisSampleRate => '샘플링 레이트'; - - @override - String get audioAnalysisCodec => '코덱'; - - @override - String get audioAnalysisContainer => '컨테이너'; - - @override - String get audioAnalysisDecodedFormat => '디코딩 형식'; - - @override - String get audioAnalysisBitDepth => '비트 심도'; - - @override - String get audioAnalysisChannels => '채널'; - - @override - String get audioAnalysisDuration => '재생시간'; - - @override - String get audioAnalysisNyquist => '나이퀴스트'; - - @override - String get audioAnalysisFileSize => '크기'; - - @override - String get audioAnalysisDynamicRange => '다이나믹 레인지'; - - @override - String get audioAnalysisPeak => '최대 피크'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => '트루 피크'; - - @override - String get audioAnalysisClipping => '클리핑'; - - @override - String get audioAnalysisNoClipping => '클리핑 없음'; - - @override - String get audioAnalysisSpectralCutoff => '주파수 컷오프'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => '채널별 통계'; - - @override - String get audioAnalysisSamples => '샘플'; - - @override - String get audioAnalysisRescan => '다시 분석'; - - @override - String get audioAnalysisRescanning => '오디오를 다시 분석하는 중...'; - - @override - String get extensionsHomeFeedProvider => '홈 피드 제공자'; - - @override - String get extensionsHomeFeedDescription => - '메인 화면에 홈 피드를 제공하는 확장 프로그램을 선택하세요'; - - @override - String get extensionsHomeFeedAuto => '자동'; - - @override - String get extensionsHomeFeedAutoSubtitle => '사용 가능한 최적의 항목을 자동으로 선택합니다'; - - @override - String get extensionsHomeFeedOff => '끄기'; - - @override - String get extensionsHomeFeedOffSubtitle => '메인 화면에 홈 피드를 표시하지 않습니다'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return '$extensionName 홈 피드 사용'; - } - - @override - String get extensionsNoHomeFeedExtensions => '홈 피드가 있는 확장 프로그램가 없음'; - - @override - String get cancelDownloadTitle => '다운로드를 취소하시겠습니까?'; - - @override - String cancelDownloadContent(String trackName) { - return '\'\'$trackName\'\'에 대한 활성 다운로드를 취소합니다'; - } - - @override - String get cancelDownloadKeep => '유지'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => 'FFmpeg를 통해 메타데이터 저장 실패'; - - @override - String get metadataSaveFailedStorage => '저장소에 메타데이터 다시 쓰기 실패'; - - @override - String snackbarFolderPickerFailed(String error) { - return '폴더 선택기 열기 실패: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return '\'\'$trackName\'\'를 다운로드하는 중'; - } - - @override - String notifFinalizingTrack(String trackName) { - return '\'\'$trackName\'\'를 마무리하는 중'; - } - - @override - String get notifEmbeddingMetadata => '메타데이터를 삽입하는 중...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return '이미 라이브러리에 있음 ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => '이미 라이브러리에 있음'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return '다운로드 완료 ($completed/$total)'; - } - - @override - String get notifDownloadComplete => '다운로드 완료'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return '다운로드 완료 ($completed 개 완료, $failed 개 실패)'; - } - - @override - String get notifVerificationRequiredTitle => '인증 필요'; - - @override - String get notifVerificationRequiredBody => '앱을 실행하여 인증을 완료하고 다운로드를 재개하세요'; - - @override - String get notifAllDownloadsComplete => '모든 다운로드 완료'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 트랙 다운로드 성공', - one: '1 개의 트랙 다운로드 성공', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed 개의 트랙 다운로드 성공', - one: '1 개의 트랙 다운로드 성공', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed 개 실패', - one: '1 개 실패', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => '다운로드 취소됨'; - - @override - String notifDownloadsCanceledBody(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count 개의 다운로드가 사용자에 의해 취소됨', - one: '1 개의 다운로드가 사용자에 의해 취소됨', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => '로컬 라이브러리를 스캔하는 중'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total 개의 파일 • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned 게의 파일이 스캔됨 • $percentage%'; - } - - @override - String get notifLibraryScanComplete => '라이브러리 스캔 완료'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count 개의 트랙이 색인됨'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count 개가 제외됨'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count 개의 오류'; - } - - @override - String get notifLibraryScanFailed => '라이브러리 스캔 실패'; - - @override - String get notifLibraryScanCancelled => '라이브러리 스캔이 취소됨'; - - @override - String get notifLibraryScanStopped => '스캔이 완료되기 전에 중단되었습니다'; - - @override - String notifDownloadingUpdate(String version) { - return 'SpotiFLAC Mobile v$version을 다운로드하는 중'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => '업데이트 준비 완료'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version 다운로드 완료. 설치하려면 탭하세요'; - } - - @override - String get notifUpdateFailed => '업데이트 실패'; - - @override - String get notifUpdateFailedBody => '업데이트를 다운로드할 수 없습니다. 나중에 다시 시도하세요'; - - @override - String get searchTracks => '트랙'; - - @override - String get homeSearchHintDefault => '지원되는 URL을 붙여넣거나 검색...'; - - @override - String homeSearchHintProvider(String providerName) { - return '$providerName으로 검색...'; - } - - @override - String get homeImportCsvTooltip => 'CSV 가져오기'; - - @override - String get homeChangeSearchProviderTooltip => '검색 제공자 변경'; - - @override - String get actionPaste => '붙여넣기'; - - @override - String get tutorialSearchHint => '붙여넣기 또는 검색하기...'; - - @override - String get tutorialDownloadCompletedSemantics => '다운로드 완료'; - - @override - String get tutorialDownloadInProgressSemantics => '다운로드를 진행하는 중'; - - @override - String get tutorialStartDownloadSemantics => '다운로드 시작'; - - @override - String get optionsEmbedMetadata => '메타데이터 삽입'; - - @override - String get optionsEmbedMetadataSubtitleOn => '메타데이터, 표지 이미지 및 내장 가사를 파일에 기록'; - - @override - String get optionsEmbedMetadataSubtitleOff => '비활성화됨 (고급): 모든 메타데이터 삽입 건너뛰기'; - - @override - String get trackCoverNoEmbeddedArt => '내장된 표지 이미지가 없음'; - - @override - String get trackCoverReplace => '표지 교체'; - - @override - String get trackCoverPick => '표지 선택'; - - @override - String get trackCoverClearSelected => '선택된 표지 지우기'; - - @override - String get trackCoverCurrent => '현재 표지'; - - @override - String get trackCoverSelected => '선택된 표지'; - - @override - String get trackCoverReplaceNotice => '저장을 탭하면 선택한 표지가 현재 내장된 표지를 대체합니다'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => '중지'; - - @override - String get queueFinalizingDownload => '다운로드를 마무리하는 중'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => '다운로드된 파일이 없음'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => '다운로드 완료'; - - @override - String get queueRateLimitTitle => '서비스 사용 제한됨'; - - @override - String get queueRateLimitMessage => - '이 트랙은 아직 사용 가능할 수 있습니다. 몇 분 기다렸다가 병렬 다운로드를 줄인 후에 다시 시도하세요'; - - @override - String appearanceSelectAccentColor(String hex) { - return '강조 색상 $hex 선택'; - } - - @override - String get logAutoScrollOn => '자동 스크롤: ON'; - - @override - String get logAutoScrollOff => '자동 스크롤: OFF'; - - @override - String get logCopyLogs => '로그 복사'; - - @override - String get logClearSearch => '로그 지우기'; - - @override - String get logIssueIspBlockingLabel => 'ISP 차단 감지됨'; - - @override - String get logIssueIspBlockingDescription => 'ISP에서 다운로드 서비스 접속을 차단했을 수 있습니다'; - - @override - String get logIssueIspBlockingSuggestion => - 'VPN을 사용하거나 DNS를 1.1.1.1 또는 8.8.8.8로 변경해 보세요'; - - @override - String get logIssueRateLimitedLabel => '사용 제한'; - - @override - String get logIssueRateLimitedDescription => '서비스에 대한 요청이 너무 많습니다'; - - @override - String get logIssueRateLimitedSuggestion => '몇 분 기다린 후에 다시 시도하세요'; - - @override - String get logIssueNetworkErrorLabel => '네트워크 오류'; - - @override - String get logIssueNetworkErrorDescription => '연결 문제가 감지됨'; - - @override - String get logIssueNetworkErrorSuggestion => '인터넷 연결 상태를 확인하세요'; - - @override - String get logIssueTrackNotFoundLabel => '트랙을 찾을 수 없음'; - - @override - String get logIssueTrackNotFoundDescription => '일부 트랙은 다운로드 서비스에서 찾을 수 없습니다'; - - @override - String get logIssueTrackNotFoundSuggestion => '트랙이 무손실 음질로 제공되지 않을 수 있습니다'; - - @override - String get clickableLookingUpArtist => '아티스트를 검색하는 중...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type 정보를 사용할 수 없음'; - } - - @override - String get extensionDetailsTags => '태그'; - - @override - String get extensionDetailsInformation => '정보'; - - @override - String get extensionUtilityFunctions => '유틸리티 함수'; - - @override - String get actionDismiss => '닫기'; - - @override - String get setupChangeFolderTooltip => '폴더 변경'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return '\'\'$artistName\'\'의 트랙 \'\'$trackName\'\' 열기'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return '$itemType $name 열기'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '항목', - one: '항목', - ); - return '$title, $count 개의 $_temp0 열기'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return '\'\'$artistName\'\'의 앨범 \'\'$albumName\'\' 열기 ($trackCount 번째 곡)'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '\'\'$artistName\'\'의 \'\'$trackName\'\''; - } - - @override - String a11ySelectAlbum(String albumName) { - return '앨범 \'\'$albumName\'\' 선택'; - } - - @override - String a11yOpenAlbum(String albumName) { - return '앨범 \'\'$albumName\'\' 열기'; - } - - @override - String get settingsFiles => '파일 & 폴더'; - - @override - String get settingsFilesSubtitle => '다운로드 위치, 파일 이름, 폴더 구조'; - - @override - String get settingsMetadata => '메타데이터'; - - @override - String get settingsMetadataSubtitle => '표지 이미지, 태그, 리플레이게인, 제공자'; - - @override - String get settingsLyrics => '가사'; - - @override - String get settingsLyricsSubtitle => '삽입, 모드, 제공자, 언어 옵션'; - - @override - String get settingsApp => '앱'; - - @override - String get settingsAppSubtitle => '업데이트, 데이터, 확장프로그램 레포, 디버그'; - - @override - String get sectionMetadataProviders => '제공자'; - - @override - String get sectionDuplicates => '중복'; - - @override - String get sectionLyricsProviderOptions => '제공자 옵션'; - - @override - String get metadataProvidersTitle => '메타데이터 제공자 우선순위'; - - @override - String get metadataProvidersSubtitle => '드래그하여 검색 및 메타데이터 출처 순서를 설정하세요'; - - @override - String get downloadDeduplication => '중복 다운로드 건너뛰기'; - - @override - String get downloadDeduplicationEnabled => '이미 다운로드된 트랙은 건너뜁니다'; - - @override - String get downloadDeduplicationWithQualityVariants => '선택된 음질의 기존 파일은 건너뜁니다'; - - @override - String get downloadDeduplicationDisabled => '기록과 관계없이 모든 트랙이 다운로드됩니다'; - - @override - String get downloadQualityVariants => '다양한 음질 버전 허용'; - - @override - String get downloadQualityVariantsDescription => - '각 음질 버전을 유지하고, 같은 이름이 이미 사용 중일 때만 측정된 음질을 파일 이름에 추가합니다'; - - @override - String get trackOptionDownloadQualityVariant => '다른 음질 다운로드'; - - @override - String get downloadFallbackExtensions => '대체 확장 프로그램'; - - @override - String get downloadFallbackExtensionsSubtitle => - '대체 확장 프로그램으로 사용할 확장 프로그램을 선택하세요'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD 또는 YYYY'; - - @override - String get editMetadataFieldTrackTotal => '전체 트랙 수'; - - @override - String get editMetadataFieldDiscTotal => '전체 디스크 수'; - - @override - String get editMetadataFieldComposer => '작곡가'; - - @override - String get editMetadataFieldComment => '주석'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => '고급'; - - @override - String get libraryFilterMetadataMissingTrackNumber => '트랙 번호 누락'; - - @override - String get libraryFilterMetadataMissingDiscNumber => '디스크 번호 누락'; - - @override - String get libraryFilterMetadataMissingArtist => '아티스트 누락'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => 'ISRC 형식이 잘못됨'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => '레이블 누락'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '재생목록', - one: '재생목록', - ); - return '$count 개의 $_temp0을 삭제하시겠습니까?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '재생목록', - one: '재생목록', - ); - return '$count 개의 $_temp0이 삭제됨'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '\'\'$playlistName\'\'에 $count 개의 $_temp0이 추가됨'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '\'\'$playlistName\'\'에 $count 개의 $_temp0이 추가됨 ($alreadyCount 개의 트랙은 이미 재생목록에 있음)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '항목', - one: '항목', - ); - return '$count 개의 $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return '메타데이터 재구성 성공 ($successCount/$total) - 실패: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count $_temp0 삭제'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return '다운로드하는 중 - $speed MB/s'; - } - - @override - String get queueDownloadStarting => '시작하는 중...'; - - @override - String get queueCheckingDownloadSession => '다운로드 세션을 확인하는 중...'; - - @override - String get queueResolvingDownloadMetadata => '트랙 메타데이터를 확인하는 중...'; - - @override - String get queueResolvingDownloadStream => '오디오 스트림을 준비하는 중...'; - - @override - String get queueWaitingForVerification => '확인을 기다리는 중...'; - - @override - String get queueResumingAfterVerification => '확인 후 재개하는 중...'; - - @override - String get a11ySelectTrack => '트랙 선택'; - - @override - String get a11yDeselectTrack => '트랙 선택 해제'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return '\'\'$artistName\'\'의 \'\'$trackName\'\' 재생'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '확장 프로그램', - one: '확장 프로그램', - ); - return '$count 개의 $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'v$version 이상 필요'; - } - - @override - String get actionGo => '이동'; - - @override - String get logIssueSummary => '문제 요약'; - - @override - String logTotalErrors(int count) { - return '총 오류 수: $count'; - } - - @override - String logAffectedDomains(String domains) { - return '영향받은 도메인: $domains'; - } - - @override - String get libraryScanCancelled => '스캔이 취소됨'; - - @override - String get libraryScanCancelledSubtitle => '준비가 되면 스캔을 다시 시도할 수 있습니다'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '다운로드 기록에서 $count 개 (목록에서 제외됨)'; - } - - @override - String get downloadNativeWorker => '기본 다운로드 워커'; - - @override - String get downloadNativeWorkerSubtitle => - '확장 프로그램 다운로드를 위한 Android 백그라운드 서비스'; - - @override - String get extensionServiceStatus => '서비스 상태'; - - @override - String get extensionServiceHealth => '서비스 상태'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '검사', - one: '검사', - ); - return '$count 개의 $_temp0가 설정됨'; - } - - @override - String get extensionOauthConnectHint => 'Spotify에 연결을 탭하여 이 필드를 채우세요'; - - @override - String extensionLastChecked(String time) { - return '마지막 확인 시간: $time'; - } - - @override - String get extensionRefreshStatus => '상태 새로고침'; - - @override - String get extensionCustomUrlHandling => '사용자 정의 URL 처리'; - - @override - String get extensionCustomUrlHandlingSubtitle => - '이 확장 프로그램은 다음 사이트의 링크를 처리할 수 있습니다'; - - @override - String get extensionCustomUrlHandlingShareHint => - '이 사이트의 링크를 SpotiFLAC Mobile로 공유하면 이 확장 프로그램이 처리합니다'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '설정', - one: '설정', - ); - return '$count 개의 $_temp0'; - } - - @override - String get extensionHealthOnline => '온라인'; - - @override - String get extensionHealthDegraded => '저하됨'; - - @override - String get extensionHealthOffline => '오프라인'; - - @override - String get extensionHealthNotConfigured => '설정되지 않음'; - - @override - String get extensionHealthUnknown => '알 수 없음'; - - @override - String get extensionHealthRequired => '필수'; - - @override - String get extensionSettingNotSet => '설정되지 않음'; - - @override - String get extensionActionFailed => '작업 실패'; - - @override - String get extensionEnterValue => '값을 입력하세요'; - - @override - String get extensionHealthServiceOnline => '서비스 온라인'; - - @override - String get extensionHealthServiceDegraded => '서비스 저하됨'; - - @override - String get extensionHealthServiceOffline => '서비스 오프라인'; - - @override - String get extensionHealthServiceUnknown => '서비스 상태 알 수 없음'; - - @override - String get audioAnalysisStereo => '스테레오'; - - @override - String get audioAnalysisMono => '모노'; - - @override - String trackOpenInService(String serviceName) { - return '$serviceName에서 열기'; - } - - @override - String get trackLyricsEmbeddedSource => '내장'; - - @override - String get unknownAlbum => '알 수 없는 앨범'; - - @override - String get unknownArtist => '알 수 없는 아티스트'; - - @override - String get permissionAudio => '오디오'; - - @override - String get permissionStorage => '저장소'; - - @override - String get permissionNotification => '알림'; - - @override - String get errorInvalidFolderSelected => '잘못된 폴더가 선택됨'; - - @override - String get storeAnyVersion => '모든'; - - @override - String get storeCategoryMetadata => '메타데이터'; - - @override - String get storeCategoryDownload => '다운로드'; - - @override - String get storeCategoryUtility => '유틸리티'; - - @override - String get storeCategoryLyrics => '가사'; - - @override - String get storeCategoryIntegration => '연동'; - - @override - String get artistReleases => '발매 음악'; - - @override - String get editMetadataSelectNone => '없음'; - - @override - String queueRetryAllFailed(int count) { - return '재시도 $count 번 실패'; - } - - @override - String get settingsSaveDownloadHistory => '다운로드 기록 저장'; - - @override - String get settingsSaveDownloadHistorySubtitle => - '완료된 다운로드를 기록 및 라이브러리 보기에 유지합니다'; - - @override - String get dialogDisableHistoryTitle => '다운로드 기록을 끄시겠습니까?'; - - @override - String get dialogDisableHistoryMessage => '기존 기록이 삭제됩니다. 다운로드된 파일은 삭제되지 않습니다'; - - @override - String get dialogDisableAndClear => '끄고 지우기'; - - @override - String get openInOtherServices => '다른 서비스에서 열기'; - - @override - String get shareSheetNoExtensions => '호환되는 다른 서비스가 없음'; - - @override - String get shareSheetNotFound => '찾을 수 없음'; - - @override - String get shareSheetCopyLink => '링크 복사'; - - @override - String shareSheetLinkCopied(Object service) { - return '$service 링크가 복사됨'; - } - - @override - String get libraryPlayback => '재생'; - - @override - String get libraryExternalPlayer => '외부 플레이어'; - - @override - String get libraryExternalPlayerSubtitle => - '감상용으로 권장됩니다. 최고 음질, 갭리스 재생, EQ 및 다양한 오디오 형식을 지원합니다'; - - @override - String get libraryBuiltInPreviewPlayer => '내부 미리듣기 플레이어'; - - @override - String get libraryBuiltInPreviewPlayerSubtitle => - 'SpotiFLAC Mobile에서 빠른 로컬 미리듣기 전용이며, 일반적인 음악 감상에는 권장되지 않습니다'; - - @override - String get libraryBuiltInPlayerInfo => - '내부 플레이어는 로컬 트랙을 빠르게 미리듣기 위한 도구입니다. 실제 음악 감상은 외부 음악 플레이어를 이용하는 것을 권장합니다'; - - @override - String get nowPlayingTitle => '현재 재생 중'; - - @override - String get nowPlayingNothingPlaying => '재생 중인 노래가 없음'; - - @override - String get nowPlayingMinimize => '최소화'; - - @override - String get nowPlayingUpNext => '다음 곡'; - - @override - String get nowPlayingPreviousTrack => '이전 곡'; - - @override - String get nowPlayingNextTrack => '다음 곡'; - - @override - String get nowPlayingDetails => '트랙 세부 정보'; - - @override - String get nowPlayingOpenInExternalPlayer => '외부 플레이어에서 열기'; - - @override - String get nowPlayingTabPlayer => '플레이어'; - - @override - String get nowPlayingTabLyrics => '가사'; - - @override - String get nowPlayingNoLyrics => '이 파일에는 가사가 없음'; - - @override - String get nowPlayingLibraryEmpty => '라이브러리가 비어 있음'; - - @override - String nowPlayingShuffleLibraryFailed(String error) { - return '라이브러리에서 셔플을 사용할 수 없음: $error'; - } - - @override - String get nowPlayingShuffleOn => '셔플 켜기'; - - @override - String get nowPlayingPlayInOrder => '순서대로 재생'; - - @override - String get nowPlayingShuffleLibrary => '라이브러리 셔플'; - - @override - String get nowPlayingQueueEmpty => '현재 다운로드 목록이 비어 있음'; - - @override - String get nowPlayingNoMetadata => '사용할 수 있는 메타데이터가 없음'; - - @override - String get announcementUnableToOpenLink => '링크를 열 수 없습니다. 다시 시도해 주세요'; - - @override - String trackConvertLosslessOutputWithCap(String quality) { - return '$quality 제한이 있는 무손실 출력'; - } - - @override - String trackConvertConfirmMessageLosslessCapped( - String sourceFormat, - String targetFormat, - String quality, - ) { - return '$sourceFormat에서 $targetFormat($quality)으로 변환하시겠습니까?\n\n출력은 무손실 코덱을 유지하지만 비트 심도/샘플 속도가 제한됩니다. 변환 후 원본 파일이 삭제됩니다'; - } - - @override - String selectionBatchConvertConfirmMessageLosslessCapped( - int count, - String format, - String quality, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '트랙', - one: '트랙', - ); - return '$count 개의 $_temp0을 $format($quality)으로 변환하시겠습니까?\n\n출력은 무손실 코덱을 유지하지만 비트 심도/샘플 속도가 제한됩니다. 변환 후 원본 파일이 삭제됩니다'; - } - - @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 => - 'Musixmatch, Netease, Apple Music, QQ Music, Spotify, Deezer, YouTube, Kugou 및 Genius용 가사 프록시'; - - @override - String get snackbarPlayingNext => '다음 곡 재생'; - - @override - String get snackbarAddedToQueueGeneric => '현재 다운로드 목록에 추가됨'; - - @override - String selectionDeletePlaylistsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '재생목록', - one: '재생목록', - ); - return '$count $_temp0 삭제'; - } - - @override - String get actionShuffle => '셔플'; - - @override - String get downloadPrimaryArtistOnlyOn => '기본 아티스트만: ON'; - - @override - String get downloadPrimaryArtistOnlyOff => '기본 아티스트만: OFF'; - - @override - String get downloadAlbumArtistMetadataPrimaryOnly => '앨범 아티스트 메타데이터: 기본만'; - - @override - String get downloadAlbumArtistMetadataFull => '앨범 아티스트 메타데이터: 전체'; - - @override - String get trackConvertOriginal => '원본'; - - @override - String get trackConvertOriginalQuality => '원본 음질'; - - @override - String get trackConvertLosslessSuffix => '무손실'; - - @override - String get trackConvertDithering => '디더링'; - - @override - String get trackConvertResampler => '리샘플러'; - - @override - String get trackConvertDitherNone => '없음'; - - @override - String get trackConvertDitherTriangular => 'TPDF'; - - @override - String get trackConvertDitherTriangularHp => '삼각형 HP'; - - @override - String get trackConvertResamplerSwr => 'SWR'; - - @override - String get trackConvertResamplerSoxr => 'SoXr'; - - @override - String get updateSeeReleaseNotes => '자세한 내용은 릴리스 노트를 참조하세요'; - - @override - String get unknownTitle => '알 수 없는 제목'; - - @override - String get trackPlayNext => '다음 곡 재생'; - - @override - String get trackAddToQueue => '다운로드 목록에 추가'; - - @override - String snackbarExtensionInstalledEnable(String extensionName) { - return '\'\'$extensionName\'\'이 설치됨. \'설정 > 확장 프로그램\'에서 활성화하세요'; - } - - @override - String snackbarExtensionUpdatedVersion(String extensionName, String version) { - return '\'\'$extensionName\'\'이 v$version으로 업데이트됨'; - } - - @override - String snackbarFailedToInstallNamed(String extensionName) { - return '$extensionName 설치 실패'; - } - - @override - String snackbarFailedToUpdateNamed(String extensionName) { - return '$extensionName 업데이트 실패'; - } - - @override - String get releaseTypeEp => 'EP'; - - @override - String get releaseTypeSingle => '싱글'; - - @override - String get trackCoverOnline => '온라인 표지'; - - @override - String get regionCountryUS => '미국'; - - @override - String get regionCountryGB => '영국'; - - @override - String get regionCountryFR => '프랑스'; - - @override - String get regionCountryDE => '독일'; - - @override - String get regionCountryJP => '일본'; - - @override - String get regionCountryKR => '한국'; - - @override - String get regionCountryIN => '인도'; - - @override - String get regionCountryID => '인도네시아'; - - @override - String get regionCountryBR => '브라질'; - - @override - String get regionCountryMX => '멕시코'; - - @override - String get regionCountryAU => '호주'; - - @override - String get regionCountryCA => '캐나다'; - - @override - String get regionCountryXK => '코소보'; - - @override - String get extensionVerificationBrowserTitle => '인증 브라우저'; - - @override - String get extensionVerificationBrowserSubtitleExternal => - '인증을 기본 브라우저에서 먼저 실행합니다'; - - @override - String get extensionVerificationBrowserSubtitleInApp => - '인증을 앱 내 브라우저에서 먼저 실행합니다'; - - @override - String get extensionVerificationBrowserExternal => '외부'; - - @override - String get extensionVerificationBrowserInApp => '내부'; - - @override - String get extensionVerificationHelpTitleManual => '수동으로 인증 열기'; - - @override - String get extensionVerificationHelpTitleWaiting => '아직 인증을 기다리는 중'; - - @override - String get extensionVerificationHelpMessageManual => - 'SpotiFLAC Mobile에서 브라우저를 자동으로 열지 못하였습니다. 아래 링크를 브라우저에서 열거나 직접 복사하세요'; - - @override - String get extensionVerificationHelpMessageWaiting => - '브라우저가 열리지 않았거나 인증을 완료한 후에도 SpotiFLAC Mobile로 돌아오지 않았다면, 아래 링크를 다시 열거나 직접 복사하세요'; - - @override - String get extensionVerificationClose => '닫기'; - - @override - String get extensionVerificationCopyLink => '링크 복사'; - - @override - String get extensionVerificationLinkCopied => '인증 링크가 복사됨'; - - @override - String get extensionVerificationOpenBrowser => '브라우저 열기'; - - @override - String get settingsSearchHint => '설정 검색'; - - @override - String settingsSearchNoResults(String query) { - return '\"$query\"와(과) 일치하는 설정이 없습니다'; - } - - @override - String get settingsGroupInterface => '확장 기능 및 외관'; - - @override - String get settingsGroupContent => '콘텐츠 및 메타데이터'; - - @override - String get settingsGroupDownloads => '다운로드 및 파일'; - - @override - String get settingsGroupSystem => '시스템'; - - @override - String get settingsGroupHelp => '정보 및 지원'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/l10n/app_localizations_pt.dart b/lib/l10n/app_localizations_pt.dart deleted file mode 100644 index 0e887033..00000000 --- a/lib/l10n/app_localizations_pt.dart +++ /dev/null @@ -1,9700 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Portuguese (`pt`). -class AppLocalizationsPt extends AppLocalizations { - AppLocalizationsPt([String locale = 'pt']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Home'; - - @override - String get navLibrary => 'Library'; - - @override - String get navSettings => 'Settings'; - - @override - String get navStore => 'Repo'; - - @override - String get homeTitle => 'Home'; - - @override - String get homeSubtitle => 'Paste a Spotify link or search by name'; - - @override - String get homeEmptyTitle => 'No search providers yet'; - - @override - String get homeEmptySubtitle => 'Install an extension to continue.'; - - @override - String get homeSupports => 'Supports: Track, Album, Playlist, Artist URLs'; - - @override - String get homeRecent => 'Recent'; - - @override - String get historyFilterAll => 'All'; - - @override - String get historyFilterAlbums => 'Albums'; - - @override - String get historyFilterSingles => 'Singles'; - - @override - String get historySearchHint => 'Search history...'; - - @override - String get settingsTitle => 'Settings'; - - @override - String get settingsDownload => 'Download'; - - @override - String get settingsAppearance => 'Appearance'; - - @override - String get settingsExtensions => 'Extensions'; - - @override - String get settingsAbout => 'About'; - - @override - String get downloadTitle => 'Download'; - - @override - String get downloadAskQualitySubtitle => - 'Show quality picker for each download'; - - @override - String get downloadFilenameFormat => 'Filename Format'; - - @override - String get downloadSingleFilenameFormat => 'Single Filename Format'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Filename pattern for singles and EPs. Uses the same tags as the album format.'; - - @override - String get downloadFolderOrganization => 'Folder Organization'; - - @override - String get appearanceTitle => 'Appearance'; - - @override - String get appearanceThemeSystem => 'System'; - - @override - String get appearanceThemeLight => 'Light'; - - @override - String get appearanceThemeDark => 'Dark'; - - @override - String get appearanceDynamicColor => 'Dynamic Color'; - - @override - String get appearanceDynamicColorSubtitle => 'Use colors from your wallpaper'; - - @override - String get appearanceHistoryView => 'History View'; - - @override - String get appearanceHistoryViewList => 'List'; - - @override - String get appearanceHistoryViewGrid => 'Grid'; - - @override - String get optionsPrimaryProvider => 'Primary Provider'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Service used when searching by track name.'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Using extension: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Default Search Tab'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; - - @override - String get optionsAutoFallback => 'Auto Fallback'; - - @override - String get optionsAutoFallbackSubtitle => - 'Try other services if download fails'; - - @override - String get optionsEmbedLyrics => 'Embed Lyrics'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Embed synced lyrics into FLAC files'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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'; - - @override - String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; - - @override - String get optionsArtistTagModeJoined => 'Single joined value'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; - - @override - String get optionsExtensionStore => 'Extension Repo'; - - @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; - - @override - String get optionsCheckUpdates => 'Check for Updates'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Notify when new version is available'; - - @override - String get optionsUpdateChannel => 'Update Channel'; - - @override - String get optionsUpdateChannelStable => 'Stable releases only'; - - @override - String get optionsUpdateChannelPreview => 'Get preview releases'; - - @override - String get optionsUpdateChannelWarning => - 'Preview may contain bugs or incomplete features'; - - @override - String get optionsClearHistory => 'Clear Download History'; - - @override - String get optionsClearHistorySubtitle => - 'Remove all downloaded tracks from history'; - - @override - String get optionsDetailedLogging => 'Detailed Logging'; - - @override - String get optionsDetailedLoggingOn => 'Detailed logs are being recorded'; - - @override - String get optionsDetailedLoggingOff => 'Enable for bug reports'; - - @override - String get extensionsTitle => 'Extensions'; - - @override - String get extensionsDisabled => 'Disabled'; - - @override - String extensionsVersion(String version) { - return 'Version $version'; - } - - @override - String get extensionsUninstall => 'Uninstall'; - - @override - String get storeTitle => 'Extension Repo'; - - @override - String get storeSearch => 'Search extensions...'; - - @override - String get storeInstall => 'Install'; - - @override - String get storeInstalled => 'Installed'; - - @override - String get storeUpdate => 'Update'; - - @override - String get aboutTitle => 'About'; - - @override - String get aboutContributors => 'Contributors'; - - @override - String get aboutMobileDeveloper => 'Mobile version developer'; - - @override - String get aboutOriginalCreator => 'Creator of the original SpotiFLAC'; - - @override - String get aboutLogoArtist => - 'The talented artist who created our beautiful app logo!'; - - @override - String get aboutTranslators => 'Translators'; - - @override - String get aboutSpecialThanks => 'Special Thanks'; - - @override - String get aboutLinks => 'Links'; - - @override - String get aboutMobileSource => 'Mobile source code'; - - @override - String get aboutPCSource => 'PC source code'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => 'Report an issue'; - - @override - String get aboutReportIssueSubtitle => 'Report any problems you encounter'; - - @override - String get aboutFeatureRequest => 'Feature request'; - - @override - String get aboutFeatureRequestSubtitle => 'Suggest new features for the app'; - - @override - String get aboutTelegramChannel => 'Telegram Channel'; - - @override - String get aboutTelegramChannelSubtitle => 'Announcements and updates'; - - @override - String get aboutTelegramChat => 'Telegram Community'; - - @override - String get aboutTelegramChatSubtitle => 'Chat with other users'; - - @override - String get aboutSocial => 'Social'; - - @override - String get aboutApp => 'App'; - - @override - String get aboutVersion => 'Version'; - - @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'Creator of I Don\'t Have Spotify (IDHS). The fallback link resolver that saves the day!'; - - @override - String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; - - @override - String get artistAlbums => 'Albums'; - - @override - String get artistSingles => 'Singles & EPs'; - - @override - String get artistCompilations => 'Compilations'; - - @override - String get artistPopular => 'Popular'; - - @override - String artistMonthlyListeners(String count) { - return '$count monthly listeners'; - } - - @override - String get trackMetadataService => 'Service'; - - @override - String get trackMetadataPlay => 'Play'; - - @override - String get trackMetadataShare => 'Share'; - - @override - String get trackMetadataDelete => 'Delete'; - - @override - String get setupGrantPermission => 'Grant Permission'; - - @override - String get setupSkip => 'Skip for now'; - - @override - String get setupStorageAccessRequired => 'Storage Access Required'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Android 11+ requires \"All files access\" permission to save files to your chosen download folder.'; - - @override - String get setupOpenSettings => 'Open Settings'; - - @override - String get setupPermissionDeniedMessage => - 'Permission denied. Please grant all permissions to continue.'; - - @override - String setupPermissionRequired(String permissionType) { - return '$permissionType Permission Required'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return '$permissionType permission is required for the best experience. You can change this later in Settings.'; - } - - @override - String get setupUseDefaultFolder => 'Use Default Folder?'; - - @override - String get setupNoFolderSelected => - 'No folder selected. Would you like to use the default Music folder?'; - - @override - String get setupUseDefault => 'Use Default'; - - @override - String get setupDownloadLocationTitle => 'Download Location'; - - @override - String get setupDownloadLocationIosMessage => - 'On iOS, downloads are saved to the app\'s Documents folder. You can access them via the Files app.'; - - @override - String get setupAppDocumentsFolder => 'App Documents Folder'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Recommended - accessible via Files app'; - - @override - String get setupChooseFromFiles => 'Choose from Files'; - - @override - String get setupChooseFromFilesSubtitle => 'Select iCloud or other location'; - - @override - String get setupIosEmptyFolderWarning => - 'iOS limitation: Empty folders cannot be selected. Choose a folder with at least one file.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive is not supported. Please use the app Documents folder.'; - - @override - String get setupDownloadInFlac => - 'Baixe músicas com qualidade sem perdas e Hi-Res'; - - @override - String get setupStorageGranted => 'Storage Permission Granted!'; - - @override - String get setupStorageRequired => 'Storage Permission Required'; - - @override - String get setupStorageDescription => - 'SpotiFLAC needs storage permission to save your downloaded music files.'; - - @override - String get setupNotificationGranted => 'Notification Permission Granted!'; - - @override - String get setupNotificationEnable => 'Enable Notifications'; - - @override - String get setupFolderChoose => 'Choose Download Folder'; - - @override - String get setupFolderDescription => - 'Select a folder where your downloaded music will be saved.'; - - @override - String get setupSelectFolder => 'Select Folder'; - - @override - String get setupEnableNotifications => 'Enable Notifications'; - - @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'; - - @override - String get setupNext => 'Next'; - - @override - String get setupGetStarted => 'Get Started'; - - @override - String get setupAllowAccessToManageFiles => - 'Please enable \"Allow access to manage all files\" in the next screen.'; - - @override - String get setupLanguageTitle => 'Choose Language'; - - @override - String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; - - @override - String get setupLanguageSystemDefault => 'System Default'; - - @override - String get dialogCancel => 'Cancel'; - - @override - String get dialogSave => 'Save'; - - @override - String get dialogDelete => 'Delete'; - - @override - String get dialogRetry => 'Retry'; - - @override - String get dialogClear => 'Clear'; - - @override - String get dialogDone => 'Done'; - - @override - String get dialogImport => 'Import'; - - @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'; - - @override - String get dialogRemove => 'Remove'; - - @override - String get dialogUninstall => 'Uninstall'; - - @override - String get dialogDiscardChanges => 'Discard Changes?'; - - @override - String get dialogUnsavedChanges => - 'You have unsaved changes. Do you want to discard them?'; - - @override - String get dialogClearAll => 'Clear All'; - - @override - String get dialogRemoveExtension => 'Remove Extension'; - - @override - String get dialogRemoveExtensionMessage => - 'Are you sure you want to remove this extension? This cannot be undone.'; - - @override - String get dialogUninstallExtension => 'Uninstall Extension?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Are you sure you want to remove $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Clear History'; - - @override - String get dialogClearHistoryMessage => - 'Are you sure you want to clear all download history? This cannot be undone.'; - - @override - String get dialogDeleteSelectedTitle => 'Delete Selected'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; - } - - @override - String get dialogImportPlaylistTitle => 'Import Playlist'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Found $count tracks in CSV. Add them to download queue?'; - } - - @override - String csvImportTracks(int count) { - return '$count tracks from CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return 'Added \"$trackName\" to queue'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return 'Added $count tracks to queue'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" already downloaded'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" already exists in your library'; - } - - @override - String get snackbarHistoryCleared => 'History cleared'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Deleted $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Cannot open file: $error'; - } - - @override - String get snackbarViewQueue => 'View Queue'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform URL copied to clipboard'; - } - - @override - String get snackbarFileNotFound => 'File not found'; - - @override - String get snackbarSelectExtFile => 'Please select a .spotiflac-ext file'; - - @override - String get snackbarProviderPrioritySaved => 'Provider priority saved'; - - @override - String get snackbarMetadataProviderSaved => - 'Metadata provider priority saved'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName installed.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName updated.'; - } - - @override - String get snackbarFailedToInstall => 'Failed to install extension'; - - @override - String get snackbarFailedToUpdate => 'Failed to update extension'; - - @override - String get errorRateLimited => 'Rate Limited'; - - @override - String get errorRateLimitedMessage => - 'Too many requests. Please wait a moment before searching again.'; - - @override - String get errorNoTracksFound => 'No tracks found'; - - @override - String get searchEmptyResultSubtitle => 'Try another keyword'; - - @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 'Cannot load $item: missing extension source'; - } - - @override - String get actionPause => 'Pause'; - - @override - String get actionResume => 'Resume'; - - @override - String get actionCancel => 'Cancel'; - - @override - String get actionSelectAll => 'Select All'; - - @override - String get actionDeselect => 'Deselect'; - - @override - String selectionSelected(int count) { - return '$count selected'; - } - - @override - String get selectionAllSelected => 'All tracks selected'; - - @override - String get selectionSelectToDelete => 'Select tracks to delete'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Fetching metadata... $current/$total'; - } - - @override - String get progressReadingCsv => 'Reading CSV...'; - - @override - String get searchSongs => 'Songs'; - - @override - String get searchArtists => 'Artists'; - - @override - String get searchAlbums => 'Albums'; - - @override - String get searchPlaylists => 'Playlists'; - - @override - String get searchSortTitle => 'Sort Results'; - - @override - String get searchSortDefault => 'Default'; - - @override - String get searchSortTitleAZ => 'Title (A-Z)'; - - @override - String get searchSortTitleZA => 'Title (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artist (A-Z)'; - - @override - String get searchSortArtistZA => 'Artist (Z-A)'; - - @override - String get searchSortDurationShort => 'Duration (Shortest)'; - - @override - String get searchSortDurationLong => 'Duration (Longest)'; - - @override - String get searchSortDateOldest => 'Release Date (Oldest)'; - - @override - String get searchSortDateNewest => 'Release Date (Newest)'; - - @override - String get tooltipPlay => 'Play'; - - @override - String get filenameFormat => 'Filename 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 => 'No organization'; - - @override - String get folderOrganizationByPlaylist => 'By Playlist'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Separate folder for each playlist'; - - @override - String get folderOrganizationByArtist => 'By Artist'; - - @override - String get folderOrganizationByAlbum => 'By Album'; - - @override - String get folderOrganizationByArtistAlbum => 'Artist/Album'; - - @override - String get folderOrganizationDescription => - 'Organize downloaded files into folders'; - - @override - String get folderOrganizationNoneSubtitle => 'All files in download folder'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Separate folder for each artist'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Separate folder for each album'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Nested folders for artist and album'; - - @override - String get updateAvailable => 'Update Available'; - - @override - String get updateLater => 'Later'; - - @override - String get updateStartingDownload => 'Starting download...'; - - @override - String get updateDownloadFailed => 'Download failed'; - - @override - String get updateFailedMessage => 'Failed to download update'; - - @override - String get updateNewVersionReady => 'A new version is ready'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Current'; - - @override - String get updateNew => 'New'; - - @override - String get updateDownloading => 'Downloading...'; - - @override - String get updateWhatsNew => 'What\'s New'; - - @override - String get updateDownloadInstall => 'Download & Install'; - - @override - String get updateDontRemind => 'Don\'t remind'; - - @override - String get providerPriorityTitle => 'Provider Priority'; - - @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 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 providerExtension => 'Extension'; - - @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 logTitle => 'Logs'; - - @override - String get logCopied => 'Logs copied to clipboard'; - - @override - String get logSearchHint => 'Search logs...'; - - @override - String get logFilterLevel => 'Level'; - - @override - String get logFilterSection => 'Filter'; - - @override - String get logShareLogs => 'Share logs'; - - @override - String get logClearLogs => 'Clear logs'; - - @override - String get logClearLogsTitle => 'Clear Logs'; - - @override - String get logClearLogsMessage => 'Are you sure you want to clear all logs?'; - - @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 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 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 libraryQualityLabelFileFormat => 'File format'; - - @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 trackLyricsSource(String source) { - return 'Source: $source'; - } - - @override - String get trackLyricsNotAvailable => 'Lyrics not available for this track'; - - @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; - - @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; - - @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 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 repository'; - - @override - String get storeEmptyNoExtensions => 'No extensions available'; - - @override - String get storeEmptyNoResults => 'No extensions found'; - - @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 extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; - } - - @override - String get extensionsDownloadPriority => 'Download Priority'; - - @override - String get extensionsDownloadPrioritySubtitle => 'Set download service order'; - - @override - String get extensionsFallbackTitle => 'Fallback Extensions'; - - @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'; - - @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 downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Lossy 320kbps Format'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; - - @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 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 albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @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 appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @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 settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @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 albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; - - @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 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 recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @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 libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @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 libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'files', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Last scanned: $time'; - } - - @override - String get libraryLastScannedNever => 'Never'; - - @override - String get libraryScanning => 'Scanning...'; - - @override - String get libraryScanFinalizing => 'Finalizing library...'; - - @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 libraryFilterMetadata => 'Metadata'; - - @override - String get libraryFilterMetadataComplete => 'Complete metadata'; - - @override - String get libraryFilterMetadataMissingAny => 'Missing any metadata'; - - @override - String get libraryFilterMetadataMissingYear => 'Missing year'; - - @override - String get libraryFilterMetadataMissingGenre => 'Missing genre'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; - - @override - String get libraryFilterSort => 'Sort'; - - @override - String get libraryFilterSortLatest => 'Latest'; - - @override - String get libraryFilterSortOldest => 'Oldest'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @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 => 'Boas-vindas ao SpotiFLAC Mobile!'; - - @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 => - 'Pesquise com uma extensão instalada ou cole um link compatível'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @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 Repo 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 libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @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 trackSaveLyrics => 'Save Lyrics (.lrc)'; - - @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 trackReEnrichFieldCover => 'Cover Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Select All'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @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 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 trackConvertTitle => 'Convert Audio'; - - @override - String get trackConvertTargetFormat => 'Target Format'; - - @override - String get trackConvertBitrate => 'Bitrate'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @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 trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @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 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 collectionFavoriteArtists => 'Favorite Artists'; - - @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 collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Added to \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Already in \"$playlistName\"'; - } - - @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 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 collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @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 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 collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @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 artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @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 => - 'Folder named after Album Artist tag'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Folder named after Track Artist tag'; - - @override - String get lyricsProvidersTitle => 'Lyrics Provider Priority'; - - @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)'; - } - - @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 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 lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, 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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @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 where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => 'Custom Folder (SAF)'; - - @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'SongLink Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Language code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @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 editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @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'; - - @override - String queueDownloadingCount(int count) { - return 'Downloading ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtering...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'No download history'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Sample Rate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Bit Depth'; - - @override - String get audioAnalysisChannels => 'Channels'; - - @override - String get audioAnalysisDuration => 'Duration'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Size'; - - @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Samples'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Cancel download?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Keep'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download Complete'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; - - @override - String notifTracksDownloadedSuccess(int count) { - return '$count tracks downloaded successfully'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanning local library'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Library scan complete'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count errors'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; - - @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Update Ready'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import playlist (CSV, M3U)'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Keep every quality version; add its measured quality to the filename only when the name is already used'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Android background service for extension downloads'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Faixa anterior'; - - @override - String get nowPlayingNextTrack => 'Próxima faixa'; - - @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'; - - @override - String get settingsSearchHint => 'Pesquisar configurações'; - - @override - String settingsSearchNoResults(String query) { - return 'Nenhuma configuração corresponde a \"$query\"'; - } - - @override - String get settingsGroupInterface => 'Extensões e aparência'; - - @override - String get settingsGroupContent => 'Conteúdo e metadados'; - - @override - String get settingsGroupDownloads => 'Downloads e arquivos'; - - @override - String get settingsGroupSystem => 'Sistema'; - - @override - String get settingsGroupHelp => 'Sobre e suporte'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} - -/// The translations for Portuguese, as used in Portugal (`pt_PT`). -class AppLocalizationsPtPt extends AppLocalizationsPt { - AppLocalizationsPtPt() : super('pt_PT'); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Início'; - - @override - String get navLibrary => 'Biblioteca'; - - @override - String get navSettings => 'Configurações'; - - @override - String get navStore => 'Repo'; - - @override - String get homeTitle => 'Início'; - - @override - String get homeSubtitle => 'Cole um URL compatível ou pesquise por nome'; - - @override - String get homeEmptyTitle => 'Ainda não há provedores de pesquisa'; - - @override - String get homeEmptySubtitle => 'Instale uma extensão para continuar.'; - - @override - String get homeSupports => - 'Suporte: Faixas, Álbuns, Playlists, URLs de Artista'; - - @override - String get homeRecent => 'Recentes'; - - @override - String get historyFilterAll => 'Tudo'; - - @override - String get historyFilterAlbums => 'Álbuns'; - - @override - String get historyFilterSingles => 'Singles'; - - @override - String get historySearchHint => 'Pesquisar histórico...'; - - @override - String get settingsTitle => 'Configurações'; - - @override - String get settingsDownload => ''; - - @override - String get settingsAppearance => 'Aparência'; - - @override - String get settingsExtensions => 'Extensões'; - - @override - String get settingsAbout => 'Sobre'; - - @override - String get downloadTitle => ''; - - @override - String get downloadAskQualitySubtitle => - 'Mostrar seletor de qualidade para cada download'; - - @override - String get downloadFilenameFormat => 'Formato do Nome do Arquivo'; - - @override - String get downloadSingleFilenameFormat => - 'Formato do nome do arquivo para Singles'; - - @override - String get downloadSingleFilenameFormatDescription => - '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'; - - @override - String get appearanceTitle => 'Aparência'; - - @override - String get appearanceThemeSystem => 'Sistema'; - - @override - String get appearanceThemeLight => 'Claro'; - - @override - String get appearanceThemeDark => 'Escuro'; - - @override - String get appearanceDynamicColor => 'Cores Dinâmicas'; - - @override - String get appearanceDynamicColorSubtitle => - 'Usar cores do seu papel de parede'; - - @override - String get appearanceHistoryView => 'Visualização do Histórico'; - - @override - String get appearanceHistoryViewList => 'Lista'; - - @override - String get appearanceHistoryViewGrid => 'Grade'; - - @override - String get optionsPrimaryProvider => 'Provedor Primário'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Serviço usado para pesquisar por faixa ou nome do álbum'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Usando a extensão: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Aba de pesquisa padrão'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Escolha qual aba será aberta primeiro para novos resultados de pesquisa.'; - - @override - String get optionsAutoFallback => 'Fallback Automático'; - - @override - String get optionsAutoFallbackSubtitle => - 'Tentar outros serviços se o download falhar'; - - @override - String get optionsEmbedLyrics => 'Incorporar Letras'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Salve letras sincronizadas ao lado das suas faixas baixadas'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Analisar o volume e incorporar tags ReplayGain (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Desativado: sem etiquetas de normalização de intensidade'; - - @override - String get trackReplayGain => 'Reanalisar 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 => - 'Escolha como múltiplos artistas são escritos em etiquetas incorporadas.'; - - @override - String get optionsArtistTagModeJoined => 'Valor único combinado'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Escreva um valor ARTIST único como \"Artista A, Artista B\" para máxima compatibilidade com o ‘player’'; - - @override - String get optionsArtistTagModeSplitVorbis => - 'Dividir etiquetas para FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Escrever uma etiqueta de artista por artista para FLAC e Opus; MP3 e M4A permanecem combinados.'; - - @override - String get optionsExtensionStore => 'Repositório de extensões'; - - @override - String get optionsExtensionStoreSubtitle => - 'Mostrar aba de repositório na navegação'; - - @override - String get optionsCheckUpdates => 'Procurar Atualizações'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Notificar quando uma nova versão estiver disponível'; - - @override - String get optionsUpdateChannel => 'Canal de Atualização'; - - @override - String get optionsUpdateChannelStable => 'Somente versões estáveis'; - - @override - String get optionsUpdateChannelPreview => 'Obter versões de prévia'; - - @override - String get optionsUpdateChannelWarning => - 'A prévia pode conter erros ou recursos incompletos'; - - @override - String get optionsClearHistory => 'Limpar Histórico de Download'; - - @override - String get optionsClearHistorySubtitle => - 'Remover todas as faixas baixadas do histórico'; - - @override - String get optionsDetailedLogging => 'Registro detalhado'; - - @override - String get optionsDetailedLoggingOn => - 'Registros detalhados estão sendo gravados'; - - @override - String get optionsDetailedLoggingOff => 'Habilitar para relatórios de erros'; - - @override - String get extensionsTitle => 'Extensões'; - - @override - String get extensionsDisabled => 'Desabilitado'; - - @override - String extensionsVersion(String version) { - return 'Versão $version'; - } - - @override - String get extensionsUninstall => 'Desinstalar'; - - @override - String get storeTitle => 'Repositório de extensões'; - - @override - String get storeSearch => 'Pesquisar extensões...'; - - @override - String get storeInstall => 'Instalar'; - - @override - String get storeInstalled => 'Instalado'; - - @override - String get storeUpdate => 'Atualizar'; - - @override - String get aboutTitle => 'Sobre'; - - @override - String get aboutContributors => 'Colaboradores'; - - @override - String get aboutMobileDeveloper => 'Desenvolvedor da versão móvel'; - - @override - String get aboutOriginalCreator => 'Criador do SpotiFLAC original'; - - @override - String get aboutLogoArtist => - 'O artista talentoso que criou o nosso lindo logotipo do aplicativo!'; - - @override - String get aboutTranslators => 'Tradutores'; - - @override - String get aboutSpecialThanks => 'Agradecimentos Especiais'; - - @override - String get aboutLinks => 'Links'; - - @override - String get aboutMobileSource => 'Código-fonte do app móvel'; - - @override - String get aboutPCSource => 'Código-fonte do app desktop'; - - @override - String get aboutKeepAndroidOpen => 'Manter o Android aberto'; - - @override - String get aboutReportIssue => 'Reportar um problema'; - - @override - String get aboutReportIssueSubtitle => - 'Reporte qualquer problema que encontrar'; - - @override - String get aboutFeatureRequest => 'Solicitação de recurso'; - - @override - String get aboutFeatureRequestSubtitle => - 'Sugira novos recursos para o aplicativo'; - - @override - String get aboutTelegramChannel => 'Canal do Telegram'; - - @override - String get aboutTelegramChannelSubtitle => 'Anúncios e atualizações'; - - @override - String get aboutTelegramChat => 'Comunidade do Telegram'; - - @override - String get aboutTelegramChatSubtitle => 'Converse com outros usuários'; - - @override - String get aboutSocial => 'Social'; - - @override - String get aboutApp => 'Aplicativo'; - - @override - String get aboutVersion => 'Versão'; - - @override - String get aboutBinimumDesc => - 'O criador do QQDL e da HiFi API. Este projeto ajudou a moldar o suporte a transferências sem perdas.'; - - @override - String get aboutSachinsenalDesc => - 'O criador original do projeto HiFi. Uma base para integração de fontes sem perdas.'; - - @override - String get aboutSjdonadoDesc => - 'Criador do I Don\'t Have Spotify (IDHS). O resolvedor de link alternativo que salva o dia!'; - - @override - String get aboutAppDescription => - 'Pesquisar metadados de músicas, gerenciar extensões e organizar sua biblioteca.'; - - @override - String get artistAlbums => 'Álbuns'; - - @override - String get artistSingles => 'Singles e EPs'; - - @override - String get artistCompilations => 'Compilações'; - - @override - String get artistPopular => 'Populares'; - - @override - String artistMonthlyListeners(String count) { - return '$count ouvintes mensais'; - } - - @override - String get trackMetadataService => 'Serviço'; - - @override - String get trackMetadataPlay => 'Reproduzir'; - - @override - String get trackMetadataShare => 'Compartilhar'; - - @override - String get trackMetadataDelete => 'Apagar'; - - @override - String get setupGrantPermission => 'Conceder Permissão'; - - @override - String get setupSkip => 'Ignorar por enquanto'; - - @override - String get setupStorageAccessRequired => 'Acesso ao Armazenamento Necessário'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'O Android 11+ requer a permissão \"Acesso a Todos os Arquivos\" para salvar arquivos na pasta de download escolhida.'; - - @override - String get setupOpenSettings => 'Abrir Configurações'; - - @override - String get setupPermissionDeniedMessage => - 'Permissão negada. Por favor, conceda todas as permissões para continuar.'; - - @override - String setupPermissionRequired(String permissionType) { - return 'Permissão $permissionType Necessária'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return 'A permissão $permissionType é necessária para a melhor experiência. Você pode alterar isso mais tarde em Configurações.'; - } - - @override - String get setupUseDefaultFolder => 'Usar Pasta Padrão?'; - - @override - String get setupNoFolderSelected => - 'Nenhuma pasta selecionada. Você gostaria de usar a pasta padrão de música?'; - - @override - String get setupUseDefault => 'Usar Padrão'; - - @override - String get setupDownloadLocationTitle => 'Local do Download'; - - @override - String get setupDownloadLocationIosMessage => - 'No iOS, downloads são salvos na pasta Documentos do aplicativo. Você pode acessá-los através do app Arquivos.'; - - @override - String get setupAppDocumentsFolder => 'Pasta Documentos do App'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Recomendado - acessível através do aplicativo Arquivos'; - - @override - String get setupChooseFromFiles => 'Escolher dos Arquivos'; - - @override - String get setupChooseFromFilesSubtitle => - 'Selecione o iCloud ou outro local'; - - @override - String get setupIosEmptyFolderWarning => - 'Limitação do iOS: Pastas vazias não podem ser selecionadas. Escolha uma pasta com pelo menos um arquivo.'; - - @override - String get setupIcloudNotSupported => - 'O iCloud Drive não é compatível. Use a pasta Documentos do aplicativo.'; - - @override - String get setupDownloadInFlac => - 'Baixe músicas com qualidade sem perdas e Hi-Res'; - - @override - String get setupStorageGranted => 'Permissão de Armazenamento Concedida!'; - - @override - String get setupStorageRequired => 'Permissão de Armazenamento Necessária'; - - @override - String get setupStorageDescription => - 'O SpotiFLAC precisa de permissão de armazenamento para salvar os seus arquivos de música baixados.'; - - @override - String get setupNotificationGranted => 'Permissão de Notificações Concedida!'; - - @override - String get setupNotificationEnable => 'Habilitar Notificações'; - - @override - String get setupFolderChoose => 'Escolher Pasta de Download'; - - @override - String get setupFolderDescription => - 'Selecione uma pasta onde as suas músicas baixadas serão salvas.'; - - @override - String get setupSelectFolder => 'Seleccionar Pasta'; - - @override - String get setupEnableNotifications => 'Habilitar Notificações'; - - @override - String get 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.'; - - @override - String get setupSkipForNow => 'Ignorar por enquanto'; - - @override - String get setupNext => 'Próximo'; - - @override - String get setupGetStarted => 'Começar'; - - @override - String get setupAllowAccessToManageFiles => - 'Por favor, habilite \"Permitir acesso para gerenciar todos os arquivos\" na próxima tela.'; - - @override - String get setupLanguageTitle => 'Escolher idioma'; - - @override - String get setupLanguageDescription => - 'Selecione o idioma de sua preferência para o aplicativo. Você pode alterar isso depois em Configurações.'; - - @override - String get setupLanguageSystemDefault => 'Padrão do sistema'; - - @override - String get dialogCancel => 'Cancelar'; - - @override - String get dialogSave => 'Salvar'; - - @override - String get dialogDelete => 'Apagar'; - - @override - String get dialogRetry => 'Tentar novamente'; - - @override - String get dialogClear => 'Limpar'; - - @override - String get dialogDone => 'Concluído'; - - @override - String get dialogImport => 'Importar'; - - @override - 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'; - - @override - String get dialogRemove => 'Remover'; - - @override - String get dialogUninstall => 'Desinstalar'; - - @override - String get dialogDiscardChanges => 'Descartar Alterações?'; - - @override - String get dialogUnsavedChanges => - 'Você tem alterações não salvas. Deseja descartá-las?'; - - @override - String get dialogClearAll => 'Limpar Tudo'; - - @override - String get dialogRemoveExtension => 'Remover Extensão'; - - @override - String get dialogRemoveExtensionMessage => - 'Tem certeza de que deseja remover esta extensão? Isso não pode ser desfeito.'; - - @override - String get dialogUninstallExtension => 'Desinstalar Extensão?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Tem certeza que deseja remover $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Limpar Histórico'; - - @override - String get dialogClearHistoryMessage => - 'Tem certeza que deseja limpar todo o histórico de downloads? Isso não pode ser desfeito.'; - - @override - String get dialogDeleteSelectedTitle => 'Apagar Selecionados'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'faixas', - one: 'faixa', - ); - return 'Apagar $count $_temp0 do histórico?\n\nIsso também apagará os arquivos do armazenamento.'; - } - - @override - String get dialogImportPlaylistTitle => 'Importar Playlist'; - - @override - String dialogImportPlaylistMessage(int count) { - return '$count Faixas encontradas em CSV. Adicioná-las à lista de downloads?'; - } - - @override - String csvImportTracks(int count) { - return '$count faixas do CSV'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return '\"$trackName\" adicionada à fila'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return '$count faixas adicionadas à fila'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" já foi baixada'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" já existe na sua biblioteca'; - } - - @override - String get snackbarHistoryCleared => 'Histórico limpo'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'faixas apagadas', - one: 'faixa apagada', - ); - return '$count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Não foi possível abrir o arquivo: $error'; - } - - @override - String get snackbarViewQueue => 'Ver Fila'; - - @override - String snackbarUrlCopied(String platform) { - return 'URL do $platform copiado para a área de transferência'; - } - - @override - String get snackbarFileNotFound => 'Arquivo não encontrado'; - - @override - String get snackbarSelectExtFile => - 'Por favor, selecione um arquivo .spotiflac-ext'; - - @override - String get snackbarProviderPrioritySaved => 'Prioridade de provedor salva'; - - @override - String get snackbarMetadataProviderSaved => - 'Prioridade do provedor de metadados salva'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName instalada.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName atualizada.'; - } - - @override - String get snackbarFailedToInstall => 'Falha ao instalar a extensão'; - - @override - String get snackbarFailedToUpdate => 'Falha ao atualizar a extensão'; - - @override - String get errorRateLimited => 'Tráfico Limitado (Rate Limited)'; - - @override - String get errorRateLimitedMessage => - 'Muitas solicitações. Por favor, aguarde um momento antes de pesquisar novamente.'; - - @override - String get errorNoTracksFound => 'Nenhuma faixa encontrada'; - - @override - String get searchEmptyResultSubtitle => 'Tente outra palavra-chave'; - - @override - String get errorUrlNotRecognized => 'Link não reconhecido'; - - @override - String get errorUrlNotRecognizedMessage => - 'Este link não é suportado. Verifique se a URL está correta e se uma extensão compatível está instalada.'; - - @override - String get errorUrlFetchFailed => - 'Falha ao carregar o conteúdo deste link. Por favor, tente novamente.'; - - @override - String errorMissingExtensionSource(String item) { - return 'Não é possível carregar $item: faltando a fonte da extensão'; - } - - @override - String get actionPause => 'Pausar'; - - @override - String get actionResume => 'Retomar'; - - @override - String get actionCancel => 'Cancelar'; - - @override - String get actionSelectAll => 'Selecionar Tudo'; - - @override - String get actionDeselect => 'Desselecionar'; - - @override - String selectionSelected(int count) { - return '$count selecionado(s)'; - } - - @override - String get selectionAllSelected => 'Todas as faixas selecionadas'; - - @override - String get selectionSelectToDelete => 'Selecione as faixas para apagar'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Buscando metadados... $current/$total'; - } - - @override - String get progressReadingCsv => 'Lendo CSV...'; - - @override - String get searchSongs => 'Músicas'; - - @override - String get searchArtists => 'Artistas'; - - @override - String get searchAlbums => 'Álbuns'; - - @override - String get searchPlaylists => 'Listas de reprodução'; - - @override - String get searchSortTitle => 'Ordenar resultados'; - - @override - String get searchSortDefault => 'Padrão'; - - @override - String get searchSortTitleAZ => 'Título (A-Z)'; - - @override - String get searchSortTitleZA => 'Título (Z-A)'; - - @override - String get searchSortArtistAZ => 'Artista (A-Z)'; - - @override - String get searchSortArtistZA => 'Artista (Z-A)'; - - @override - String get searchSortDurationShort => 'Duração (mais curta)'; - - @override - String get searchSortDurationLong => 'Duração (mais longa)'; - - @override - String get searchSortDateOldest => 'Data de lançamento (mais antiga)'; - - @override - String get searchSortDateNewest => 'Data de lançamento (mais recente)'; - - @override - String get tooltipPlay => 'Reproduzir'; - - @override - String get filenameFormat => 'Formato do Nome do Arquivo'; - - @override - String get filenameShowAdvancedTags => 'Exibir etiquetas avançadas'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Ativar etiquetas formatadas para preenchimento de faixas e padrões de data'; - - @override - String get folderOrganizationNone => 'Nenhuma organização'; - - @override - String get folderOrganizationByPlaylist => 'Por playlist'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Pasta separada para cada playlist'; - - @override - String get folderOrganizationByArtist => 'Por Artista'; - - @override - String get folderOrganizationByAlbum => 'Por Album'; - - @override - String get folderOrganizationByArtistAlbum => 'Artista/Álbum'; - - @override - String get folderOrganizationDescription => - 'Organizar arquivos baixados em pastas'; - - @override - String get folderOrganizationNoneSubtitle => - 'Todos os arquivos na pasta de download'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Pasta separada para cada artista'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Pasta separada para cada álbum'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Pastas aninhadas para artista e álbum'; - - @override - String get updateAvailable => 'Atualização Disponível'; - - @override - String get updateLater => 'Depois'; - - @override - String get updateStartingDownload => 'Iniciando download...'; - - @override - String get updateDownloadFailed => 'Download falhou'; - - @override - String get updateFailedMessage => 'Falha ao baixar a atualização'; - - @override - String get updateNewVersionReady => 'Uma nova versão está pronta'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Atual'; - - @override - String get updateNew => 'Novo'; - - @override - String get updateDownloading => 'Baixando...'; - - @override - String get updateWhatsNew => 'Novidades'; - - @override - String get updateDownloadInstall => 'Baixar e Instalar'; - - @override - String get updateDontRemind => 'Não lembrar'; - - @override - String get providerPriorityTitle => 'Prioridade de Provedor'; - - @override - String get providerPriorityDescription => - 'Arraste para reordenar provedores de download. O aplicativo irá tentar provedores de cima para baixo ao baixar as faixas.'; - - @override - String get providerPriorityInfo => - 'Se uma faixa não estiver disponível no primeiro provedor, o aplicativo irá tentar automaticamente a próxima.'; - - @override - String get providerPriorityFallbackExtensionsDescription => - 'Escolha quais extensões de download instaladas podem ser usadas durante a alternativa automática.'; - - @override - String get providerPriorityFallbackExtensionsHint => - 'Apenas extensões ativadas com capacidade de provedor de download são listadas aqui.'; - - @override - String get providerExtension => 'Extensão'; - - @override - String get metadataProviderPriorityTitle => 'Prioridade de Metadados'; - - @override - String get metadataProviderPriorityDescription => - 'Arraste para reordenar provedores de metadados. O aplicativo tentará provedores de cima para baixo ao procurar por faixas e buscar metadados.'; - - @override - String get metadataProviderPriorityInfo => - 'O Deezer não tem limites de taxa e é recomendado como principal. O Spotify pode limitar a taxa após muitas solicitações.'; - - @override - String get logTitle => 'Registros'; - - @override - String get logCopied => 'Registros copiados para área de transferência'; - - @override - String get logSearchHint => 'Pesquisar registros...'; - - @override - String get logFilterLevel => 'Nível'; - - @override - String get logFilterSection => 'Filtro'; - - @override - String get logShareLogs => 'Compartilhar registros'; - - @override - String get logClearLogs => 'Limpar registros'; - - @override - String get logClearLogsTitle => 'Limpar Registros'; - - @override - String get logClearLogsMessage => - 'Tem certeza de que deseja limpar todos os registros?'; - - @override - String get logFilterBySeverity => 'Filtrar registros por gravidade'; - - @override - String get logNoLogsYet => 'Ainda não há registros'; - - @override - String get logNoLogsYetSubtitle => - 'Os registros aparecerão aqui enquanto você usa o aplicativo'; - - @override - String logEntriesFiltered(int count) { - return 'Entradas ($count filtradas)'; - } - - @override - String logEntries(int count) { - return 'Entradas ($count)'; - } - - @override - String get channelStable => 'Estável'; - - @override - String get channelPreview => 'Prévia'; - - @override - String get sectionSearchSource => 'Origem da Pesquisa'; - - @override - String get sectionDownload => 'Baixar'; - - @override - String get sectionPerformance => 'Desempenho'; - - @override - String get sectionApp => 'Aplicativo'; - - @override - String get sectionData => 'Dados'; - - @override - String get sectionDebug => 'Depuração'; - - @override - String get sectionService => 'Serviço'; - - @override - String get sectionAudioQuality => 'Qualidade de Áudio'; - - @override - String get sectionFileSettings => 'Configurações de Arquivo'; - - @override - String get sectionLyrics => 'Letras'; - - @override - String get lyricsMode => 'Modo de Letras'; - - @override - String get lyricsModeDescription => - 'Escolha como as letras são salvas com os seus downloads'; - - @override - String get lyricsModeEmbed => 'Incorporar no arquivo'; - - @override - String get lyricsModeEmbedSubtitle => - 'Letra armazenada nos metadados da FLAC'; - - @override - String get lyricsModeExternal => 'Arquivo .lrc externo'; - - @override - String get lyricsModeExternalSubtitle => - 'Arquivo .lrc separado para reprodutores como o Samsung Music'; - - @override - String get lyricsModeBoth => 'Ambos'; - - @override - String get lyricsModeBothSubtitle => 'Incorporar e salvar arquivo .lrc'; - - @override - String get sectionColor => 'Cor'; - - @override - String get sectionTheme => 'Tema'; - - @override - String get sectionLayout => 'Aparência\n'; - - @override - String get sectionLanguage => 'Idioma'; - - @override - String get appearanceLanguage => 'Idioma do aplicativo'; - - @override - String get settingsAppearanceSubtitle => 'Tema, cores, exibição'; - - @override - String get settingsDownloadSubtitle => 'Serviço, qualidade, alternativa'; - - @override - String get settingsExtensionsSubtitle => 'Gerenciar provedores de download'; - - @override - String get settingsLogsSubtitle => 'Ver logs do app para depuração'; - - @override - String get loadingSharedLink => 'Carregando link compartilhado...'; - - @override - String get pressBackAgainToExit => 'Pressione voltar novamente para sair'; - - @override - String downloadAllCount(int count) { - return 'Baixar Todos ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count faixas', - one: '1 faixa', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'Copiar caminho do arquivo'; - - @override - String get trackRemoveFromDevice => 'Remover do dispositivo'; - - @override - String get trackLoadLyrics => 'Carregar Letras'; - - @override - String get trackMetadata => 'Metadados'; - - @override - String get trackFileInfo => 'Informações do Arquivo'; - - @override - String get trackLyrics => 'Letras'; - - @override - String get trackFileNotFound => 'Arquivo não encontrado'; - - @override - String get trackOpenInDeezer => 'Abrir no Deezer'; - - @override - String get trackOpenInSpotify => 'Abrir no Spotify'; - - @override - String get trackTrackName => 'Nome da faixa'; - - @override - String get trackArtist => 'Artista'; - - @override - String get trackAlbumArtist => 'Artista do álbum'; - - @override - String get trackAlbum => 'Álbum'; - - @override - String get trackTrackNumber => 'Número da faixa'; - - @override - String get trackDiscNumber => 'Número do disco'; - - @override - String get trackDuration => 'Duração'; - - @override - String get trackAudioQuality => 'Qualidade de Áudio'; - - @override - String get trackReleaseDate => 'Data de lançamento'; - - @override - String get trackGenre => 'Género'; - - @override - String get trackLabel => 'Gravadora'; - - @override - String get trackCopyright => 'Direitos Autorais'; - - @override - String get trackDownloaded => 'Baixado'; - - @override - String get trackCopyLyrics => 'Copiar letra'; - - @override - String trackLyricsSource(String source) { - return 'Fonte: $source'; - } - - @override - String get trackLyricsNotAvailable => 'Letra não disponível para esta faixa'; - - @override - String get trackLyricsNotInFile => 'Nenhuma letra encontrada neste arquivo'; - - @override - String get trackFetchOnlineLyrics => 'Buscar online'; - - @override - String get trackLyricsTimeout => - 'A solicitação expirou. Tente novamente mais tarde.'; - - @override - String get trackLyricsLoadFailed => 'Falha ao carregar a letra'; - - @override - String get trackEmbedLyrics => 'Incorporar Letras'; - - @override - String get trackLyricsEmbedded => 'Letras incorporadas com sucesso'; - - @override - String get trackInstrumental => 'Faixa de instrumentais'; - - @override - String get trackCopiedToClipboard => 'Copiado para a área de transferência'; - - @override - String get trackDeleteConfirmTitle => 'Remover do dispositivo?'; - - @override - String get trackDeleteConfirmMessage => - 'Isto irá excluir o arquivo baixado permanentemente e removê-lo do seu histórico.'; - - @override - String get dateToday => 'Hoje'; - - @override - String get dateYesterday => 'Ontem'; - - @override - String dateDaysAgo(int count) { - return '$count dias atrás'; - } - - @override - String dateWeeksAgo(int count) { - return '$count semanas atrás'; - } - - @override - String dateMonthsAgo(int count) { - return '$count meses atrás'; - } - - @override - String get storeFilterAll => 'Tudo'; - - @override - String get storeFilterMetadata => 'Metadados'; - - @override - String get storeFilterDownload => 'Baixar'; - - @override - String get storeFilterUtility => 'Utilidade'; - - @override - String get storeFilterLyrics => 'Letras'; - - @override - String get storeFilterIntegration => 'Integração'; - - @override - String get storeClearFilters => 'Limpar filtros'; - - @override - String get storeAddRepoTitle => 'Adicionar repositório de extensões'; - - @override - String get storeAddRepoDescription => - '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 => 'URL do repositório'; - - @override - String get storeRepoUrlHint => 'https://github.com/usuario/repositorio'; - - @override - String get storeAddRepoButton => 'Adicionar repositório'; - - @override - String get storeChangeRepoTooltip => 'Mudar repositório'; - - @override - String get storeRepoDialogTitle => 'Repositório de extensões'; - - @override - String get storeRepoDialogCurrent => 'Repositório atual:'; - - @override - String get storeNewRepoUrlLabel => 'URL do novo repositório'; - - @override - String get storeLoadError => 'Falha ao carregar o repositório'; - - @override - String get storeEmptyNoExtensions => 'Nenhuma extensão disponível'; - - @override - String get storeEmptyNoResults => 'Nenhuma extensão encontrada'; - - @override - String get extensionId => 'ID'; - - @override - String get extensionError => 'Erro'; - - @override - String get extensionCapabilities => 'Funcionalidades'; - - @override - String get extensionMetadataProvider => 'Provedor de Metadados'; - - @override - String get extensionDownloadProvider => 'Provedor de Download'; - - @override - String get extensionLyricsProvider => 'Provedor de Letras'; - - @override - String get extensionUrlHandler => 'Gerenciador de URL'; - - @override - String get extensionQualityOptions => 'Opções de Qualidade'; - - @override - String get extensionPostProcessingHooks => 'Ganchos de Pós-Processamento'; - - @override - String get extensionPermissions => 'Permissões'; - - @override - String get extensionSettings => 'Configurações'; - - @override - String get extensionRemoveButton => 'Remover Extensão'; - - @override - String get extensionUpdated => 'Atualizado'; - - @override - String get extensionMinAppVersion => 'Versão Mínima do App'; - - @override - String get extensionCustomTrackMatching => - 'Correspondência de Faixa Personalizada'; - - @override - String get extensionPostProcessing => 'Pós-Processamento'; - - @override - String extensionHooksAvailable(int count) { - return '$count gancho(s) disponíveis'; - } - - @override - String extensionPatternsCount(int count) { - return '$count padrão(ões)'; - } - - @override - String extensionStrategy(String strategy) { - return 'Estratégia: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'Prioridade de Provedor'; - - @override - String get extensionsInstalledSection => 'Extensões Instaladas'; - - @override - String get extensionsNoExtensions => 'Nenhuma extensão instalada'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Instale arquivos .spotiflac-ext para adicionar novos provedores'; - - @override - String get extensionsInstallButton => 'Instalar Extensão'; - - @override - String get extensionsInfoTip => - 'Extensões podem adicionar novos metadados e baixar provedores. Somente instale extensões a partir de fontes confiáveis.'; - - @override - String get extensionsInstalledSuccess => 'Extensão instalada com sucesso'; - - @override - String extensionsInstalledCount(int count) { - return '$count extensões instaladas com sucesso'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Instaladas $installed de $attempted extensões'; - } - - @override - String get extensionsDownloadPriority => 'Prioridade de Download'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'Definir ordem do serviço de download'; - - @override - String get extensionsFallbackTitle => 'Extensões alternativas'; - - @override - String get extensionsFallbackSubtitle => - 'Escolha quais extensões de download instaladas podem ser usadas como alternativa'; - - @override - String get extensionsNoDownloadProvider => - 'Nenhuma extensão com provedor de download'; - - @override - String get extensionsMetadataPriority => 'Prioridade de Metadados'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Definir ordem de origem de pesquisa e metadados'; - - @override - String get extensionsNoMetadataProvider => - 'Nenhuma extensão com provedor de metadados'; - - @override - String get extensionsSearchProvider => 'Provedor de Pesquisa'; - - @override - String get extensionsNoCustomSearch => - 'Nenhuma extensão com pesquisa personalizada'; - - @override - String get extensionsSearchProviderDescription => - 'Escolha qual serviço utilizar para pesquisar faixas'; - - @override - String get extensionsCustomSearch => 'Busca personalizada'; - - @override - String get extensionsErrorLoading => 'Erro ao carregar extensão'; - - @override - String get qualityFlacLossless => 'FLAC sem perdas'; - - @override - String get qualityFlacLosslessSubtitle => '16 bits / 44,1 kHz'; - - @override - String get qualityHiResFlac => 'FLAC de alta resolução'; - - @override - String get qualityHiResFlacSubtitle => '24-bit / até 96kHz'; - - @override - String get qualityHiResFlacMax => 'FLAC Max de alta resolução'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-bit / até 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 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => 'Best compatibility, ~10MB per track'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; - - @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 downloadAskBeforeDownload => 'Perguntar qualidade antes de baixar'; - - @override - String get downloadDirectory => 'Pasta de Download'; - - @override - String get downloadSeparateSinglesFolder => 'Pasta de Singles Separada'; - - @override - String get downloadAlbumFolderStructure => 'Estrutura da Pasta de Álbum'; - - @override - String get albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @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 => 'Selecionar Qualidade'; - - @override - String get downloadFrom => 'Baixar De'; - - @override - String get appearanceAmoledDark => 'Escuro AMOLED'; - - @override - String get appearanceAmoledDarkSubtitle => 'Fundo preto puro'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get queueClearAll => 'Limpar Tudo'; - - @override - String get queueClearAllMessage => - 'Você tem certeza que deseja limpar todos os 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 settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'Artista / Álbum'; - - @override - String get albumFolderArtistAlbumSubtitle => - 'Álbuns/Nome do Artista/Nome do Álbum/'; - - @override - String get albumFolderArtistYearAlbum => 'Artista / [Ano] Álbum'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Álbuns/Nome do Artista/[2005] Nome do Álbum/'; - - @override - String get albumFolderAlbumOnly => 'Somente Álbum'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Albums/Nome do Álbum/'; - - @override - String get albumFolderYearAlbum => '[Ano] Álbum'; - - @override - String get albumFolderYearAlbumSubtitle => 'Álbuns/[2005] Nome do Álbum/'; - - @override - String get albumFolderArtistAlbumSingles => 'Artista / Álbum + Singles'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Artista/Álbum/ e Artista/Singles/'; - - @override - String get albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Apagar Selecionados'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'faixas', - one: 'faixa', - ); - return 'Excluir $count $_temp0 deste álbum?\n\nIsso também excluirá os arquivos do armazenamento.'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return '$count selecionado(s)'; - } - - @override - String get downloadedAlbumTapToSelect => 'Toque nas faixas para selecionar'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'faixas', - one: 'faixa', - ); - return 'Apagar $count $_temp0'; - } - - @override - String get downloadedAlbumSelectToDelete => 'Selecione as faixas para apagar'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Disco $discNumber'; - } - - @override - String get recentTypeArtist => 'Artista'; - - @override - String get recentTypeAlbum => 'Álbum'; - - @override - String get recentTypeSong => 'Música'; - - @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 => 'Baixar Discografia'; - - @override - String get discographyDownloadAll => 'Baixar Tudo'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$count faixas de $albumCount lançamentos'; - } - - @override - String get discographyAlbumsOnly => 'Somente Álbuns'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count faixas de $albumCount álbuns'; - } - - @override - String get discographySinglesOnly => 'Somente Singles e EPs'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count faixas de $albumCount singles'; - } - - @override - String get discographySelectAlbums => 'Selecione Álbuns...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Escolher álbuns ou singles específicos'; - - @override - String get discographyFetchingTracks => 'Buscando faixas...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return 'Buscando $current de $total...'; - } - - @override - String discographySelectedCount(int count) { - return '$count selecionado(s)'; - } - - @override - String get discographyDownloadSelected => 'Baixar Selecionados'; - - @override - String discographyAddedToQueue(int count) { - return '$count faixas adicionadas à fila'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added adicionada(s), $skipped já baixada(s)'; - } - - @override - String get discographyNoAlbums => 'Nenhum álbum disponível'; - - @override - String get discographyFailedToFetch => 'Falha ao obter alguns álbuns'; - - @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 => - 'Escanear automaticamente sua biblioteca em busca de novos arquivos'; - - @override - String get libraryAutoScanOff => 'Desligar'; - - @override - String get libraryAutoScanOnOpen => 'Sempre que abrir o aplicativo'; - - @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 libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'files', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Last scanned: $time'; - } - - @override - String get libraryLastScannedNever => 'Never'; - - @override - String get libraryScanning => 'Scanning...'; - - @override - String get libraryScanFinalizing => 'Finalizing library...'; - - @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 libraryFilterMetadata => 'Metadata'; - - @override - String get libraryFilterMetadataComplete => 'Complete metadata'; - - @override - String get libraryFilterMetadataMissingAny => 'Missing any metadata'; - - @override - String get libraryFilterMetadataMissingYear => 'Missing year'; - - @override - String get libraryFilterMetadataMissingGenre => 'Missing genre'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; - - @override - String get libraryFilterSort => 'Sort'; - - @override - String get libraryFilterSortLatest => 'Latest'; - - @override - String get libraryFilterSortOldest => 'Oldest'; - - @override - String get libraryFilterSortAlbumAsc => 'Album (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Album (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Genre (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Genre (Z-A)'; - - @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 => 'Boas-vindas ao SpotiFLAC Mobile!'; - - @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 => - 'Pesquise com uma extensão instalada ou cole um link compatível'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @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 Repo 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 => 'Cache da imagem de capa'; - - @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 libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @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 trackSaveLyrics => 'Save Lyrics (.lrc)'; - - @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 trackReEnrichFieldCover => 'Cover Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Select All'; - - @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 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 trackConvertTitle => 'Convert Audio'; - - @override - String get trackConvertTargetFormat => 'Target Format'; - - @override - String get trackConvertBitrate => 'Bitrate'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @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 trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @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 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 collectionFavoriteArtists => 'Favorite Artists'; - - @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 collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Added to \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Already in \"$playlistName\"'; - } - - @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 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 collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @override - String get collectionPlaylistEmptyTitle => 'A lista de reprodução está vazia'; - - @override - String get collectionPlaylistEmptySubtitle => ''; - - @override - String get collectionRemoveFromPlaylist => 'Remove from playlist'; - - @override - String get collectionRemoveFromFolder => 'Remove from folder'; - - @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 collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @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 artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Converted $success of $total tracks to $format'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count baixado(s)'; - } - - @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'; - - @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)'; - } - - @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 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 lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, 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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @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 where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => ''; - - @override - String get storageModeSafSubtitle => - 'Escolha qualquer pasta, incluindo o cartão SD'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Tap to insert tag:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'SongLink Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Language code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @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'; - - @override - String queueDownloadingCount(int count) { - return 'Downloading ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtering...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String get queueEmptyHistory => 'No download history'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Sample Rate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Bit Depth'; - - @override - String get audioAnalysisChannels => 'Channels'; - - @override - String get audioAnalysisDuration => 'Duration'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Size'; - - @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Samples'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Cancel download?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Keep'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download Complete'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks downloaded successfully', - one: '1 track downloaded successfully', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanning local library'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Library scan complete'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count errors'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => - 'Escaneamento de biblioteca cancelado'; - - @override - String get notifLibraryScanStopped => ''; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Update Ready'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import CSV'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Manter todas as versões de qualidade; adicionar a qualidade medida ao nome apenas quando o nome já estiver em uso'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Serviço Android em segundo plano para transferências de extensões'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Faixa anterior'; - - @override - String get nowPlayingNextTrack => 'Próxima faixa'; - - @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'; - - @override - String get settingsSearchHint => 'Pesquisar definições'; - - @override - String settingsSearchNoResults(String query) { - return 'Nenhuma definição corresponde a \"$query\"'; - } - - @override - String get settingsGroupInterface => 'Extensões e aparência'; - - @override - String get settingsGroupContent => 'Conteúdo e metadados'; - - @override - String get settingsGroupDownloads => 'Transferências e ficheiros'; - - @override - String get settingsGroupSystem => 'Sistema'; - - @override - String get settingsGroupHelp => 'Sobre e suporte'; -} diff --git a/lib/l10n/app_localizations_ru.dart b/lib/l10n/app_localizations_ru.dart deleted file mode 100644 index 620a3a60..00000000 --- a/lib/l10n/app_localizations_ru.dart +++ /dev/null @@ -1,5046 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Russian (`ru`). -class AppLocalizationsRu extends AppLocalizations { - AppLocalizationsRu([String locale = 'ru']) : super(locale); - - @override - String get appName => 'Spotify'; - - @override - String get navHome => 'Главная'; - - @override - String get navLibrary => 'Библиотека'; - - @override - String get navSettings => 'Настройки'; - - @override - String get navStore => 'Репозиторий'; - - @override - String get homeTitle => 'Главная'; - - @override - String get homeSubtitle => 'Вставьте URL или ищите по названию'; - - @override - String get homeEmptyTitle => 'No search providers yet'; - - @override - String get homeEmptySubtitle => 'Install an extension to continue.'; - - @override - String get homeSupports => - 'Поддерживается: Трек, Альбом, Плейлист, URL исполнителя'; - - @override - String get homeRecent => 'Недавние'; - - @override - String get historyFilterAll => 'Все'; - - @override - String get historyFilterAlbums => 'Альбомы'; - - @override - String get historyFilterSingles => 'Синглы'; - - @override - String get historySearchHint => 'Поиск в истории...'; - - @override - String get settingsTitle => 'Настройки'; - - @override - String get settingsDownload => 'Скачивание'; - - @override - String get settingsAppearance => 'Внешний вид'; - - @override - String get settingsExtensions => 'Расширения'; - - @override - String get settingsAbout => 'О программе'; - - @override - String get downloadTitle => 'Скачать'; - - @override - String get downloadAskQualitySubtitle => - 'Показывать выбор качества для каждого скачивания'; - - @override - String get downloadFilenameFormat => 'Формат имени файла'; - - @override - String get downloadSingleFilenameFormat => 'Формат имени файла'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Формат имени файла для синглов и EP. Используются те же теги, что и для альбомов.'; - - @override - String get downloadFolderOrganization => 'Организация папок'; - - @override - String get appearanceTitle => 'Внешний вид'; - - @override - String get appearanceThemeSystem => 'Системная'; - - @override - String get appearanceThemeLight => 'Светлая'; - - @override - String get appearanceThemeDark => 'Тёмная'; - - @override - String get appearanceDynamicColor => 'Динамический цвет'; - - @override - String get appearanceDynamicColorSubtitle => - 'Использовать цвета из ваших обоев'; - - @override - String get appearanceHistoryView => 'Отображение истории'; - - @override - String get appearanceHistoryViewList => 'Список'; - - @override - String get appearanceHistoryViewGrid => 'Сетка'; - - @override - String get optionsPrimaryProvider => 'Основной провайдер'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Сервис для поиска по названию трека или альбома'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Используется расширение: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Вкладка поиска по умолчанию'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Choose which tab opens first for new search results.'; - - @override - String get optionsAutoFallback => 'Автоматический переход'; - - @override - String get optionsAutoFallbackSubtitle => - 'Попробовать другие сервисы при сбое загрузки'; - - @override - String get optionsEmbedLyrics => 'Вписать текст песни'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Сохранять синхронизированный текст песни рядом с загруженным треком'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Scan loudness and embed ReplayGain tags (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Disabled: no loudness normalization tags'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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'; - - @override - String get optionsArtistTagModeDescription => - 'Choose how multiple artists are written into embedded tags.'; - - @override - String get optionsArtistTagModeJoined => 'Single joined value'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Write one ARTIST value like \"Artist A, Artist B\" for maximum player compatibility.'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Split tags for FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Write one artist tag per artist for FLAC and Opus; MP3 and M4A stay joined.'; - - @override - String get optionsExtensionStore => 'Репозиторий расширения'; - - @override - String get optionsExtensionStoreSubtitle => 'Show Repo tab in navigation'; - - @override - String get optionsCheckUpdates => 'Проверить обновления'; - - @override - String get optionsCheckUpdatesSubtitle => 'Уведомлять о наличии новой версии'; - - @override - String get optionsUpdateChannel => 'Канал обновлений'; - - @override - String get optionsUpdateChannelStable => 'Только стабильные релизы'; - - @override - String get optionsUpdateChannelPreview => 'Предварительные версии'; - - @override - String get optionsUpdateChannelWarning => - 'Предварительная версия может содержать ошибки или неполные функции'; - - @override - String get optionsClearHistory => 'Очистить историю загрузок'; - - @override - String get optionsClearHistorySubtitle => - 'Удалить все скачанные треки из истории'; - - @override - String get optionsDetailedLogging => 'Подробный лог'; - - @override - String get optionsDetailedLoggingOn => 'Ведутся подробные логи'; - - @override - String get optionsDetailedLoggingOff => 'Включить для отчётов об ошибках'; - - @override - String get extensionsTitle => 'Расширения'; - - @override - String get extensionsDisabled => 'Выключено'; - - @override - String extensionsVersion(String version) { - return 'Версия $version'; - } - - @override - String get extensionsUninstall => 'Удалить'; - - @override - String get storeTitle => 'Репозиторий расширения'; - - @override - String get storeSearch => 'Поиск расширений...'; - - @override - String get storeInstall => 'Установить'; - - @override - String get storeInstalled => 'Установлено'; - - @override - String get storeUpdate => 'Обновить'; - - @override - String get aboutTitle => 'О программе'; - - @override - String get aboutContributors => 'Участники'; - - @override - String get aboutMobileDeveloper => 'Разработчик мобильной версии'; - - @override - String get aboutOriginalCreator => 'Создатель оригинального SpotiFLAC'; - - @override - String get aboutLogoArtist => - 'Талантливый художник, который создал наш красивый логотип приложения!'; - - @override - String get aboutTranslators => 'Переводчики'; - - @override - String get aboutSpecialThanks => 'Особая благодарность'; - - @override - String get aboutLinks => 'Ссылки'; - - @override - String get aboutMobileSource => 'Исходный код мобильной версии'; - - @override - String get aboutPCSource => 'Исходный код ПК версии'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => 'Сообщить о проблеме'; - - @override - String get aboutReportIssueSubtitle => 'Сообщите о возникших проблемах'; - - @override - String get aboutFeatureRequest => 'Предложить новую функцию'; - - @override - String get aboutFeatureRequestSubtitle => - 'Предложить новые функции для приложения'; - - @override - String get aboutTelegramChannel => 'Telegram канал'; - - @override - String get aboutTelegramChannelSubtitle => 'Объявления и обновления'; - - @override - String get aboutTelegramChat => 'Сообщество в Telegram'; - - @override - String get aboutTelegramChatSubtitle => 'Чат с другими пользователями'; - - @override - String get aboutSocial => 'Соцсети'; - - @override - String get aboutApp => 'Приложение'; - - @override - String get aboutVersion => 'Версия'; - - @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'Создатель I Don\'t Have Spotify (IDHS). Резервный резолвер ссылки'; - - @override - String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; - - @override - String get artistAlbums => 'Альбомы'; - - @override - String get artistSingles => 'Синглы и EP'; - - @override - String get artistCompilations => 'Сборники'; - - @override - String get artistPopular => 'Популярное'; - - @override - String artistMonthlyListeners(String count) { - return '$count слушателей в месяц'; - } - - @override - String get trackMetadataService => 'Сервис'; - - @override - String get trackMetadataPlay => 'Воспроизвести'; - - @override - String get trackMetadataShare => 'Поделиться'; - - @override - String get trackMetadataDelete => 'Удалить'; - - @override - String get setupGrantPermission => 'Предоставить разрешение'; - - @override - String get setupSkip => 'Пропустить'; - - @override - String get setupStorageAccessRequired => 'Требуется доступ к хранилищу'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Для Android 11+ требуется разрешение \"Доступ ко всем файлам\" для сохранения файлов в выбранную вами папку загрузки.'; - - @override - String get setupOpenSettings => 'Открыть настройки'; - - @override - String get setupPermissionDeniedMessage => - 'В разрешении отказано. Пожалуйста, предоставьте все разрешения для продолжения.'; - - @override - String setupPermissionRequired(String permissionType) { - return 'Требуется разрешение $permissionType'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return 'Для оптимальной работы требуется разрешение $permissionType. Вы можете изменить это позже в настройках.'; - } - - @override - String get setupUseDefaultFolder => 'Использовать папку по умолчанию?'; - - @override - String get setupNoFolderSelected => - 'Папка не выбрана. Хотите использовать папку Музыка по умолчанию?'; - - @override - String get setupUseDefault => 'По умолчанию'; - - @override - String get setupDownloadLocationTitle => 'Папка для скачивания'; - - @override - String get setupDownloadLocationIosMessage => - 'В iOS загрузки сохраняются в папке Документы приложения. Вы можете получить к ним доступ через приложение Файлы.'; - - @override - String get setupAppDocumentsFolder => 'Папка Документы приложения'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Рекомендуется - доступ через Файлы'; - - @override - String get setupChooseFromFiles => 'Выбрать из файлов'; - - @override - String get setupChooseFromFilesSubtitle => - 'Выберите iCloud или другое местоположение'; - - @override - String get setupIosEmptyFolderWarning => - 'Ограничение iOS: пустые папки не могут быть выбраны. Выберите папку, содержащую хотя бы один файл.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive не поддерживается. Пожалуйста, используйте папку Документы.'; - - @override - String get setupDownloadInFlac => - 'Скачивайте музыку в качестве Lossless и Hi-Res'; - - @override - String get setupStorageGranted => 'Доступ к хранилищу предоставлен!'; - - @override - String get setupStorageRequired => 'Требуется доступ к хранилищу'; - - @override - String get setupStorageDescription => - 'SpotiFLAC требуется разрешение на хранение для сохранения скачанных файлов.'; - - @override - String get setupNotificationGranted => - 'Разрешение на уведомление предоставлено!'; - - @override - String get setupNotificationEnable => 'Включить уведомления'; - - @override - String get setupFolderChoose => 'Выбрать папку для скачивания'; - - @override - String get setupFolderDescription => - 'Выберите папку, в которой будет сохраняться скачанная музыка.'; - - @override - String get setupSelectFolder => 'Выбрать папку'; - - @override - String get setupEnableNotifications => 'Включить уведомления'; - - @override - String get setupNotificationBackgroundDescription => - 'Получайте уведомления о ходе и завершении загрузки. Это поможет вам отслеживать загрузки, когда приложение находится в фоновом режиме.'; - - @override - String get setupSkipForNow => 'Пропустить'; - - @override - String get setupNext => 'Далее'; - - @override - String get setupGetStarted => 'Приступить к работе'; - - @override - String get setupAllowAccessToManageFiles => - 'Пожалуйста, включите \"Разрешить доступ для управления всеми файлами\" на следующем экране.'; - - @override - String get setupLanguageTitle => 'Choose Language'; - - @override - String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; - - @override - String get setupLanguageSystemDefault => 'System Default'; - - @override - String get dialogCancel => 'Отмена'; - - @override - String get dialogSave => 'Сохранить'; - - @override - String get dialogDelete => 'Удалить'; - - @override - String get dialogRetry => 'Повторить'; - - @override - String get dialogClear => 'Очистить'; - - @override - String get dialogDone => 'Готово'; - - @override - String get dialogImport => 'Импорт'; - - @override - String get dialogDownload => 'Скачать'; - - @override - String get previewPlay => 'Play preview'; - - @override - String get previewStop => 'Stop preview'; - - @override - String get previewUnavailable => 'Preview unavailable'; - - @override - String get dialogDiscard => 'Отменить'; - - @override - String get dialogRemove => 'Убрать'; - - @override - String get dialogUninstall => 'Удалить'; - - @override - String get dialogDiscardChanges => 'Отменить изменения?'; - - @override - String get dialogUnsavedChanges => - 'Есть несохраненные изменения. Отменить их?'; - - @override - String get dialogClearAll => 'Очистить всё'; - - @override - String get dialogRemoveExtension => 'Удалить расширение'; - - @override - String get dialogRemoveExtensionMessage => - 'Вы уверены, что хотите удалить это расширение? Это действие не может быть отменено.'; - - @override - String get dialogUninstallExtension => 'Удалить расширение?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Вы уверены, что хотите удалить $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Очистить историю'; - - @override - String get dialogClearHistoryMessage => - 'Вы уверены, что хотите удалить всю историю загрузок? Это действие необратимо.'; - - @override - String get dialogDeleteSelectedTitle => 'Удалить выбранные'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0 from history?\n\nThis will also delete the files from storage.'; - } - - @override - String get dialogImportPlaylistTitle => 'Импорт плейлиста'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Найдено $count треков в CSV. Добавить их в очередь загрузки?'; - } - - @override - String csvImportTracks(int count) { - return '$count трек(-ов) из CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return '\"$trackName\" добавлен в очередь'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return 'Добавлено $count треков в очередь'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" уже скачан'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" уже есть в вашей библиотеке'; - } - - @override - String get snackbarHistoryCleared => 'История очищена'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Deleted $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Невозможно открыть файл: $error'; - } - - @override - String get snackbarViewQueue => 'Просмотр очереди'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform ссылка скопирована в буфер обмена'; - } - - @override - String get snackbarFileNotFound => 'Файл не найден'; - - @override - String get snackbarSelectExtFile => - 'Пожалуйста, выберите .spotiflac-ext-файл'; - - @override - String get snackbarProviderPrioritySaved => 'Приоритет провайдера сохранён'; - - @override - String get snackbarMetadataProviderSaved => - 'Приоритет провайдера метаданных сохранён'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return '$extensionName установлено.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName Обновлено.'; - } - - @override - String get snackbarFailedToInstall => 'Не удалось установить расширение'; - - @override - String get snackbarFailedToUpdate => 'Не удалось обновить расширение'; - - @override - String get errorRateLimited => 'Слишком много запросов'; - - @override - String get errorRateLimitedMessage => - 'Слишком много запросов. Пожалуйста, подождите минуту перед повторным поиском.'; - - @override - String get errorNoTracksFound => 'Треки не найдены'; - - @override - String get searchEmptyResultSubtitle => 'Try another keyword'; - - @override - String get errorUrlNotRecognized => 'Ссылка не распознана'; - - @override - String get errorUrlNotRecognizedMessage => - 'Эта ссылка не поддерживается. Убедитесь, что URL-адрес указан правильно и установлено совместимое расширение.'; - - @override - String get errorUrlFetchFailed => - 'Не удалось загрузить контент по этой ссылке. Пожалуйста, попробуйте еще раз.'; - - @override - String errorMissingExtensionSource(String item) { - return 'Невозможно загрузить $item: отсутствует источник расширения'; - } - - @override - String get actionPause => 'Пауза'; - - @override - String get actionResume => 'Возобновить'; - - @override - String get actionCancel => 'Отмена'; - - @override - String get actionSelectAll => 'Выбрать все'; - - @override - String get actionDeselect => 'Снять выделение'; - - @override - String selectionSelected(int count) { - return '$count выбрано'; - } - - @override - String get selectionAllSelected => 'Все треки выбраны'; - - @override - String get selectionSelectToDelete => 'Выберите треки для удаления'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Получение метаданных... $current/$total'; - } - - @override - String get progressReadingCsv => 'Чтение CSV...'; - - @override - String get searchSongs => 'Песни'; - - @override - String get searchArtists => 'Исполнители'; - - @override - String get searchAlbums => 'Альбомы'; - - @override - String get searchPlaylists => 'Плейлисты'; - - @override - String get searchSortTitle => 'Упорядочить результаты'; - - @override - String get searchSortDefault => 'По умолчанию'; - - @override - String get searchSortTitleAZ => 'Название (А-Я)'; - - @override - String get searchSortTitleZA => 'Название (Я-А)'; - - @override - String get searchSortArtistAZ => 'Исполнитель (А-Я)'; - - @override - String get searchSortArtistZA => 'Исполнитель (Я-А)'; - - @override - String get searchSortDurationShort => 'Продолжительность (наименьшая)'; - - @override - String get searchSortDurationLong => 'Продолжительность (наибольшая)'; - - @override - String get searchSortDateOldest => 'Дата релиза (старейшая)'; - - @override - String get searchSortDateNewest => 'Дата релиза (новейшая)'; - - @override - String get tooltipPlay => 'Воспроизвести'; - - @override - String get filenameFormat => 'Формат имени файла'; - - @override - String get filenameShowAdvancedTags => 'Показать расширенные теги'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Включить форматированные теги для отслеживания заполнения и шаблонов дат'; - - @override - String get folderOrganizationNone => 'Без организации'; - - @override - String get folderOrganizationByPlaylist => 'По плейлисту'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Отдельная папка для каждого плейлиста'; - - @override - String get folderOrganizationByArtist => 'По исполнителю'; - - @override - String get folderOrganizationByAlbum => 'По альбому'; - - @override - String get folderOrganizationByArtistAlbum => 'Исполнитель/Альбом'; - - @override - String get folderOrganizationDescription => - 'Сортировать скачанные файлы по папкам'; - - @override - String get folderOrganizationNoneSubtitle => 'Все файлы в папке загрузок'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Отдельная папка для каждого исполнителя'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Отдельная папка для каждого альбома'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Вложенные папки для исполнителей и альбомов'; - - @override - String get updateAvailable => 'Доступно обновление'; - - @override - String get updateLater => 'Позже'; - - @override - String get updateStartingDownload => 'Загрузка началась...'; - - @override - String get updateDownloadFailed => 'Не удалось скачать'; - - @override - String get updateFailedMessage => 'Сбой загрузки обновления'; - - @override - String get updateNewVersionReady => 'Доступна новая версия'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Текущая'; - - @override - String get updateNew => 'Новая'; - - @override - String get updateDownloading => 'Скачивание...'; - - @override - String get updateWhatsNew => 'Что нового'; - - @override - String get updateDownloadInstall => 'Скачать и установить'; - - @override - String get updateDontRemind => 'Не напоминать'; - - @override - String get providerPriorityTitle => 'Приоритет провайдера'; - - @override - String get providerPriorityDescription => - 'Перетаскивайте, чтобы изменить порядок провайдеров загрузки. Приложение будет пробовать провайдеров сверху вниз при загрузке треков.'; - - @override - String get providerPriorityInfo => - 'Если трек не доступен у первого провайдера, приложение автоматически попробует следующий.'; - - @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 providerExtension => 'Расширение'; - - @override - String get metadataProviderPriorityTitle => 'Приоритет метаданных'; - - @override - String get metadataProviderPriorityDescription => - 'Перетаскивайте, чтобы изменить порядок провайдеров метаданных. Приложение будет пробовать провайдеров сверху вниз при поиске треков и извлечении метаданных.'; - - @override - String get metadataProviderPriorityInfo => - 'Deezer не имеет ограничений по скорости и рекомендуется в качестве основного. Spotify может ограничивать скорость после большого количества запросов.'; - - @override - String get logTitle => 'Логи'; - - @override - String get logCopied => 'Логи скопированы в буфер обмена'; - - @override - String get logSearchHint => 'Поиск логов...'; - - @override - String get logFilterLevel => 'Уровень'; - - @override - String get logFilterSection => 'Фильтр'; - - @override - String get logShareLogs => 'Поделиться логами'; - - @override - String get logClearLogs => 'Очистить логи'; - - @override - String get logClearLogsTitle => 'Очистить логи'; - - @override - String get logClearLogsMessage => 'Вы уверены, что хотите очистить все логи?'; - - @override - String get logFilterBySeverity => 'Фильтровать логи по серьезности'; - - @override - String get logNoLogsYet => 'Логов нет'; - - @override - String get logNoLogsYetSubtitle => - 'Логи появятся здесь по мере использования приложения'; - - @override - String logEntriesFiltered(int count) { - return 'Записи ($count фильтровано)'; - } - - @override - String logEntries(int count) { - return 'Записи ($count)'; - } - - @override - String get channelStable => 'Стабильный'; - - @override - String get channelPreview => 'Предварительный'; - - @override - String get sectionSearchSource => 'Поиск источника'; - - @override - String get sectionDownload => 'Скачивание'; - - @override - String get sectionPerformance => 'Производительность'; - - @override - String get sectionApp => 'Приложение'; - - @override - String get sectionData => 'Данные'; - - @override - String get sectionDebug => 'Отладка'; - - @override - String get sectionService => 'Сервис'; - - @override - String get sectionAudioQuality => 'Качество аудио'; - - @override - String get sectionFileSettings => 'Настройки файла'; - - @override - String get sectionLyrics => 'Тексты песен'; - - @override - String get lyricsMode => 'Режим текстов песен'; - - @override - String get lyricsModeDescription => - 'Выберите как сохранить тексты песен при скачивании'; - - @override - String get lyricsModeEmbed => 'Вписать в файл'; - - @override - String get lyricsModeEmbedSubtitle => 'Встроить текст в метаданные FLAC'; - - @override - String get lyricsModeExternal => 'Внешний файл .lrc'; - - @override - String get lyricsModeExternalSubtitle => - 'Отдельный файл .lrc для плееров, таких, как Samsung Music'; - - @override - String get lyricsModeBoth => 'Оба варианта'; - - @override - String get lyricsModeBothSubtitle => 'Вписать и сохранить .lrc файл'; - - @override - String get sectionColor => 'Цвет'; - - @override - String get sectionTheme => 'Тема'; - - @override - String get sectionLayout => 'Разметка'; - - @override - String get sectionLanguage => 'Язык'; - - @override - String get appearanceLanguage => 'Язык приложения'; - - @override - String get settingsAppearanceSubtitle => 'Тема, цвета, дисплей'; - - @override - String get settingsDownloadSubtitle => 'Service, quality, fallback'; - - @override - String get settingsExtensionsSubtitle => 'Управление провайдерами скачивания'; - - @override - String get settingsLogsSubtitle => 'Просмотреть логи для отладки'; - - @override - String get loadingSharedLink => 'Загрузка общедоступной ссылки...'; - - @override - String get pressBackAgainToExit => 'Нажмите «Назад» ещё раз, чтобы выйти'; - - @override - String downloadAllCount(int count) { - return 'Скачать все ($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 => 'Скопировать путь к файлу'; - - @override - String get trackRemoveFromDevice => 'Удалить с устройства'; - - @override - String get trackLoadLyrics => 'Загрузить текст песни'; - - @override - String get trackMetadata => 'Метаданные'; - - @override - String get trackFileInfo => 'Информация о файле'; - - @override - String get trackLyrics => 'Текст песни'; - - @override - String get trackFileNotFound => 'Файл не найден'; - - @override - String get trackOpenInDeezer => 'Открыть в Deezer'; - - @override - String get trackOpenInSpotify => 'Открыть в Spotify'; - - @override - String get trackTrackName => 'Название'; - - @override - String get trackArtist => 'Исполнитель'; - - @override - String get trackAlbumArtist => 'Исполнитель альбома'; - - @override - String get trackAlbum => 'Альбом'; - - @override - String get trackTrackNumber => 'Номер трека'; - - @override - String get trackDiscNumber => 'Номер диска'; - - @override - String get trackDuration => 'Продолжительность'; - - @override - String get trackAudioQuality => 'Качество записи'; - - @override - String get libraryQualityLabelFileFormat => 'File format'; - - @override - String get trackReleaseDate => 'Дата выхода'; - - @override - String get trackGenre => 'Жанр'; - - @override - String get trackLabel => 'Заголовок'; - - @override - String get trackCopyright => 'Авторские права'; - - @override - String get trackDownloaded => 'Скачано'; - - @override - String get trackCopyLyrics => 'Копировать текст'; - - @override - String trackLyricsSource(String source) { - return 'Source: $source'; - } - - @override - String get trackLyricsNotAvailable => - 'Текст песни недоступен для этого трека'; - - @override - String get trackLyricsNotInFile => 'No lyrics found in this file'; - - @override - String get trackFetchOnlineLyrics => 'Fetch from Online'; - - @override - String get trackLyricsTimeout => - 'Время ожидания запроса истекло. Повторите попытку позже.'; - - @override - String get trackLyricsLoadFailed => 'Не удалось загрузить текст песни'; - - @override - String get trackEmbedLyrics => 'Вписать текст песни'; - - @override - String get trackLyricsEmbedded => 'Текст успешно добавлен'; - - @override - String get trackInstrumental => 'Инструментальный трек'; - - @override - String get trackCopiedToClipboard => 'Скопировано в буфер обмена'; - - @override - String get trackDeleteConfirmTitle => 'Удалить с устройства?'; - - @override - String get trackDeleteConfirmMessage => - 'Это приведет к окончательному удалению загруженного файла и его удалению из истории.'; - - @override - String get dateToday => 'Сегодня'; - - @override - String get dateYesterday => 'Вчера'; - - @override - String dateDaysAgo(int count) { - return '$count дней назад'; - } - - @override - String dateWeeksAgo(int count) { - return '$count недель назад'; - } - - @override - String dateMonthsAgo(int count) { - return '$count месяцев назад'; - } - - @override - String get storeFilterAll => 'Все'; - - @override - String get storeFilterMetadata => 'Метаданные'; - - @override - String get storeFilterDownload => 'Скачивание'; - - @override - String get storeFilterUtility => 'Утилиты'; - - @override - String get storeFilterLyrics => 'Тексты песен'; - - @override - String get storeFilterIntegration => 'Интеграция'; - - @override - String get storeClearFilters => 'Очистить фильтры'; - - @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 storeAddRepoButton => 'Добавить репозиторий'; - - @override - String get storeChangeRepoTooltip => 'Изменить репозиторий'; - - @override - String get storeRepoDialogTitle => 'Extension Repository'; - - @override - String get storeRepoDialogCurrent => 'Текущий репозиторий:'; - - @override - String get storeNewRepoUrlLabel => 'New Repository URL'; - - @override - String get storeLoadError => 'Failed to load repository'; - - @override - String get storeEmptyNoExtensions => 'No extensions available'; - - @override - String get storeEmptyNoResults => 'Расширения не найдены'; - - @override - String get extensionId => 'ID'; - - @override - String get extensionError => 'Ошибка'; - - @override - String get extensionCapabilities => 'Возможности'; - - @override - String get extensionMetadataProvider => 'Провайдер метаданных'; - - @override - String get extensionDownloadProvider => 'Провайдер скачивания'; - - @override - String get extensionLyricsProvider => 'Провайдер текстов'; - - @override - String get extensionUrlHandler => 'URL-обработчик'; - - @override - String get extensionQualityOptions => 'Параметры качества'; - - @override - String get extensionPostProcessingHooks => 'Хуки постобработки'; - - @override - String get extensionPermissions => 'Разрешения'; - - @override - String get extensionSettings => 'Настройки'; - - @override - String get extensionRemoveButton => 'Удалить расширение'; - - @override - String get extensionUpdated => 'Обновлено'; - - @override - String get extensionMinAppVersion => 'Мин. версия приложения'; - - @override - String get extensionCustomTrackMatching => - 'Соответствие пользовательских треков'; - - @override - String get extensionPostProcessing => 'Постобработка'; - - @override - String extensionHooksAvailable(int count) { - return 'Доступно $count хуков(ов)'; - } - - @override - String extensionPatternsCount(int count) { - return '$count шаблон(ов)'; - } - - @override - String extensionStrategy(String strategy) { - return 'Стратегия: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'Приоритет провайдера'; - - @override - String get extensionsInstalledSection => 'Установленные расширения'; - - @override - String get extensionsNoExtensions => 'Нет установленных расширений'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Установите .spotiflac-ext файлы для добавления новых провайдеров'; - - @override - String get extensionsInstallButton => 'Установить расширение'; - - @override - String get extensionsInfoTip => - 'Расширения могут добавлять новые метаданные и провайдеров загрузки. Устанавливайте только расширения из надежных источников.'; - - @override - String get extensionsInstalledSuccess => 'Расширение успешно установлено'; - - @override - String extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; - } - - @override - String get extensionsDownloadPriority => 'Приоритет скачивания'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'Установка порядок сервисов скачивания'; - - @override - String get extensionsFallbackTitle => 'Fallback Extensions'; - - @override - String get extensionsFallbackSubtitle => - 'Choose which installed download extensions can be used as fallback'; - - @override - String get extensionsNoDownloadProvider => - 'Нет расширений с провайдером загрузки'; - - @override - String get extensionsMetadataPriority => 'Приоритет метаданных'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Установка порядка поиска и источника метаданных'; - - @override - String get extensionsNoMetadataProvider => - 'Нет расширений с провайдером метаданных'; - - @override - String get extensionsSearchProvider => 'Провайдер поиска'; - - @override - String get extensionsNoCustomSearch => - 'Нет расширений с пользовательским поиском'; - - @override - String get extensionsSearchProviderDescription => - 'Выберите, какой сервис использовать для поиска треков'; - - @override - String get extensionsCustomSearch => 'Пользовательский поиск'; - - @override - String get extensionsErrorLoading => 'Ошибка загрузки расширения'; - - @override - String get qualityFlacLossless => 'FLAC Lossless'; - - @override - String get qualityFlacLosslessSubtitle => '16-бит / 44.1 кГц'; - - @override - String get qualityHiResFlac => 'Hi-Res FLAC'; - - @override - String get qualityHiResFlacSubtitle => '24-бит / до 96кГц'; - - @override - String get qualityHiResFlacMax => 'Hi-Res FLAC Макс.'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-бит / до 192кГц'; - - @override - String get downloadLossy320 => 'С потерями 320 кбит/с'; - - @override - String get downloadLossyFormat => 'Формат с потерями'; - - @override - String get downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Формат с потерями 320 кбит/с'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320 кбит/с'; - - @override - String get downloadLossyMp3Subtitle => - 'Наилучшая совместимость, ~10 Мб на трек'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; - - @override - String get downloadLossyOpus256 => 'Opus 256 кбит/с'; - - @override - String get downloadLossyOpus256Subtitle => - 'Best quality Opus, ~8MB per track'; - - @override - String get downloadLossyOpus128 => 'Opus 128 кбит/с'; - - @override - String get downloadLossyOpus128Subtitle => - 'Минимальный размер, ~4 Мб на трек'; - - @override - String get downloadAskBeforeDownload => 'Спрашивать перед скачиванием'; - - @override - String get downloadDirectory => 'Папка для скачивания'; - - @override - String get downloadSeparateSinglesFolder => 'Отдельная папка для синглов'; - - @override - String get downloadAlbumFolderStructure => 'Структура папок альбома'; - - @override - String get albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @override - String get downloadUseAlbumArtistForFolders => - 'Использовать исполнителя альбома для папок'; - - @override - String get downloadUsePrimaryArtistOnly => - 'Основной исполнитель только для папок'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - 'Список исполнителей, чьи работы были удалены из названия папки (например, Джастин Бибер, Quavo → Джастин Бибер)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - 'Полная строка исполнителя, используемая для имени папки'; - - @override - String get downloadSelectQuality => 'Выбор качества'; - - @override - String get downloadFrom => 'Скачивать из'; - - @override - String get appearanceAmoledDark => 'AMOLED'; - - @override - String get appearanceAmoledDarkSubtitle => 'Глубокий чёрный фон'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => 'Очистить всё'; - - @override - String get queueClearAllMessage => - 'Вы уверены, что хотите очистить все загрузки?'; - - @override - String get settingsAutoExportFailed => 'Автоэкспорт неудачных загрузок'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Автоматическое сохранение неудачных загрузок в TXT файл'; - - @override - String get settingsDownloadNetwork => 'Сеть для скачивания'; - - @override - String get settingsDownloadNetworkAny => 'WiFi и Мобильная сеть'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Только WiFi'; - - @override - String get settingsDownloadNetworkSubtitle => - 'Выберите, какую сеть использовать для скачивания. Когда установлено значение только WiFi — скачивания через мобильную сеть будут приостановлены.'; - - @override - String get settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'Исполнитель / Альбом'; - - @override - String get albumFolderArtistAlbumSubtitle => - 'Альбомы/Исполнитель/Название Альбома/'; - - @override - String get albumFolderArtistYearAlbum => 'Исполнитель / [Год] Альбом'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Альбомы/Исполнитель/[2005] Название Альбома/'; - - @override - String get albumFolderAlbumOnly => 'Только альбом'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Альбомы/Название Альбома/'; - - @override - String get albumFolderYearAlbum => '[Год] Альбом'; - - @override - String get albumFolderYearAlbumSubtitle => - 'Альбомы/[2005] Название Альбома /'; - - @override - String get albumFolderArtistAlbumSingles => 'Исполнитель / Альбом + Синглы'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Исполнитель/Альбом и Исполнитель/Сингл/'; - - @override - String get albumFolderArtistAlbumFlat => 'Artist / Album (Singles flat)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Artist/Album/ and Artist/song.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Удалить выбранные'; - - @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 выбрано'; - } - - @override - String get downloadedAlbumTapToSelect => 'Нажмите на треки для выбора'; - - @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 => 'Выберите треки для удаления'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Диск $discNumber'; - } - - @override - String get recentTypeArtist => 'Исполнитель'; - - @override - String get recentTypeAlbum => 'Альбом'; - - @override - String get recentTypeSong => 'Песня'; - - @override - String get recentTypePlaylist => 'Плейлист'; - - @override - String get recentEmpty => 'Нет недавних элементов'; - - @override - String get recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @override - String get recentShowAllDownloads => 'Показать все загрузки'; - - @override - String recentPlaylistInfo(String name) { - return 'Плейлист: $name'; - } - - @override - String get discographyDownload => 'Скачать дискографию'; - - @override - String get discographyDownloadAll => 'Скачать всё'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$count треков из $albumCount релизов'; - } - - @override - String get discographyAlbumsOnly => 'Только альбомы'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count треков из $albumCount альбомов'; - } - - @override - String get discographySinglesOnly => 'Только синглы и EP'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count треков из $albumCount синглов'; - } - - @override - String get discographySelectAlbums => 'Выбрать альбомы...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Выберите конкретные альбомы или синглы'; - - @override - String get discographyFetchingTracks => 'Получение треков...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return 'Получение $current из $total...'; - } - - @override - String discographySelectedCount(int count) { - return '$count выбрано'; - } - - @override - String get discographyDownloadSelected => 'Скачать выбранное'; - - @override - String discographyAddedToQueue(int count) { - return 'Добавлено $count треков в очередь'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added добавлено, $skipped уже скачано'; - } - - @override - String get discographyNoAlbums => 'Нет доступных альбомов'; - - @override - String get discographyFailedToFetch => - 'Не удалось получить некоторые альбомы'; - - @override - String get sectionStorageAccess => 'Доступ к хранилищу'; - - @override - String get allFilesAccess => 'Доступ ко всем файлам'; - - @override - String get allFilesAccessEnabledSubtitle => 'Можно записать в любую папку'; - - @override - String get allFilesAccessDisabledSubtitle => - 'Ограничено только папками медиа'; - - @override - String get allFilesAccessDescription => - 'Включите, если вы сталкиваетесь с ошибками записи при сохранении в пользовательские папки. Android 13+ по умолчанию ограничивает доступ к определенным папкам.'; - - @override - String get allFilesAccessDeniedMessage => - 'В разрешении отказано. Пожалуйста, включите функцию «Доступ ко всем файлам» в настройках системы.'; - - @override - String get allFilesAccessDisabledMessage => - 'Доступ ко всем файлам отключен. Приложение будет использовать ограниченный доступ к хранилищу.'; - - @override - String get settingsLocalLibrary => 'Локальная библиотека'; - - @override - String get settingsLocalLibrarySubtitle => - 'Сканировать и обнаружить дубликаты'; - - @override - String get settingsCache => 'Хранилище и кэш'; - - @override - String get settingsCacheSubtitle => 'Просмотреть размер и очистить кэш'; - - @override - String get libraryTitle => 'Локальная библиотека'; - - @override - String get libraryScanSettings => 'Настройки сканирования'; - - @override - String get libraryEnableLocalLibrary => 'Включить локальную библиотеку'; - - @override - String get libraryEnableLocalLibrarySubtitle => - 'Сканировать и отслеживать вашу существующую музыку'; - - @override - String get libraryFolder => 'Папка библиотеки'; - - @override - String get libraryFolderHint => 'Нажмите, чтобы выбрать папку'; - - @override - String get libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @override - String get libraryShowDuplicateIndicator => 'Показать индикатор дубликатов'; - - @override - String get libraryShowDuplicateIndicatorSubtitle => - 'Показать при поиске существующих треков'; - - @override - String get libraryAutoScan => 'Автосканирование'; - - @override - String get libraryAutoScanSubtitle => - 'Automatically scan your library for new files'; - - @override - String get libraryAutoScanOff => 'Off'; - - @override - String get libraryAutoScanOnOpen => 'Каждое открытие приложения'; - - @override - String get libraryAutoScanDaily => 'Ежедневно'; - - @override - String get libraryAutoScanWeekly => 'Еженедельно'; - - @override - String get libraryActions => 'Действия'; - - @override - String get libraryScan => 'Сканировать библиотеку'; - - @override - String get libraryScanSubtitle => 'Сканировать аудио файлы'; - - @override - String get libraryScanSelectFolderFirst => 'Сначала выберите папку'; - - @override - String get libraryCleanupMissingFiles => 'Очистка отсутствующих файлов'; - - @override - String get libraryCleanupMissingFilesSubtitle => - 'Удалить записи для файлов, которых больше не существует'; - - @override - String get libraryClear => 'Очистить библиотеку'; - - @override - String get libraryClearSubtitle => 'Удалить все сканированные треки'; - - @override - String get libraryClearConfirmTitle => 'Очистить библиотеку'; - - @override - String get libraryClearConfirmMessage => - 'Это удалит все сканированные треки из вашей библиотеки. Ваши фактические файлы не будут удалены.'; - - @override - String get libraryAbout => 'О локальной библиотеке'; - - @override - String get libraryAboutDescription => - 'Сканирует существующую коллекцию музыки для обнаружения дубликатов при загрузке. Поддерживает форматы FLAC, M4A, MP3, Opus и OGG. Метаданные читаются из тегов файлов, если доступны.'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'files', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Последнее сканирование: $time'; - } - - @override - String get libraryLastScannedNever => 'Никогда'; - - @override - String get libraryScanning => 'Сканирование...'; - - @override - String get libraryScanFinalizing => 'Завершение работы с библиотекой...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$progress% из $total файлов'; - } - - @override - String get libraryInLibrary => 'В библиотеке'; - - @override - String libraryRemovedMissingFiles(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'отсутствующих файлов', - many: 'отсутствующих файлов', - few: 'трека', - one: 'отсутствующий файл', - ); - return 'Удалено $count $_temp0 в библиотеке'; - } - - @override - String get libraryCleared => 'Библиотека очищена'; - - @override - String get libraryStorageAccessRequired => 'Требуется доступ к хранилищу'; - - @override - String get libraryStorageAccessMessage => - 'SpotiFLAC требуется доступ к хранилищу для сканирования вашей библиотеки музыки. Пожалуйста, предоставьте разрешение в настройках.'; - - @override - String get libraryFolderNotExist => 'Выбранной папки не существует'; - - @override - String get librarySourceDownloaded => 'Скачанные'; - - @override - String get librarySourceLocal => 'Локальные'; - - @override - String get libraryFilterAll => 'Все'; - - @override - String get libraryFilterDownloaded => 'Скачанные'; - - @override - String get libraryFilterLocal => 'Локальные'; - - @override - String get libraryFilterTitle => 'Фильтры'; - - @override - String get libraryFilterReset => 'Сброс'; - - @override - String get libraryFilterApply => 'Применить'; - - @override - String get libraryFilterSource => 'Источник'; - - @override - String get libraryFilterQuality => 'Качество'; - - @override - String get libraryFilterQualityHiRes => 'Hi-Res (24 бит)'; - - @override - String get libraryFilterQualityCD => 'CD (16 бит)'; - - @override - String get libraryFilterQualityLossy => 'С потерями'; - - @override - String get libraryFilterFormat => 'Формат'; - - @override - String get libraryFilterMetadata => 'Метаданные'; - - @override - String get libraryFilterMetadataComplete => 'Complete metadata'; - - @override - String get libraryFilterMetadataMissingAny => 'Не хватает метаданных'; - - @override - String get libraryFilterMetadataMissingYear => 'Отсутствует год'; - - @override - String get libraryFilterMetadataMissingGenre => 'Отсутствует жанр'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Missing album artist'; - - @override - String get libraryFilterSort => 'Сортировка'; - - @override - String get libraryFilterSortLatest => 'Последние'; - - @override - String get libraryFilterSortOldest => 'Старые'; - - @override - String get libraryFilterSortAlbumAsc => 'Альбом (А-Я)'; - - @override - String get libraryFilterSortAlbumDesc => 'Альбом (Я-А)'; - - @override - String get libraryFilterSortGenreAsc => 'Жанр (А-Я)'; - - @override - String get libraryFilterSortGenreDesc => 'Жанр (Я-А)'; - - @override - String get timeJustNow => 'Только что'; - - @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 => 'Добро пожаловать в SpotiFLAC Mobile!'; - - @override - String get tutorialWelcomeDesc => - 'Давайте научимся скачивать свою любимую музыку в качестве без потерь. В этом кратком руководстве мы покажем вам основы.'; - - @override - String get tutorialWelcomeTip1 => - 'Ищите через установленное расширение или вставьте поддерживаемую ссылку'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @override - String get tutorialWelcomeTip3 => - 'Автоматическое встраивание метаданных, обложек и текстов песен'; - - @override - String get tutorialSearchTitle => 'Поиск музыки'; - - @override - String get tutorialSearchDesc => - 'Есть два простых способа найти музыку, которую вы хотите скачать.'; - - @override - String get tutorialDownloadTitle => 'Скачивание музыки'; - - @override - String get tutorialDownloadDesc => - 'Скачивание музыки просто и быстро. Вот как это работает.'; - - @override - String get tutorialLibraryTitle => 'Ваша библиотека'; - - @override - String get tutorialLibraryDesc => - 'Вся скачанная музыка организована во вкладке Библиотека.'; - - @override - String get tutorialLibraryTip1 => - 'Просмотр прогресса загрузки и очереди на вкладке Библиотека'; - - @override - String get tutorialLibraryTip2 => - 'Нажмите на любой трек, чтобы воспроизвести его с помощью вашего музыкального плеера'; - - @override - String get tutorialLibraryTip3 => - 'Переключение между списком и сеткой для лучшего просмотра'; - - @override - String get tutorialExtensionsTitle => 'Расширения'; - - @override - String get tutorialExtensionsDesc => - 'Расширьте возможности приложения с расширениями от сообщества.'; - - @override - String get tutorialExtensionsTip1 => - 'Browse the Repo tab to discover useful extensions'; - - @override - String get tutorialExtensionsTip2 => - 'Добавить новых поставщиков загрузок или поиска'; - - @override - String get tutorialExtensionsTip3 => - 'Получайте тексты песен, улучшенные метаданные и другие возможности'; - - @override - String get tutorialSettingsTitle => 'Настройте приложение под себя'; - - @override - String get tutorialSettingsDesc => - 'Персонализируйте приложение в Настройках, чтобы оно соответствовало вашим предпочтениям.'; - - @override - String get tutorialSettingsTip1 => - 'Изменить местоположение и организацию папок для скачивания'; - - @override - String get tutorialSettingsTip2 => - 'Настройте качество и формата аудиофайла по умолчанию'; - - @override - String get tutorialSettingsTip3 => 'Настроить тему и внешний вид приложения'; - - @override - String get tutorialReadyMessage => - 'Всё готово! Начните загружать любимую музыку прямо сейчас.'; - - @override - String get libraryForceFullScan => 'Полное сканирование'; - - @override - String get libraryForceFullScanSubtitle => - 'Пересканировать все файлы, игнорировать кэш'; - - @override - String get cleanupOrphanedDownloads => 'Очистка отложенных скачиваний'; - - @override - String get cleanupOrphanedDownloadsSubtitle => - 'Удалить историю записи для файлов, которых больше не существует'; - - @override - String cleanupOrphanedDownloadsResult(int count) { - return 'Удалено $count утерянных записей из истории'; - } - - @override - String get cleanupOrphanedDownloadsNone => 'Записей без описания не найдено'; - - @override - String get cacheTitle => 'Хранилище и кэш'; - - @override - String get cacheSummaryTitle => 'Просмотр кэша'; - - @override - String get cacheSummarySubtitle => - 'Очистка кэша не приведет к удалению загруженных музыкальных файлов.'; - - @override - String cacheEstimatedTotal(String size) { - return 'Приблизительное использование кэша: $size'; - } - - @override - String get cacheSectionStorage => 'Кэшированные данные'; - - @override - String get cacheSectionMaintenance => 'Обслуживание'; - - @override - String get cacheAppDirectory => 'Папка кэша приложения'; - - @override - String get cacheAppDirectoryDesc => - 'HTTP-ответы, данные WebView и другие временные данные приложения.'; - - @override - String get cacheTempDirectory => 'Временная директория'; - - @override - String get cacheTempDirectoryDesc => - 'Временные файлы из загрузок и аудио конвертации.'; - - @override - String get cacheCoverImage => 'Кэш обложек'; - - @override - String get cacheCoverImageDesc => - 'Скачанный альбом и трек обложки. Будет заново скачан после просмотра.'; - - @override - String get cacheLibraryCover => 'Кэш обложек библиотеки'; - - @override - String get cacheLibraryCoverDesc => - 'Обложка извлечена из локальных музыкальных файлов. Будет повторно извлечено при следующем сканировании.'; - - @override - String get libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @override - String get cacheExploreFeed => 'Просмотреть кэш ленты'; - - @override - String get cacheExploreFeedDesc => - 'Изучите содержимое вкладки (новые релизы, тренды). Они обновятся при следующем посещении.'; - - @override - String get cacheTrackLookup => 'Отслеживать кэш поиска'; - - @override - String get cacheTrackLookupDesc => - 'Поиск ID трека в Spotify/Deezer. Очистка может замедлить следующие несколько поисков.'; - - @override - String get cacheCleanupUnusedDesc => - 'Удалить записи из истории загрузок и библиотеки, которые остались без файлов.'; - - @override - String get cacheNoData => 'Нет кэшированных данных'; - - @override - String cacheSizeWithFiles(String size, int count) { - return '$size в $count файлах'; - } - - @override - String cacheSizeOnly(String size) { - return '$size'; - } - - @override - String cacheEntries(int count) { - return '$count записей'; - } - - @override - String cacheClearSuccess(String target) { - return 'Очищено: $target'; - } - - @override - String get cacheClearConfirmTitle => 'Очистить кэш?'; - - @override - String cacheClearConfirmMessage(String target) { - return 'Это очистит кэш для $target. Загруженные музыкальные файлы не будут удалены.'; - } - - @override - String get cacheClearAllConfirmTitle => 'Очистить весь кэш?'; - - @override - String get cacheClearAllConfirmMessage => - 'Это очистит все категории кэша на этой странице. Скачанные музыкальные файлы не будут удалены.'; - - @override - String get cacheClearAll => 'Очистить весь кэш'; - - @override - String get cacheCleanupUnused => 'Очистка неиспользуемых данных'; - - @override - String get cacheCleanupUnusedSubtitle => - 'Удалить историю загрузок, оставшихся без просмотра, и отсутствующие записи в библиотеке'; - - @override - String cacheCleanupResult(int downloadCount, int libraryCount) { - return 'Очистка завершена: $downloadCount потерянных загрузок, $libraryCount отсутствующих записей в библиотеке'; - } - - @override - String get cacheRefreshStats => 'Обновить статистику'; - - @override - String get trackSaveCoverArt => 'Сохранить обложку'; - - @override - String get trackSaveLyrics => 'Сохранить текст (.lrc)'; - - @override - String get trackSaveLyricsProgress => 'Сохранение текста...'; - - @override - String get trackReEnrich => 'Обновить'; - - @override - String get trackReEnrichOnlineSubtitle => - 'Поиск в сети метаданных и встраивание в файл'; - - @override - String get trackReEnrichFieldCover => 'Обложка'; - - @override - String get trackReEnrichFieldLyrics => 'Текст песни'; - - @override - String get trackReEnrichFieldBasicTags => 'Альбом, Исполнитель альбома'; - - @override - String get trackReEnrichFieldTrackInfo => 'Номер трека и диска'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Дата и ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Жанр, Название, Авторские права'; - - @override - String get trackReEnrichSelectAll => 'Выбрать всё'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @override - String get trackEditMetadata => 'Редактировать метаданные'; - - @override - String trackCoverSaved(String fileName) { - return 'Обложка сохранена в $fileName'; - } - - @override - String get trackCoverNoSource => 'Нет доступных источников обложки'; - - @override - String trackLyricsSaved(String fileName) { - return 'Текст песни сохранен в $fileName'; - } - - @override - String get trackReEnrichProgress => 'Обновление метаданных...'; - - @override - String get trackReEnrichSearching => 'Поиск метаданных в сети...'; - - @override - String get trackReEnrichSuccess => 'Метаданные успешно обновлены'; - - @override - String get trackReEnrichFfmpegFailed => - 'Ошибка встраивания метаданных FFmpeg'; - - @override - 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'; - } - - @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 'Ошибка: $error'; - } - - @override - String get trackConvertFormat => 'Переконвертировать формат'; - - @override - String get trackConvertTitle => 'Конвертировать аудио'; - - @override - String get trackConvertTargetFormat => 'Целевой формат'; - - @override - String get trackConvertBitrate => 'Битрейт'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @override - String get trackConvertConfirmTitle => 'Подтвердить конвертацию'; - - @override - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ) { - return 'Конвертировать из $sourceFormat в $targetFormat $bitrate?\n\nОригинальный файл будет удален после конвертации.'; - } - - @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 trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @override - String get trackConvertLosslessHint => 'Конвертация без потери качества'; - - @override - String get trackConvertConverting => 'Конвертация аудио...'; - - @override - String trackConvertSuccess(String format) { - return 'Успешно конвертировано в $format'; - } - - @override - String get trackConvertFailed => 'Ошибка конвертации'; - - @override - String get cueSplitTitle => 'Разделить CUE Sheet'; - - @override - String cueSplitAlbum(String album) { - return 'Альбом: $album'; - } - - @override - String cueSplitArtist(String artist) { - return 'Артист: $artist'; - } - - @override - String cueSplitTrackCount(int count) { - return '$count треков'; - } - - @override - String get cueSplitConfirmTitle => 'Разделенный CUE-альбом'; - - @override - String cueSplitConfirmMessage(String album, int count) { - return 'Разбить \"$album\" на $count отдельных FLAC-файлов?'; - } - - @override - String cueSplitSplitting(int current, int total) { - return 'Разделение CUE sheet... ($current/$total)'; - } - - @override - String cueSplitSuccess(int count) { - return 'Успешно разделено на $count треков'; - } - - @override - String get cueSplitFailed => 'Разделение CUE не удалось'; - - @override - String get cueSplitNoAudioFile => 'Аудиофайл для этого CUE sheet не найден'; - - @override - String get cueSplitButton => 'Разделить на Треки'; - - @override - String get actionCreate => 'Создать'; - - @override - String get collectionFoldersTitle => 'Мои папки'; - - @override - String get collectionWishlist => 'Список желаемого'; - - @override - String get collectionLoved => 'Любимые'; - - @override - String get collectionFavoriteArtists => 'Favorite Artists'; - - @override - String get collectionPlaylist => 'Плейлист'; - - @override - String get collectionAddToPlaylist => 'Добавить в плейлист'; - - @override - String get collectionCreatePlaylist => 'Создать плейлист'; - - @override - String get collectionNoPlaylistsYet => 'Плейлисты отсутствуют'; - - @override - String collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Добавлено в \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Уже в \"$playlistName\"'; - } - - @override - String get collectionPlaylistNameHint => 'Название плейлиста'; - - @override - String get collectionPlaylistNameRequired => 'Имя плейлиста обязательно'; - - @override - String get collectionRenamePlaylist => 'Переименовать плейлист'; - - @override - String get collectionDeletePlaylist => 'Удалить плейлист'; - - @override - String get collectionPlaylistRenamed => 'Плейлист переименован'; - - @override - String get collectionWishlistEmptyTitle => 'Список желаний пуст'; - - @override - String get collectionWishlistEmptySubtitle => - 'Нажмите + на треках, чтобы сохранить то, что вы хотите скачать позже'; - - @override - String get collectionLovedEmptyTitle => 'Папка Любимые пуста'; - - @override - String get collectionLovedEmptySubtitle => - 'Нажмите \"любовь\" на треках, чтобы сохранить ваши избранные'; - - @override - String get collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @override - String get collectionPlaylistEmptyTitle => 'Плейлист пуст'; - - @override - String get collectionPlaylistEmptySubtitle => - 'Удерживайте + на любом треке, чтобы добавить его сюда'; - - @override - String get collectionRemoveFromPlaylist => 'Удалить из плейлиста'; - - @override - String get collectionRemoveFromFolder => 'Убрать из папки'; - - @override - String collectionAddedToLoved(String trackName) { - return '\"$trackName\" добавлен в Любимые'; - } - - @override - String collectionRemovedFromLoved(String trackName) { - return '\"$trackName\" удалено из Любимых'; - } - - @override - String collectionAddedToWishlist(String trackName) { - return '\"$trackName\" добавлен в список желаний'; - } - - @override - String collectionRemovedFromWishlist(String trackName) { - return '\"$trackName\" удалён из списка желаний'; - } - - @override - String collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @override - String get trackOptionAddToLoved => 'Добавить в Любимое'; - - @override - String get trackOptionRemoveFromLoved => 'Исключить из Любимых'; - - @override - String get trackOptionAddToWishlist => 'Добавить в список желаний'; - - @override - String get trackOptionRemoveFromWishlist => 'Удалить из списка желаний'; - - @override - String get artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @override - String get collectionPlaylistChangeCover => 'Изменить обложку'; - - @override - String get collectionPlaylistRemoveCover => 'Удалить обложку'; - - @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 => - 'Файлы, доступные для совместного доступа, не найдены'; - - @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 => 'Не выбраны конвертируемые треки'; - - @override - String get selectionBatchConvertConfirmTitle => 'Пакетная конвертация'; - - @override - String selectionBatchConvertConfirmMessage( - int count, - String format, - String bitrate, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Преобразовать $count $_temp0 в $format с $bitrate?'; - } - - @override - String selectionBatchConvertConfirmMessageLossless(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Конвертировать $count $_temp0 в $format? (Без потери качества)\n\nОригинальные файлы будут удалены после конвертации.'; - } - - @override - String selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Конвертировано $success треков $total в $format'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - return '$count скачано'; - } - - @override - String get downloadUseAlbumArtistForFoldersAlbumSubtitle => - 'Папка названная в честь тега Альбома Артиста'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Папка названная в честь тега Трека Артиста'; - - @override - String get lyricsProvidersTitle => 'Приоритет к поставщику текста песни'; - - @override - String get lyricsProvidersDescription => - 'Включайте, выключайте, переупорядочивайте источники текстов. Поставщики связаны сверху вниз пока проводится поиск текста.'; - - @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 'Включено ($count)'; - } - - @override - String lyricsProvidersDisabledSection(int count) { - return 'Выключено ($count)'; - } - - @override - String get lyricsProvidersAtLeastOne => - 'At least one provider must remain enabled'; - - @override - String get lyricsProvidersSaved => 'Lyrics provider priority saved'; - - @override - String get lyricsProvidersDiscardContent => - 'У вас есть несохранённые изменения, которые будут потеряны.'; - - @override - String get lyricsProviderLrclibDesc => 'Open-source synced lyrics database'; - - @override - String get lyricsProviderNeteaseDesc => - 'NetEase Cloud Music (хорош для азиатских песен)'; - - @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 Музыка (хорошо подходит для китайских песен, через прокси)'; - - @override - String get lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; - - @override - String get lyricsProviderExtensionDesc => 'Поставщик расширений'; - - @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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @override - String get tooltipLoveAll => 'Love All'; - - @override - String get tooltipAddToPlaylist => 'Добавить в плейлист'; - - @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 => 'Скачать всё'; - - @override - String dialogDownloadAllMessage(int count) { - return 'Download $count tracks?'; - } - - @override - String get homeSkipAlreadyDownloaded => 'Skip already downloaded songs'; - - @override - String get homeGoToAlbum => 'Перейти к альбому'; - - @override - String get homeAlbumInfoUnavailable => 'Album info not available'; - - @override - String get snackbarLoadingCueSheet => 'Загрузка CUE разметки...'; - - @override - String get snackbarMetadataSaved => 'Метаданные успешно сохранены'; - - @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'; - } - - @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 where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => 'Custom Folder (SAF)'; - - @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Нажмите для вставки тега:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'Регион SongLink'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => 'Netease: включение перевода'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Язык Musixmatch'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Код языка'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Авто'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @override - String get snackbarUnsupportedAudioFormat => 'Неподдерживаемый аудио формат'; - - @override - 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', - ); - 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 editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @override - String get editMetadataAutoFillFetch => 'Получить и заполнить'; - - @override - String get editMetadataAutoFillSearching => 'Поиск в сети...'; - - @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 => 'Название'; - - @override - String get editMetadataFieldArtist => 'Исполнитель'; - - @override - String get editMetadataFieldAlbum => 'Альбом'; - - @override - String get editMetadataFieldAlbumArtist => 'Исполнитель альбома'; - - @override - String get editMetadataFieldDate => 'Дата'; - - @override - String get editMetadataFieldTrackNum => 'Трек #'; - - @override - String get editMetadataFieldDiscNum => 'Диск #'; - - @override - String get editMetadataFieldGenre => 'Жанр'; - - @override - String get editMetadataFieldIsrc => 'ISRC'; - - @override - String get editMetadataFieldLabel => 'Заголовок'; - - @override - String get editMetadataFieldCopyright => 'Авторские права'; - - @override - String get editMetadataFieldCover => 'Обложка'; - - @override - String get editMetadataSelectAll => 'Все'; - - @override - String get editMetadataSelectEmpty => 'Только пустые'; - - @override - String queueDownloadingCount(int count) { - return 'Скачивание ($count)'; - } - - @override - String get queueFilteringIndicator => 'Фильтрация...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'Нет истории скачиваний'; - - @override - String get queueEmptyHistorySubtitle => 'Скачанные треки появятся здесь'; - - @override - String get selectionAllPlaylistsSelected => 'Выбраны все плейлисты'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Частота дискретизации'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Разрядность'; - - @override - String get audioAnalysisChannels => 'Каналы'; - - @override - String get audioAnalysisDuration => 'Продолжительность'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Размер'; - - @override - String get audioAnalysisDynamicRange => 'Динамический диапазон'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Сэмплы'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Авто'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Отменить скачивание?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Удерживать'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => - 'Не удалось сохранить метаданные через FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Не удалось записать метаданные обратно в хранилище'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Не удалось открыть выбор папок: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Встраивание метаданных...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Уже в библиотеке ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Уже в библиотеке'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Загрузка завершена ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Скачивание завершено'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Загрузка завершена ($completed завершено, $failed не удалось)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - 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', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Сканирование локальной библиотеки'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Сканирование библиотеки завершено'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count треков индексировано'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count исключено'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count ошибок'; - } - - @override - String get notifLibraryScanFailed => 'Ошибка сканирования библиотеки'; - - @override - String get notifLibraryScanCancelled => 'Сканирование библиотеки отменено'; - - @override - String get notifLibraryScanStopped => - 'Сканирование остановлено перед завершением.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total МБ • $percentage%'; - } - - @override - String get notifUpdateReady => 'Обновление готово'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Ошибка обновления'; - - @override - String get notifUpdateFailedBody => - 'Не удалось скачать обновление. Попробуйте позже.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import CSV'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Сохранять каждую версию качества; добавлять измеренное качество к имени файла, только если имя уже занято'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Фоновая служба Android для загрузок через расширения'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Предыдущий трек'; - - @override - String get nowPlayingNextTrack => 'Следующий трек'; - - @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'; - - @override - String get settingsSearchHint => 'Поиск в настройках'; - - @override - String settingsSearchNoResults(String query) { - return 'Нет настроек, соответствующих запросу «$query»'; - } - - @override - String get settingsGroupInterface => 'Расширения и внешний вид'; - - @override - String get settingsGroupContent => 'Контент и метаданные'; - - @override - String get settingsGroupDownloads => 'Загрузки и файлы'; - - @override - String get settingsGroupSystem => 'Система'; - - @override - String get settingsGroupHelp => 'О приложении и поддержка'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/l10n/app_localizations_tr.dart b/lib/l10n/app_localizations_tr.dart deleted file mode 100644 index 27fe1e24..00000000 --- a/lib/l10n/app_localizations_tr.dart +++ /dev/null @@ -1,5045 +0,0 @@ -// 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 Mobile'; - - @override - String get navHome => 'Ana sayfa'; - - @override - String get navLibrary => 'Kitaplığın'; - - @override - String get navSettings => 'Ayarlar'; - - @override - String get navStore => 'Depo'; - - @override - String get homeTitle => 'Ana sayfa'; - - @override - String get homeSubtitle => - 'Desteklenen bir URL yapıştırın veya isme göre arayın'; - - @override - String get homeEmptyTitle => 'Henüz arama sağlayıcısı yok'; - - @override - String get homeEmptySubtitle => 'Devam etmek için bir eklenti yükleyin.'; - - @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 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 downloadSingleFilenameFormat => 'Single Dosya Adı Formatı'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Single ve EP\'ler için dosya adı örneği. Albüm formatıyla aynı etiketleri kullanır.'; - - @override - String get downloadFolderOrganization => 'Dosya Organizasyonu'; - - @override - String get appearanceTitle => 'Görünüm'; - - @override - String get appearanceThemeSystem => 'Sistem'; - - @override - String get appearanceThemeLight => 'Açı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 optionsPrimaryProvider => 'Ana Kaynek'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Parça veya albüm adına göre arama yapmak için kullanılan hizmet'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Kullanılan eklenti: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Varsayılan Arama Sekmesi'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Yeni arama sonuçları için hangi sekmenin önce açılacağını seçin.'; - - @override - String get optionsAutoFallback => 'Diğerlerini dene'; - - @override - String get optionsAutoFallbackSubtitle => - 'İndirme başarısız olursa diğer hizmetleri dene'; - - @override - String get optionsEmbedLyrics => 'Şarkı Sözlerini Göm'; - - @override - String get optionsEmbedLyricsSubtitle => - 'İndirdiğiniz parçaların yanına senkronize edilmiş şarkı sözlerini kaydedin'; - - @override - String get optionsReplayGain => 'ReplayGain'; - - @override - String get optionsReplayGainSubtitleOn => - 'Ses yüksekliğini tara ve ReplayGain etiketlerini göm (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Devre dışı: Ses normalleştirme etiketi yok'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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 => 'Sanatçı Etiketi Modu'; - - @override - String get optionsArtistTagModeDescription => - 'Birden fazla sanatçının gömülü etiketlere nasıl yazılacağını seçin.'; - - @override - String get optionsArtistTagModeJoined => 'Birleşik tek değer'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Maksimum oynatıcı uyumluluğu için \'Sanatçı A, Sanatçı B\' şeklinde tek bir SANATÇI değeri yazın.'; - - @override - String get optionsArtistTagModeSplitVorbis => - 'FLAC/Opus için ayrılmış etiketler'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'FLAC ve Opus için her sanatçıya ayrı bir etiket yazın; MP3 ve M4A birleşik kalır.'; - - @override - String get optionsExtensionStore => 'Eklenti Deposu'; - - @override - String get optionsExtensionStoreSubtitle => - 'Gezinme menüsünde Depo sekmesini 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 extensionsTitle => 'Eklentiler'; - - @override - String get extensionsDisabled => 'Devre Dışı'; - - @override - String extensionsVersion(String version) { - return 'Versiyon $version'; - } - - @override - String get extensionsUninstall => 'Kaldır'; - - @override - String get storeTitle => 'Uzantı Deposu'; - - @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 aboutKeepAndroidOpen => 'Android\'i Açık Tutun'; - - @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 => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'I Don\'t Have Spotify (IDHS) yaratıcısı. Günü kurtaran yedek bağlantı çözücü!'; - - @override - String get aboutAppDescription => - 'Müzik meta verilerini arayın, uzantıları yönetin ve kütüphanenizi düzenleyin.'; - - @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ı Aç'; - - @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 => 'Uygulama Belgeler Klasörü'; - - @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 desteklenmiyor. Lütfen uygulama Belgeler klasörünü kullanın.'; - - @override - String get setupDownloadInFlac => - 'Müziği kayıpsız ve Hi-Res kalitesinde 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 setupLanguageTitle => 'Dil Seçin'; - - @override - String get setupLanguageDescription => - 'Uygulama için tercih ettiğiniz dili seçin. Bunu daha sonra Ayarlar\'dan değiştirebilirsiniz.'; - - @override - String get setupLanguageSystemDefault => 'Sistem Varsayılanı'; - - @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 => 'İndir'; - - @override - String get previewPlay => 'Play preview'; - - @override - String get previewStop => 'Stop preview'; - - @override - String get previewUnavailable => 'Preview unavailable'; - - @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 get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @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\" kitaplığınızda zaten mevcut'; - } - - @override - String get snackbarHistoryCleared => 'Geçmiş 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 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 => 'Sağlayıcı önceliği kaydedildi'; - - @override - String get snackbarMetadataProviderSaved => - 'Meta veri sağlayıcı önceliği kaydedildi'; - - @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 => 'Aşı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 searchEmptyResultSubtitle => 'Try another keyword'; - - @override - String get errorUrlNotRecognized => 'Bağlantı tanınamadı'; - - @override - String get errorUrlNotRecognizedMessage => - 'Bu bağlantı desteklenmiyor. URL\'nin doğru olduğundan ve uyumlu bir uzantının yüklü olduğundan emin olun.'; - - @override - String get errorUrlFetchFailed => - 'Bu bağlantıdan içerik yüklenemedi. Lütfen tekrar deneyin.'; - - @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 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 searchSortTitle => 'Sonuçları Sırala'; - - @override - String get searchSortDefault => 'Varsayılan'; - - @override - String get searchSortTitleAZ => 'Başlık (A-Z)'; - - @override - String get searchSortTitleZA => 'Başlık (Z-A)'; - - @override - String get searchSortArtistAZ => 'Sanatçı (A-Z)'; - - @override - String get searchSortArtistZA => 'Sanatçı (Z-A)'; - - @override - String get searchSortDurationShort => 'Süre (en kısa)'; - - @override - String get searchSortDurationLong => 'Süre (en uzun)'; - - @override - String get searchSortDateOldest => 'Yayın Tarihi (En eski)'; - - @override - String get searchSortDateNewest => 'Yayın Tarihi (En yeni)'; - - @override - String get tooltipPlay => 'Oynat'; - - @override - String get filenameFormat => 'Dosya adı formatı'; - - @override - String get filenameShowAdvancedTags => 'Gelişmiş etiketleri göster'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Parça numarası tamamlama ve tarih desenleri için biçimlendirilmiş etiketleri etkinleştir'; - - @override - String get folderOrganizationNone => 'Organizasyon yok'; - - @override - String get folderOrganizationByPlaylist => 'Çalma Listesine Göre'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Her çalma listesi için ayrı klasör'; - - @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 updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @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 providerPriorityFallbackExtensionsDescription => - 'Otomatik geri dönüş sırasında hangi yüklü indirme uzantılarının kullanılabileceğini seçin.'; - - @override - String get providerPriorityFallbackExtensionsHint => - 'Burada yalnızca indirme sağlayıcısı yeteneğine sahip olan ve etkinleştirilmiş uzantılar listelenir.'; - - @override - String get providerExtension => 'Eklenti'; - - @override - String get metadataProviderPriorityTitle => 'Meta Veri Önceliği'; - - @override - String get 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.'; - - @override - String get metadataProviderPriorityInfo => - 'Deezer\'da istek sınırı yoktur ve birincil olarak önerilir. Spotify, çok sayıda istekten sonra hız sınırlaması uygulayabilir.'; - - @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 => 'Günlükleri önem derecesine göre filtrele'; - - @override - String get logNoLogsYet => 'Henüz kayıt yok'; - - @override - String get logNoLogsYetSubtitle => - 'Uygulamayı kullandıkça günlükler burada görünecektir'; - - @override - String logEntriesFiltered(int count) { - return 'Kayıtlar ($count filtrelendi)'; - } - - @override - String logEntries(int count) { - return 'Kayıtlar ($count)'; - } - - @override - String get channelStable => 'Kararlı'; - - @override - String get channelPreview => 'Önizleme'; - - @override - String get sectionSearchSource => 'Arama Kaynağı'; - - @override - String get sectionDownload => 'İndir'; - - @override - String get sectionPerformance => 'Performans'; - - @override - String get sectionApp => 'Uygulama'; - - @override - String get sectionData => 'Veri'; - - @override - String get sectionDebug => 'Hata ayıklama'; - - @override - String get sectionService => 'Servis'; - - @override - String get sectionAudioQuality => 'Ses Kalitesi'; - - @override - String get sectionFileSettings => 'Dosya Ayarları'; - - @override - String get sectionLyrics => 'Şarkı sözleri'; - - @override - String get lyricsMode => 'Şarkı Sözü Modu'; - - @override - String get lyricsModeDescription => - 'Şarkı sözlerinin indirmelerinizle birlikte nasıl kaydedileceğini seçin'; - - @override - String get lyricsModeEmbed => 'Dosyaya göm'; - - @override - String get lyricsModeEmbedSubtitle => - 'Şarkı sözleri FLAC meta verilerinin içinde saklanır'; - - @override - String get lyricsModeExternal => 'Harici .lrc dosyası'; - - @override - String get lyricsModeExternalSubtitle => - 'Samsung Music gibi oynatıcılar için ayrı .lrc dosyası'; - - @override - String get lyricsModeBoth => 'Her ikisi de'; - - @override - String get lyricsModeBothSubtitle => - 'Hem göm hem de .lrc dosyası olarak kaydet'; - - @override - String get sectionColor => 'Renk'; - - @override - String get sectionTheme => 'Tema'; - - @override - String get sectionLayout => 'Düzen'; - - @override - String get sectionLanguage => 'Dil'; - - @override - String get appearanceLanguage => 'Uygulama Dili'; - - @override - String get settingsAppearanceSubtitle => 'Tema, renkler, görünüm'; - - @override - String get settingsDownloadSubtitle => 'Hizmet, kalite, yedekleme'; - - @override - String get settingsExtensionsSubtitle => 'İndirme sağlayıcılarını yönet'; - - @override - String get settingsLogsSubtitle => - 'Hata ayıklama için uygulama günlüklerini görüntüle'; - - @override - String get loadingSharedLink => 'Paylaşılan bağlantı yükleniyor...'; - - @override - String get pressBackAgainToExit => 'Çıkmak için tekrar geri basın'; - - @override - String downloadAllCount(int count) { - return 'Tümünü İndir ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count parça', - one: '1 parça', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'Dosya yolunu kopyala'; - - @override - String get trackRemoveFromDevice => 'Cihazdan kaldır'; - - @override - String get trackLoadLyrics => 'Şarkı Sözlerini Yükle'; - - @override - String get trackMetadata => 'Meta Veri'; - - @override - String get trackFileInfo => 'Dosya Bilgisi'; - - @override - String get trackLyrics => 'Şarkı Sözleri'; - - @override - String get trackFileNotFound => 'Dosya bulunamadı'; - - @override - String get trackOpenInDeezer => 'Deezer\'da aç'; - - @override - String get trackOpenInSpotify => 'Spotify\'da aç'; - - @override - String get trackTrackName => 'Parça adı'; - - @override - String get trackArtist => 'Sanatçı'; - - @override - String get trackAlbumArtist => 'Albüm sanatçısı'; - - @override - String get trackAlbum => 'Albüm'; - - @override - String get trackTrackNumber => 'Parça numarası'; - - @override - String get trackDiscNumber => 'Disk numarası'; - - @override - String get trackDuration => 'Süre'; - - @override - String get trackAudioQuality => 'Ses kalitesi'; - - @override - String get libraryQualityLabelFileFormat => 'File format'; - - @override - String get trackReleaseDate => 'Yayın tarihi'; - - @override - String get trackGenre => 'Tür'; - - @override - String get trackLabel => 'Etiket / Müzik Şirketi'; - - @override - String get trackCopyright => 'Telif Hakkı'; - - @override - String get trackDownloaded => 'İndirildi'; - - @override - String get trackCopyLyrics => 'Şarkı sözlerini kopyala'; - - @override - String trackLyricsSource(String source) { - return 'Kaynak: $source'; - } - - @override - String get trackLyricsNotAvailable => 'Bu parça için şarkı sözü mevcut değil'; - - @override - String get trackLyricsNotInFile => 'Bu dosyada şarkı sözü bulunamadı'; - - @override - String get trackFetchOnlineLyrics => 'İnternetten Getir'; - - @override - String get trackLyricsTimeout => - 'İstek zaman aşımına uğradı. Daha sonra tekrar deneyin.'; - - @override - String get trackLyricsLoadFailed => 'Şarkı sözleri yüklenemedi'; - - @override - String get trackEmbedLyrics => 'Şarkı Sözlerini Göm'; - - @override - String get trackLyricsEmbedded => 'Şarkı sözleri başarıyla gömüldü'; - - @override - String get trackInstrumental => 'Enstrümantal parça'; - - @override - String get trackCopiedToClipboard => 'Panoya kopyalandı'; - - @override - String get trackDeleteConfirmTitle => 'Cihazdan kaldırılsın mı?'; - - @override - String get trackDeleteConfirmMessage => - 'Bu işlem, indirilen dosyayı kalıcı olarak silecek ve geçmişinizden kaldıracaktır.'; - - @override - String get dateToday => 'Bugün'; - - @override - String get dateYesterday => 'Dün'; - - @override - String dateDaysAgo(int count) { - return '$count gün önce'; - } - - @override - String dateWeeksAgo(int count) { - return '$count hafta önce'; - } - - @override - String dateMonthsAgo(int count) { - return '$count ay önce'; - } - - @override - String get storeFilterAll => 'Tümü'; - - @override - String get storeFilterMetadata => 'Meta Veri'; - - @override - String get storeFilterDownload => 'İndir'; - - @override - String get storeFilterUtility => 'Araç'; - - @override - String get storeFilterLyrics => 'Şarkı Sözleri'; - - @override - String get storeFilterIntegration => 'Entegrasyon'; - - @override - String get storeClearFilters => 'Filtreleri temizle'; - - @override - String get storeAddRepoTitle => 'Uzantı Deposu Ekle'; - - @override - String get storeAddRepoDescription => - 'Uzantılara göz atmak ve yüklemek için registry.json dosyası içeren bir GitHub depo URL\'si girin.'; - - @override - String get storeRepoUrlLabel => 'Depo URL\'si'; - - @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; - - @override - String get storeAddRepoButton => 'Depo Ekle'; - - @override - String get storeChangeRepoTooltip => 'Depoyu değiştir'; - - @override - String get storeRepoDialogTitle => 'Uzantı Deposu'; - - @override - String get storeRepoDialogCurrent => 'Mevcut depo:'; - - @override - String get storeNewRepoUrlLabel => 'Yeni Depo URL\'si'; - - @override - String get storeLoadError => 'Depo yüklenemedi'; - - @override - String get storeEmptyNoExtensions => 'Uygun uzantı yok'; - - @override - String get storeEmptyNoResults => 'Uzantı bulunamadı'; - - @override - String get extensionId => 'Kimlik'; - - @override - String get extensionError => 'Hata'; - - @override - String get extensionCapabilities => 'Özellikler'; - - @override - String get extensionMetadataProvider => 'Meta Veri Sağlayıcı'; - - @override - String get extensionDownloadProvider => 'İndirme Sağlayıcı'; - - @override - String get extensionLyricsProvider => 'Şarkı Sözü Sağlayıcı'; - - @override - String get extensionUrlHandler => 'URL İşleyici'; - - @override - String get extensionQualityOptions => 'Kalite Seçenekleri'; - - @override - String get extensionPostProcessingHooks => 'Son İşlem Kancaları'; - - @override - String get extensionPermissions => 'İzinler'; - - @override - String get extensionSettings => 'Ayarlar'; - - @override - String get extensionRemoveButton => 'Uzantıyı Kaldır'; - - @override - String get extensionUpdated => 'Güncellendi'; - - @override - String get extensionMinAppVersion => 'Minimum Uygulama Sürümü'; - - @override - String get extensionCustomTrackMatching => 'Özel Parça Eşleştirme'; - - @override - String get extensionPostProcessing => 'Son İşlem'; - - @override - String extensionHooksAvailable(int count) { - return '$count kanca kullanılabilir'; - } - - @override - String extensionPatternsCount(int count) { - return '$count desen'; - } - - @override - String extensionStrategy(String strategy) { - return 'Strateji: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'Sağlayıcı Önceliği'; - - @override - String get extensionsInstalledSection => 'Kurulu uzantılar'; - - @override - String get extensionsNoExtensions => 'Hiçbir eklenti kurulmamış'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Yeni sağlayıcılar eklemek için .spotiflac-ext dosyalarını yükleyin'; - - @override - String get extensionsInstallButton => 'Uzantı Yükle'; - - @override - String get extensionsInfoTip => - 'Uzantılar yeni meta veri ve indirme sağlayıcıları ekleyebilir. Yalnızca güvenilir kaynaklardan gelen uzantıları yükleyin.'; - - @override - String get extensionsInstalledSuccess => 'Uzantı başarıyla yüklendi'; - - @override - String extensionsInstalledCount(int count) { - return '$count uzantı başarıyla yüklendi'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Yüklenen uzantı sayısı: $installed / $attempted'; - } - - @override - String get extensionsDownloadPriority => 'İndirme Önceliği'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'İndirme servisi sırasını ayarla'; - - @override - String get extensionsFallbackTitle => 'Yedekleme Uzantıları'; - - @override - String get extensionsFallbackSubtitle => - 'Hangi yüklü indirme uzantılarının yedekleme olarak kullanılabileceğini seçin'; - - @override - String get extensionsNoDownloadProvider => - 'İndirme sağlayıcısı olan uzantı yok'; - - @override - String get extensionsMetadataPriority => 'Meta Veri Önceliği'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Arama ve meta veri kaynağı sırasını ayarla'; - - @override - String get extensionsNoMetadataProvider => - 'Meta veri sağlayıcısı içeren uzantı bulunamadı'; - - @override - String get extensionsSearchProvider => 'Arama Sağlayıcısı'; - - @override - String get extensionsNoCustomSearch => 'Özel arama içeren uzantı bulunamadı'; - - @override - String get extensionsSearchProviderDescription => - 'Parça aramak için hangi servisin kullanılacağını seçin'; - - @override - String get extensionsCustomSearch => 'Özel arama'; - - @override - String get extensionsErrorLoading => 'Uzantı yüklenirken hata oluştu'; - - @override - String get qualityFlacLossless => 'FLAC Kayıpsız'; - - @override - String get qualityFlacLosslessSubtitle => '16-bit / 44.1kHz'; - - @override - String get qualityHiResFlac => 'Hi-Res FLAC'; - - @override - String get qualityHiResFlacSubtitle => '24-bit / 96kHz\'e kadar'; - - @override - String get qualityHiResFlacMax => 'Hi-Res FLAC Max'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-bit / 192kHz\'e kadar'; - - @override - String get downloadLossy320 => 'Kayıplı 320kbps'; - - @override - String get downloadLossyFormat => 'Kayıplı Format'; - - @override - String get downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Kayıplı 320kbps Formatı'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320kbps'; - - @override - String get downloadLossyMp3Subtitle => - 'En iyi uyumluluk, parça başına ~10 Mb'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'En iyi mobil uyumluluk, M4A konteyner'; - - @override - String get downloadLossyOpus256 => 'Opus 256kbps'; - - @override - String get downloadLossyOpus256Subtitle => - 'En iyi Opus kalitesi, parça başına ~8 Mb'; - - @override - String get downloadLossyOpus128 => 'Opus 128kbps'; - - @override - String get downloadLossyOpus128Subtitle => - 'En küçük boyut, parça başına ~4 Mb'; - - @override - String get downloadAskBeforeDownload => 'İndirmeden Önce Sor'; - - @override - String get downloadDirectory => 'İndirme Dizini'; - - @override - String get downloadSeparateSinglesFolder => 'Ayrı Single Klasörü'; - - @override - String get downloadAlbumFolderStructure => 'Albüm Klasör Yapısı'; - - @override - String get albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @override - String get downloadUseAlbumArtistForFolders => - 'Klasörler için Albüm Sanatçısı\'nı kullan'; - - @override - String get downloadUsePrimaryArtistOnly => - 'Klasörler için yalnızca birincil sanatçıyı kullan'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - 'Düet sanatçıları klasör adından kaldırılır (örn. Justin Bieber, Quavo → Justin Bieber)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - 'Klasör adı için tam sanatçı dizesi kullanılır'; - - @override - String get downloadSelectQuality => 'Kalite seçin'; - - @override - String get downloadFrom => 'İndirme Kaynağı'; - - @override - String get appearanceAmoledDark => 'AMOLED Koyu'; - - @override - String get appearanceAmoledDarkSubtitle => 'Saf siyah arka plan'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => 'Tümünü Temizle'; - - @override - String get queueClearAllMessage => - 'Tüm indirmeleri temizlemek istediğinizden emin misiniz?'; - - @override - String get settingsAutoExportFailed => - 'Başarısız indirmeleri otomatik dışa aktar'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Başarısız indirmeleri otomatik olarak TXT dosyasına kaydet'; - - @override - String get settingsDownloadNetwork => 'İndirme Ağı'; - - @override - String get settingsDownloadNetworkAny => 'WiFi + Mobil Veri'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Yalnızca WiFi'; - - @override - String get 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.'; - - @override - String get settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'Sanatçı / Albüm'; - - @override - String get albumFolderArtistAlbumSubtitle => - 'Albümler/Sanatçı Adı/Albüm Adı/'; - - @override - String get albumFolderArtistYearAlbum => 'Sanatçı / [Yıl] Albüm'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Albümler/Sanatçı Adı/[2005] Albüm Adı/'; - - @override - String get albumFolderAlbumOnly => 'Yalnızca Albüm'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Albümler/Albüm Adı/'; - - @override - String get albumFolderYearAlbum => '[Yıl] Albüm'; - - @override - String get albumFolderYearAlbumSubtitle => 'Albümler/[2005] Albüm Adı/'; - - @override - String get albumFolderArtistAlbumSingles => 'Sanatçı / Albüm + Singlelar'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Sanatçı/Albüm/ ve Sanatçı/Singlelar/'; - - @override - String get albumFolderArtistAlbumFlat => - 'Sanatçı / Albüm (Singlelar alt klasörsüz)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Sanatçı/Albüm/ ve Sanatçı/şarkı.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Seçilenleri Sil'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'parça', - one: 'parça', - ); - return 'Bu albümden $count $_temp0 parça silinsin mi?\n\nBu işlem dosyaları depolama alanından da kalıcı olarak silecektir.'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return '$count seçildi'; - } - - @override - String get downloadedAlbumTapToSelect => 'Seçmek için parçalara dokunun'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'parçayı', - one: 'parçayı', - ); - return '$count $_temp0 sil'; - } - - @override - String get downloadedAlbumSelectToDelete => 'Silinecek parçaları seçin'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Disk $discNumber'; - } - - @override - String get recentTypeArtist => 'Sanatçı'; - - @override - String get recentTypeAlbum => 'Albüm'; - - @override - String get recentTypeSong => 'Şarkı'; - - @override - String get recentTypePlaylist => 'Çalma Listesi'; - - @override - String get recentEmpty => 'Henüz son kullanılan öğe yok'; - - @override - String get recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @override - String get recentShowAllDownloads => 'Tüm İndirmeleri Göster'; - - @override - String recentPlaylistInfo(String name) { - return 'Çalma Listesi: $name'; - } - - @override - String get discographyDownload => 'Diskografiyi İndir'; - - @override - String get discographyDownloadAll => 'Tümünü İndir'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$albumCount yayından $count parça'; - } - - @override - String get discographyAlbumsOnly => 'Yalnızca Albümler'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$albumCount albümden $count parça'; - } - - @override - String get discographySinglesOnly => 'Yalnızca Single\'lar ve EP\'ler'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$albumCount tekliden $count parça'; - } - - @override - String get discographySelectAlbums => 'Albümleri Seç...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Belirli albümleri veya single\'ları seçin'; - - @override - String get discographyFetchingTracks => 'Parçalar getiriliyor...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return '$total üzerinden $current getiriliyor...'; - } - - @override - String discographySelectedCount(int count) { - return '$count seçildi'; - } - - @override - String get discographyDownloadSelected => 'Seçilenleri İndir'; - - @override - String discographyAddedToQueue(int count) { - return '$count parça kuyruğa eklendi'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added eklendi, $skipped zaten indirilmiş'; - } - - @override - String get discographyNoAlbums => 'Kullanılabilir albüm yok'; - - @override - String get discographyFailedToFetch => 'Bazı albümler getirilemedi'; - - @override - String get sectionStorageAccess => 'Depolama Erişimi'; - - @override - String get allFilesAccess => 'Tüm Dosyalara Erişim'; - - @override - String get allFilesAccessEnabledSubtitle => 'Herhangi bir klasöre yazabilir'; - - @override - String get allFilesAccessDisabledSubtitle => - 'Yalnızca medya klasörleriyle sınırlı'; - - @override - String get 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.'; - - @override - String get allFilesAccessDeniedMessage => - 'İzin reddedildi. Lütfen sistem ayarlarından \'Tüm dosyalara erişim\' iznini manuel olarak etkinleştirin.'; - - @override - String get allFilesAccessDisabledMessage => - 'Tüm Dosyalara Erişim devre dışı bırakıldı. Uygulama kısıtlı depolama erişimi kullanacak.'; - - @override - String get settingsLocalLibrary => 'Yerel Kitaplık'; - - @override - String get settingsLocalLibrarySubtitle => - 'Müziği tara ve kopyaları tespit et'; - - @override - String get settingsCache => 'Depolama ve Önbellek'; - - @override - String get settingsCacheSubtitle => - 'Boyutu görüntüle ve önbelleğe alınmış verileri temizle'; - - @override - String get libraryTitle => 'Yerel Kitaplık'; - - @override - String get libraryScanSettings => 'Tarama Ayarları'; - - @override - String get libraryEnableLocalLibrary => 'Yerel Kitaplığı Etkinleştir'; - - @override - String get libraryEnableLocalLibrarySubtitle => - 'Mevcut müziğinizi tarayın ve takip edin'; - - @override - String get libraryFolder => 'Kitaplık Klasörü'; - - @override - String get libraryFolderHint => 'Klasör seçmek için dokunun'; - - @override - String get libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @override - String get libraryShowDuplicateIndicator => 'Kopya Belirtecini Göster'; - - @override - String get libraryShowDuplicateIndicatorSubtitle => - 'Mevcut parçalar aranırken göster'; - - @override - String get libraryAutoScan => 'Otomatik Tarama'; - - @override - String get libraryAutoScanSubtitle => - 'Kitaplığınızı yeni dosyalar için otomatik olarak tarayın'; - - @override - String get libraryAutoScanOff => 'Kapalı'; - - @override - String get libraryAutoScanOnOpen => 'Her uygulama açılışında'; - - @override - String get libraryAutoScanDaily => 'Günlük'; - - @override - String get libraryAutoScanWeekly => 'Haftalık'; - - @override - String get libraryActions => 'Eylemler'; - - @override - String get libraryScan => 'Kitaplığı Tara'; - - @override - String get libraryScanSubtitle => 'Ses dosyaları için tara'; - - @override - String get libraryScanSelectFolderFirst => 'Önce bir klasör seçin'; - - @override - String get libraryCleanupMissingFiles => 'Eksik Dosyaları Temizle'; - - @override - String get libraryCleanupMissingFilesSubtitle => - 'Eski dosya kalıntılarını temizleyin'; - - @override - String get libraryClear => 'Kitaplığı temizle'; - - @override - String get libraryClearSubtitle => 'Taranan tüm parçaları sil'; - - @override - String get libraryClearConfirmTitle => 'Kütüphaneyi temizle'; - - @override - String get libraryClearConfirmMessage => - 'Bu işlem, kitaplığınızdaki tüm taranmış parçaları siler. Asıl müzik dosyalarınız silinmez.'; - - @override - String get libraryAbout => 'Yerel Kütüphane Hakkında'; - - @override - String get 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.'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'parçalar', - one: 'parça', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'dosyalar', - one: 'dosya', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Son tarama tarihi: $time'; - } - - @override - String get libraryLastScannedNever => 'Asla'; - - @override - String get libraryScanning => 'Scanning...'; - - @override - String get libraryScanFinalizing => 'Kütüphane sonlandırılıyor...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$total dosyanın $progress%\'si'; - } - - @override - String get libraryInLibrary => 'Kütüphanede'; - - @override - String libraryRemovedMissingFiles(int count) { - return 'Kütüphaneden $count adet eksik dosya kaldırıldı'; - } - - @override - String get libraryCleared => 'Kütüphane temizlendi'; - - @override - String get libraryStorageAccessRequired => - 'Depolama Alanına Erişim Gereklidir'; - - @override - String get 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.'; - - @override - String get libraryFolderNotExist => 'Seçilen klasör mevcut değil'; - - @override - String get librarySourceDownloaded => 'Downloaded'; - - @override - String get librarySourceLocal => 'Yerel'; - - @override - String get libraryFilterAll => 'All'; - - @override - String get libraryFilterDownloaded => 'İndirildi'; - - @override - String get libraryFilterLocal => 'Yerel'; - - @override - String get libraryFilterTitle => 'Filtreler'; - - @override - String get libraryFilterReset => 'Reset'; - - @override - String get libraryFilterApply => 'Uygula'; - - @override - String get libraryFilterSource => 'Kaynak'; - - @override - String get libraryFilterQuality => 'Kalite'; - - @override - String get libraryFilterQualityHiRes => 'Hi-Res (24bit)'; - - @override - String get libraryFilterQualityCD => 'CD (16bit)'; - - @override - String get libraryFilterQualityLossy => 'Kayıplı'; - - @override - String get libraryFilterFormat => 'Format'; - - @override - String get libraryFilterMetadata => 'Meta veriler'; - - @override - String get libraryFilterMetadataComplete => 'Tam meta veriler'; - - @override - String get libraryFilterMetadataMissingAny => 'Herhangi bir meta veri eksik'; - - @override - String get libraryFilterMetadataMissingYear => 'Kayıp yıl'; - - @override - String get libraryFilterMetadataMissingGenre => 'Eksik tür'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => 'Kayıp albüm sanatçısı'; - - @override - String get libraryFilterSort => 'Sırala'; - - @override - String get libraryFilterSortLatest => 'En sonuncu'; - - @override - String get libraryFilterSortOldest => 'En eski'; - - @override - String get libraryFilterSortAlbumAsc => 'Albüm (A-Z)'; - - @override - String get libraryFilterSortAlbumDesc => 'Albüm (Z-A)'; - - @override - String get libraryFilterSortGenreAsc => 'Tür (A-Z)'; - - @override - String get libraryFilterSortGenreDesc => 'Tür (Z-A)'; - - @override - String get timeJustNow => 'Şu anda'; - - @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 => 'SpotiFLAC Mobile\'a hoş geldiniz!'; - - @override - String get 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.'; - - @override - String get tutorialWelcomeTip1 => - 'Yüklü bir uzantıyla arama yapın veya desteklenen bir bağlantı yapıştırın'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @override - String get tutorialWelcomeTip3 => - 'Otomatik meta veri, kapak resmi ve şarkı sözü gömme'; - - @override - String get tutorialSearchTitle => 'Müzik Bulma'; - - @override - String get tutorialSearchDesc => - 'İndirmek istediğiniz müziği bulmanın iki kolay yolu vardır.'; - - @override - String get tutorialDownloadTitle => 'Müzik İndirme'; - - @override - String get tutorialDownloadDesc => - 'Müzik indirmek basit ve hızlıdır. İşte nasıl çalıştığı.'; - - @override - String get tutorialLibraryTitle => 'Kitaplığınız'; - - @override - String get tutorialLibraryDesc => - 'İndirdiğiniz tüm müzikler Kitaplık sekmesinde düzenlenir.'; - - @override - String get tutorialLibraryTip1 => - 'Kitaplık sekmesinden indirme ilerlemesini ve kuyruğu görüntüleyin'; - - @override - String get tutorialLibraryTip2 => - 'Müzik çalarınızla oynatmak için herhangi bir parçaya dokunun'; - - @override - String get tutorialLibraryTip3 => - 'Daha iyi göz atmak için liste ve ızgara görünümü arasında geçiş yapın'; - - @override - String get tutorialExtensionsTitle => 'Uzantılar'; - - @override - String get tutorialExtensionsDesc => - 'Topluluk uzantılarıyla uygulamanın yeteneklerini artırın.'; - - @override - String get tutorialExtensionsTip1 => - 'Faydalı uzantıları keşfetmek için Depo sekmesine göz atın'; - - @override - String get tutorialExtensionsTip2 => - 'Yeni indirme sağlayıcıları veya arama kaynakları ekleyin'; - - @override - String get tutorialExtensionsTip3 => - 'Şarkı sözleri, gelişmiş meta veriler ve daha fazla özellik edinin'; - - @override - String get tutorialSettingsTitle => 'Deneyiminizi Özelleştirin'; - - @override - String get tutorialSettingsDesc => - 'Uygulamayı Ayarlar\'dan tercihlerinize göre kişiselleştirin.'; - - @override - String get tutorialSettingsTip1 => - 'İndirme konumunu ve klasör düzenini değiştirin'; - - @override - String get tutorialSettingsTip2 => - 'Varsayılan ses kalitesi ve format tercihlerini ayarlayın'; - - @override - String get tutorialSettingsTip3 => - 'Uygulama temasını ve görünümünü özelleştirin'; - - @override - String get tutorialReadyMessage => - 'Her şey hazır! En sevdiğiniz müzikleri hemen indirmeye başlayın.'; - - @override - String get libraryForceFullScan => 'Tam Taramayı Zorla'; - - @override - String get libraryForceFullScanSubtitle => - 'Önbelleği yok sayarak tüm dosyaları yeniden tarayın'; - - @override - String get cleanupOrphanedDownloads => 'Yetim kalmış indirmeleri temizle'; - - @override - String get cleanupOrphanedDownloadsSubtitle => - 'Artık mevcut olmayan dosyalar için geçmiş kayıtlarını kaldırın'; - - @override - String cleanupOrphanedDownloadsResult(int count) { - return 'Geçmişten $count adet yetim kayıt kaldırıldı'; - } - - @override - String get cleanupOrphanedDownloadsNone => 'Hiçbir yetim kayıt bulunamadı'; - - @override - String get cacheTitle => 'Depolama & Önbellek'; - - @override - String get cacheSummaryTitle => 'Önbellek genel bakışı'; - - @override - String get cacheSummarySubtitle => - 'Önbelleği temizlemek, indirilen müzik dosyalarını silmeyecektir.'; - - @override - String cacheEstimatedTotal(String size) { - return 'Estimated cache usage: $size'; - } - - @override - String get cacheSectionStorage => 'Önbelleğe alınmış veriler'; - - @override - String get cacheSectionMaintenance => 'Bakım'; - - @override - String get cacheAppDirectory => 'Uygulama önbellek dizini'; - - @override - String get cacheAppDirectoryDesc => - 'HTTP yanıtları, WebView verileri ve diğer geçici uygulama verileri.'; - - @override - String get cacheTempDirectory => 'Geçici dizin'; - - @override - String get cacheTempDirectoryDesc => - 'İndirmelerden ve ses dönüştürme işlemlerinden kaynaklanan geçici dosyalar.'; - - @override - String get cacheCoverImage => 'Kapak resmi önbelleği'; - - @override - String get cacheCoverImageDesc => - 'Albüm ve şarkı kapak resimleri indirildi. Görüntülendikten sonra tekrar indirilecektir.'; - - @override - String get cacheLibraryCover => 'Kütüphane kapağı önbelleği'; - - @override - String get cacheLibraryCoverDesc => - 'Kapak resmi yerel müzik dosyalarından çıkarıldı. Bir sonraki taramada yeniden çıkarılacaktır.'; - - @override - String get libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @override - String get cacheExploreFeed => 'Besleme önbelleğini keşfedin'; - - @override - String get cacheExploreFeedDesc => - 'Sekme içeriğini keşfedin (yeni çıkanlar, trendler). Bir sonraki ziyaretinizde yenilenecektir.'; - - @override - String get cacheTrackLookup => 'İzleme arama önbelleği'; - - @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 trackSaveLyrics => 'Save Lyrics (.lrc)'; - - @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 trackReEnrichFieldCover => 'Cover Art'; - - @override - String get trackReEnrichFieldLyrics => 'Lyrics'; - - @override - String get trackReEnrichFieldBasicTags => 'Album, Album Artist'; - - @override - String get trackReEnrichFieldTrackInfo => 'Track & Disc Number'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Date & ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Genre, Label, Copyright'; - - @override - String get trackReEnrichSelectAll => 'Tümünü Seç'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @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 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 trackConvertTitle => 'Convert Audio'; - - @override - String get trackConvertTargetFormat => 'Target Format'; - - @override - String get trackConvertBitrate => 'Bitrate'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @override - String get trackConvertConfirmTitle => 'Dönüştürmeyi Onayla'; - - @override - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ) { - return '$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.'; - } - - @override - String trackConvertConfirmMessageLossless( - String sourceFormat, - String targetFormat, - ) { - return '$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.'; - } - - @override - String trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @override - String get trackConvertLosslessHint => - 'Kayıpsız dönüştürme — kalite kaybı yok'; - - @override - String get trackConvertConverting => 'Converting audio...'; - - @override - String trackConvertSuccess(String format) { - return '$format formatına başarıyla dönüştürüldü'; - } - - @override - String get trackConvertFailed => 'Dönüştürme başarısız oldu'; - - @override - String get cueSplitTitle => 'Bölünmüş CUE Sayfası'; - - @override - String cueSplitAlbum(String album) { - return 'Album: $album'; - } - - @override - String cueSplitArtist(String artist) { - return 'Artist: $artist'; - } - - @override - String cueSplitTrackCount(int count) { - return '$count parça'; - } - - @override - String get cueSplitConfirmTitle => 'Bölünmüş CUE Albümü'; - - @override - String cueSplitConfirmMessage(String album, int count) { - return '\"$album\" albümünü $count adet ayrı FLAC dosyasına bölmek ister misiniz?\n\nDosyalar aynı dizine kaydedilecektir.'; - } - - @override - String cueSplitSplitting(int current, int total) { - return 'CUE sayfası bölünüyor... ($current/$total)'; - } - - @override - String cueSplitSuccess(int count) { - return '$count parçaya başarıyla bölündü'; - } - - @override - String get cueSplitFailed => 'CUE bölme işlemi başarısız oldu'; - - @override - String get cueSplitNoAudioFile => - 'Bu CUE sayfası için ses dosyası bulunamadı'; - - @override - String get cueSplitButton => 'Parçalara Ayrılmış'; - - @override - String get actionCreate => 'Oluştur'; - - @override - String get collectionFoldersTitle => 'Klasörlerim'; - - @override - String get collectionWishlist => 'İstek listesi'; - - @override - String get collectionLoved => 'Sevilen'; - - @override - String get collectionFavoriteArtists => 'Favori Sanatçılar'; - - @override - String get collectionPlaylist => 'Çalma listesi'; - - @override - String get collectionAddToPlaylist => 'Add to playlist'; - - @override - String get collectionCreatePlaylist => 'Çalma listesi oluştur'; - - @override - String get collectionNoPlaylistsYet => 'Henüz çalma listesi yok'; - - @override - String collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count parça', - one: '1 parça', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count sanatçı', - one: '1 sanatçı', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return '\"$playlistName\"e eklendi'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Zaten \"$playlistName\" içinde'; - } - - @override - String get collectionPlaylistNameHint => 'Playlist name'; - - @override - String get collectionPlaylistNameRequired => 'Çalma listesi adı zorunludur'; - - @override - String get collectionRenamePlaylist => 'Çalma listesini yeniden adlandır'; - - @override - String get collectionDeletePlaylist => 'Çalma listesini sil'; - - @override - String get collectionPlaylistRenamed => 'Çalma listesinin adı değiştirildi'; - - @override - String get collectionWishlistEmptyTitle => 'İstek listesi boş'; - - @override - String get collectionWishlistEmptySubtitle => - 'Daha sonra indirmek istediğiniz parçaları kaydetmek için parçaların üzerine + işaretiyle dokunun'; - - @override - String get collectionLovedEmptyTitle => 'Sevilenler klasörü boş'; - - @override - String get collectionLovedEmptySubtitle => - 'Favorilerinizi kaydetmek için parçalara beğeni bırakın'; - - @override - String get collectionFavoriteArtistsEmptyTitle => 'Henüz favori sanatçım yok'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Bir sanatçının sayfasındaki kalbe dokunarak onu burada tutmaya devam edin'; - - @override - String get collectionPlaylistEmptyTitle => 'Çalma listesi boş'; - - @override - String get collectionPlaylistEmptySubtitle => - 'Buraya eklemek istediğiniz herhangi bir parçaya uzun süre basılı tutun +'; - - @override - String get collectionRemoveFromPlaylist => 'Remove from playlist'; - - @override - String get collectionRemoveFromFolder => 'Remove from folder'; - - @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 collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @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 artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @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 selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @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 => - 'Folder named after Album Artist tag'; - - @override - String get downloadUseAlbumArtistForFoldersTrackSubtitle => - 'Folder named after Track Artist tag'; - - @override - String get lyricsProvidersTitle => 'Lyrics Provider Priority'; - - @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)'; - } - - @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 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 lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, 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 => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @override - String get tooltipLoveAll => 'Love All'; - - @override - String get tooltipAddToPlaylist => 'Çalma listesine ekle'; - - @override - String snackbarRemovedTracksFromLoved(int count) { - return 'Sevilen albümünden $count parça kaldırıldı'; - } - - @override - String snackbarAddedTracksToLoved(int count) { - return 'Sevilen\'e $count parça eklendi'; - } - - @override - String get dialogDownloadAllTitle => 'Tümünü İndir'; - - @override - String dialogDownloadAllMessage(int count) { - return '$count parça indirilsin mi?'; - } - - @override - String get homeSkipAlreadyDownloaded => 'Daha önce indirilmiş şarkıları atla'; - - @override - String get homeGoToAlbum => 'Albüme Git'; - - @override - String get homeAlbumInfoUnavailable => 'Albüm bilgisi mevcut değil'; - - @override - String get snackbarLoadingCueSheet => 'CUE sayfası yükleniyor...'; - - @override - String get snackbarMetadataSaved => 'Meta veriler başarıyla kaydedildi'; - - @override - String get snackbarFailedToEmbedLyrics => 'Şarkı sözleri eklenemedi'; - - @override - String get snackbarFailedToWriteStorage => - 'Depolama alanına geri yazma işlemi başarısız oldu'; - - @override - String snackbarError(String error) { - return 'Hata: $error'; - } - - @override - String get snackbarNoActionDefined => - 'Bu düğme için tanımlanmış bir işlem yok'; - - @override - String get noTracksFoundForAlbum => 'Bu albüm için hiçbir parça bulunamadı'; - - @override - String get downloadLocationSubtitle => - 'İndirdiğiniz parçaları nereye kaydedeceğinizi seçin'; - - @override - String get storageModeAppFolder => 'Uygulama Klasörü (Önerilir)'; - - @override - String get storageModeAppFolderSubtitle => - 'Varsayılan olarak Müzik/SpotiFLAC klasörüne kaydeder'; - - @override - String get storageModeSaf => 'Özel Klasör (SAF)'; - - @override - String get storageModeSafSubtitle => - 'SD kart dahil herhangi bir klasörü seçin'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Yer tutucu olarak $artist, $title, $album, $track, $year, $date, $disc ifadelerini kullanın.'; - } - - @override - String get downloadFilenameInsertTag => 'Etiket eklemek için dokunun:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Single şarkılar ve EP\'ler ayrı bir klasöre kaydedildi'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Artist Name Filters'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'SongLink Region'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => - 'Netease: Include Translation'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Include Romanization'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Musixmatch Language'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Language code'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Auto'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @override - String get snackbarUnsupportedAudioFormat => 'Unsupported audio format'; - - @override - String get cacheRefresh => 'Yenile'; - - @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 editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @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 => 'Başlık'; - - @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'; - - @override - String queueDownloadingCount(int count) { - return 'Downloading ($count)'; - } - - @override - String get queueFilteringIndicator => 'Filtering...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks', - one: '1 track', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count albums', - one: '1 album', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'No album downloads'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Download multiple tracks from an album to see them here'; - - @override - String get queueEmptySingles => 'No single downloads'; - - @override - String get queueEmptySinglesSubtitle => - 'Single track downloads will appear here'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'No download history'; - - @override - String get queueEmptyHistorySubtitle => 'Downloaded tracks will appear here'; - - @override - String get selectionAllPlaylistsSelected => 'All playlists selected'; - - @override - String get selectionTapPlaylistsToSelect => 'Tap playlists to select'; - - @override - String get selectionSelectPlaylistsToDelete => 'Select playlists to delete'; - - @override - String get audioAnalysisTitle => 'Audio Quality Analysis'; - - @override - String get audioAnalysisDescription => - 'Verify lossless quality with spectrum analysis'; - - @override - String get audioAnalysisAnalyzing => 'Analyzing audio...'; - - @override - String get audioAnalysisSampleRate => 'Sample Rate'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Bit Depth'; - - @override - String get audioAnalysisChannels => 'Channels'; - - @override - String get audioAnalysisDuration => 'Duration'; - - @override - String get audioAnalysisNyquist => 'Nyquist'; - - @override - String get audioAnalysisFileSize => 'Size'; - - @override - String get audioAnalysisDynamicRange => 'Dynamic Range'; - - @override - String get audioAnalysisPeak => 'Peak'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Samples'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => 'Home Feed Provider'; - - @override - String get extensionsHomeFeedDescription => - 'Choose which extension provides the home feed on the main screen'; - - @override - String get extensionsHomeFeedAuto => 'Auto'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Automatically select the best available'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Use $extensionName home feed'; - } - - @override - String get extensionsNoHomeFeedExtensions => 'No extensions with home feed'; - - @override - String get cancelDownloadTitle => 'Cancel download?'; - - @override - String cancelDownloadContent(String trackName) { - return 'This will cancel the active download for \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Keep'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => 'Failed to save metadata via FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Failed to write metadata back to storage'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Failed to open folder picker: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Downloading $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Finalizing $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Embedding metadata...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Already in Library ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Already in Library'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Download Complete ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Download Complete'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Downloads Finished ($completed done, $failed failed)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - String get notifAllDownloadsComplete => 'All Downloads Complete'; - - @override - String notifTracksDownloadedSuccess(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count tracks downloaded successfully', - one: '1 track downloaded successfully', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Scanning local library'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total files • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned files scanned • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Library scan complete'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count tracks indexed'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count excluded'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count hata'; - } - - @override - String get notifLibraryScanFailed => 'Library scan failed'; - - @override - String get notifLibraryScanCancelled => 'Library scan cancelled'; - - @override - String get notifLibraryScanStopped => 'Scan stopped before completion.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total MB • $percentage%'; - } - - @override - String get notifUpdateReady => 'Güncelleme Hazır'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Update Failed'; - - @override - String get notifUpdateFailedBody => - 'Could not download update. Try again later.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import CSV'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Yapıştır'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'İndirme tamamlandı'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'İndirmeyi başlat'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Kapak Seç'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Seçili kapak'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Etiketler'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'Uygulama'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Yinelenenler'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Her kalite sürümünü sakla; ölçülen kaliteyi yalnızca ad zaten kullanılıyorsa dosya adına ekle'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Besteci'; - - @override - String get editMetadataFieldComment => 'Yorum'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Gelişmiş'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Uzantı indirmeleri için Android arka plan hizmeti'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Çevrimiçi'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Çevrimdışı'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'gerekli'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Ses'; - - @override - String get permissionStorage => 'Depolama'; - - @override - String get permissionNotification => 'Bildirim'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Sürümler'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Önceki parça'; - - @override - String get nowPlayingNextTrack => 'Sonraki parça'; - - @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'; - - @override - String get settingsSearchHint => 'Ayarlarda ara'; - - @override - String settingsSearchNoResults(String query) { - return '\"$query\" ile eşleşen ayar bulunamadı'; - } - - @override - String get settingsGroupInterface => 'Uzantılar ve görünüm'; - - @override - String get settingsGroupContent => 'İçerik ve meta veriler'; - - @override - String get settingsGroupDownloads => 'İndirmeler ve dosyalar'; - - @override - String get settingsGroupSystem => 'Sistem'; - - @override - String get settingsGroupHelp => 'Hakkında ve destek'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/l10n/app_localizations_uk.dart b/lib/l10n/app_localizations_uk.dart deleted file mode 100644 index d71947b1..00000000 --- a/lib/l10n/app_localizations_uk.dart +++ /dev/null @@ -1,5063 +0,0 @@ -// ignore: unused_import -import 'package:intl/intl.dart' as intl; -import 'app_localizations.dart'; - -// ignore_for_file: type=lint - -/// The translations for Ukrainian (`uk`). -class AppLocalizationsUk extends AppLocalizations { - AppLocalizationsUk([String locale = 'uk']) : super(locale); - - @override - String get appName => 'SpotiFLAC Mobile'; - - @override - String get navHome => 'Головна'; - - @override - String get navLibrary => 'Бібліотека'; - - @override - String get navSettings => 'Налаштування'; - - @override - String get navStore => 'Репозиторій'; - - @override - String get homeTitle => 'Головна'; - - @override - String get homeSubtitle => - 'Вставте URL-адресу яка підтримується, або виконайте пошук за назвою'; - - @override - String get homeEmptyTitle => 'No search providers yet'; - - @override - String get homeEmptySubtitle => 'Install an extension to continue.'; - - @override - String get homeSupports => - 'Підтримує: URL-адреси треків, альбомів, списків відтворення, виконавців'; - - @override - String get homeRecent => 'Нещодавні'; - - @override - String get historyFilterAll => 'Усі'; - - @override - String get historyFilterAlbums => 'Альбоми'; - - @override - String get historyFilterSingles => 'Сингли'; - - @override - String get historySearchHint => 'Історія пошуку...'; - - @override - String get settingsTitle => 'Налаштування'; - - @override - String get settingsDownload => 'Завантаження'; - - @override - String get settingsAppearance => 'Зовнішній вигляд'; - - @override - String get settingsExtensions => 'Розширення'; - - @override - String get settingsAbout => 'Про додаток'; - - @override - String get downloadTitle => 'Завантажити'; - - @override - String get downloadAskQualitySubtitle => - 'Показувати вікно вибору якості для кожного завантаження'; - - @override - String get downloadFilenameFormat => 'Формат імені файлу'; - - @override - String get downloadSingleFilenameFormat => 'Формат імені одного файлу'; - - @override - String get downloadSingleFilenameFormatDescription => - 'Шаблон назви файлу для синглів та міні-альбомів. Використовує ті самі теги, що й формат альбому.'; - - @override - String get downloadFolderOrganization => 'Організація папок'; - - @override - String get appearanceTitle => 'Зовнішній вигляд'; - - @override - String get appearanceThemeSystem => 'Системний'; - - @override - String get appearanceThemeLight => 'Світлий'; - - @override - String get appearanceThemeDark => 'Темний'; - - @override - String get appearanceDynamicColor => 'Динамічний колір'; - - @override - String get appearanceDynamicColorSubtitle => - 'Використати кольори зі своїх шпалер'; - - @override - String get appearanceHistoryView => 'Історія переглядів'; - - @override - String get appearanceHistoryViewList => 'Список'; - - @override - String get appearanceHistoryViewGrid => 'Сітка'; - - @override - String get optionsPrimaryProvider => 'Основний постачальник'; - - @override - String get optionsPrimaryProviderSubtitle => - 'Service used for searching by track or album name'; - - @override - String optionsUsingExtension(String extensionName) { - return 'Використання розширення: $extensionName'; - } - - @override - String get optionsDefaultSearchTab => 'Вкладка пошуку за замовчуванням'; - - @override - String get optionsDefaultSearchTabSubtitle => - 'Виберіть, яка вкладка відкриється першою для нових результатів пошуку.'; - - @override - String get optionsAutoFallback => 'Автоматичний резервний варіант'; - - @override - String get optionsAutoFallbackSubtitle => - 'Спробувати інші сервіси, якщо завантаження не вдається'; - - @override - String get optionsEmbedLyrics => 'Вбудований текст пісні'; - - @override - String get optionsEmbedLyricsSubtitle => - 'Save synced lyrics alongside your downloaded tracks'; - - @override - String get optionsReplayGain => 'Нормалізація звуку'; - - @override - String get optionsReplayGainSubtitleOn => - 'Сканування гучності та вбудовування тегів нормалізації звуку (EBU R128)'; - - @override - String get optionsReplayGainSubtitleOff => - 'Вимкнено: немає тегів нормалізації гучності'; - - @override - String get trackReplayGain => 'Rescan ReplayGain'; - - @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 => 'Режим тегу виконавця'; - - @override - String get optionsArtistTagModeDescription => - 'Виберіть, як будуть записуватися кілька виконавців у вбудовані теги.'; - - @override - String get optionsArtistTagModeJoined => 'Одне об\'єднане значення'; - - @override - String get optionsArtistTagModeJoinedSubtitle => - 'Для максимальної сумісності програвача напишіть одне значення ARTIST, наприклад, «Виконавець A, Виконавець B».'; - - @override - String get optionsArtistTagModeSplitVorbis => 'Розділені теги для FLAC/Opus'; - - @override - String get optionsArtistTagModeSplitVorbisSubtitle => - 'Для FLAC та Opus на кожного виконавця додати окремий тег виконавця; MP3 та M4A залишаються об’єднаними.'; - - @override - String get optionsExtensionStore => 'Репозиторій розширень'; - - @override - String get optionsExtensionStoreSubtitle => - 'Показати вкладку «Репозиторій» у навігації'; - - @override - String get optionsCheckUpdates => 'Перевірити наявність оновлень'; - - @override - String get optionsCheckUpdatesSubtitle => - 'Повідомити, коли буде доступна нова версія'; - - @override - String get optionsUpdateChannel => 'Канал оновлень'; - - @override - String get optionsUpdateChannelStable => 'Тільки стабільні релізи'; - - @override - String get optionsUpdateChannelPreview => 'Отримати попередні релізи'; - - @override - String get optionsUpdateChannelWarning => - 'Тестовий реліз може містити помилки або неповні функції'; - - @override - String get optionsClearHistory => 'Очистити історію завантажень'; - - @override - String get optionsClearHistorySubtitle => - 'Видалити всі завантажені треки з історії'; - - @override - String get optionsDetailedLogging => 'Детальне журналювання'; - - @override - String get optionsDetailedLoggingOn => 'Ведеться детальний журнал'; - - @override - String get optionsDetailedLoggingOff => 'Увімкнути для звітів про помилки'; - - @override - String get extensionsTitle => 'Розширення'; - - @override - String get extensionsDisabled => 'Вимкнені'; - - @override - String extensionsVersion(String version) { - return 'Версія $version'; - } - - @override - String get extensionsUninstall => 'Видалити'; - - @override - String get storeTitle => 'Репозиторій розширень'; - - @override - String get storeSearch => 'Розширення пошуку...'; - - @override - String get storeInstall => 'Встановити'; - - @override - String get storeInstalled => 'Встановлені'; - - @override - String get storeUpdate => 'Оновлені'; - - @override - String get aboutTitle => 'Про нас'; - - @override - String get aboutContributors => 'Автори'; - - @override - String get aboutMobileDeveloper => 'Розробник мобільної версії'; - - @override - String get aboutOriginalCreator => 'Творець оригінального SpotiFLAC'; - - @override - String get aboutLogoArtist => - 'Талановитий художник, який створив чудовий логотип нашого додатку!'; - - @override - String get aboutTranslators => 'Перекладачі'; - - @override - String get aboutSpecialThanks => 'Особлива подяка'; - - @override - String get aboutLinks => 'Посилання'; - - @override - String get aboutMobileSource => 'Мобільний вихідний код'; - - @override - String get aboutPCSource => 'Вихідний код для ПК'; - - @override - String get aboutKeepAndroidOpen => 'Keep Android Open'; - - @override - String get aboutReportIssue => 'Повідомити про проблему'; - - @override - String get aboutReportIssueSubtitle => - 'Повідомити про будь-які проблеми, з якими ви зіткнулися'; - - @override - String get aboutFeatureRequest => 'Запит на функцію'; - - @override - String get aboutFeatureRequestSubtitle => - 'Запропонувати нові функції для програми'; - - @override - String get aboutTelegramChannel => 'Телеграм-канал'; - - @override - String get aboutTelegramChannelSubtitle => 'Оголошення та оновлення'; - - @override - String get aboutTelegramChat => 'Telegram Спільнота'; - - @override - String get aboutTelegramChatSubtitle => 'Спілкуватися з іншими користувачами'; - - @override - String get aboutSocial => 'Соціальні мережі'; - - @override - String get aboutApp => 'Додаток'; - - @override - String get aboutVersion => 'Версія'; - - @override - String get aboutBinimumDesc => - 'The creator of QQDL & HiFi API. This project helped shape lossless download support.'; - - @override - String get aboutSachinsenalDesc => - 'The original HiFi project creator. A foundation for lossless-source integration.'; - - @override - String get aboutSjdonadoDesc => - 'Творець I Don\'t Have Spotify (IDHS). Резервний розв\'язувач посилань, який рятує становище!'; - - @override - String get aboutAppDescription => - 'Search music metadata, manage extensions, and organize your library.'; - - @override - String get artistAlbums => 'Альбоми'; - - @override - String get artistSingles => 'Сингли та міні-альбоми'; - - @override - String get artistCompilations => 'Збірники'; - - @override - String get artistPopular => 'Популярні'; - - @override - String artistMonthlyListeners(String count) { - return '$count слухачів щомісяця'; - } - - @override - String get trackMetadataService => 'Сервіс'; - - @override - String get trackMetadataPlay => 'Прослухати'; - - @override - String get trackMetadataShare => 'Поділитися'; - - @override - String get trackMetadataDelete => 'Видалити'; - - @override - String get setupGrantPermission => 'Надати дозвіл'; - - @override - String get setupSkip => 'Пропустити поки що'; - - @override - String get setupStorageAccessRequired => 'Потрібен доступ до сховища'; - - @override - String get setupStorageAccessMessageAndroid11 => - 'Для збереження файлів у вибрану папку завантажень для Android 11+ потрібен дозвіл «Доступ до всіх файлів».'; - - @override - String get setupOpenSettings => 'Відкрити налаштування'; - - @override - String get setupPermissionDeniedMessage => - 'Дозвіл відхилено. Будь ласка, надайте всі дозволи, щоб продовжити.'; - - @override - String setupPermissionRequired(String permissionType) { - return '$permissionType Потрібен дозвіл'; - } - - @override - String setupPermissionRequiredMessage(String permissionType) { - return '$permissionType Для найкращого досвіду потрібен дозвіл. Ви можете змінити це пізніше в налаштуваннях.'; - } - - @override - String get setupUseDefaultFolder => 'Використати папку за замовчуванням?'; - - @override - String get setupNoFolderSelected => - 'Папку не вибрано. Бажаєте використовувати папку «Музика» за замовчуванням?'; - - @override - String get setupUseDefault => 'Використовувати за замовчуванням'; - - @override - String get setupDownloadLocationTitle => 'Розташування завантаження'; - - @override - String get setupDownloadLocationIosMessage => - 'На iOS завантаження зберігаються в папці «Документи» програми. Ви можете отримати до них доступ через програму «Файли».'; - - @override - String get setupAppDocumentsFolder => 'Папка з документами програми'; - - @override - String get setupAppDocumentsFolderSubtitle => - 'Рекомендація – доступно через додаток Файли'; - - @override - String get setupChooseFromFiles => 'Вибрати з файлів'; - - @override - String get setupChooseFromFilesSubtitle => - 'Виберіть iCloud або інше місцезнаходження'; - - @override - String get setupIosEmptyFolderWarning => - 'Обмеження iOS: Не можна вибрати порожні папки. Виберіть папку, яка містить принаймні один файл.'; - - @override - String get setupIcloudNotSupported => - 'iCloud Drive не підтримується. Будь ласка, скористайтеся папкою «Документи» програми.'; - - @override - String get setupDownloadInFlac => - 'Завантажуйте музику в якості Lossless та Hi-Res'; - - @override - String get setupStorageGranted => 'Дозвіл на зберігання надано!'; - - @override - String get setupStorageRequired => 'Потрібен дозвіл на збереження файлів'; - - @override - String get setupStorageDescription => - 'SpotiFLAC потребує дозволу на збереження, щоб зберегти завантажені музичні файли.'; - - @override - String get setupNotificationGranted => 'Дозвіл на сповіщення надано!'; - - @override - String get setupNotificationEnable => 'Увімкнути сповіщення'; - - @override - String get setupFolderChoose => 'Виберати папку для завантаження'; - - @override - String get setupFolderDescription => - 'Виберіть папку, де буде збережено завантажену музику.'; - - @override - String get setupSelectFolder => 'Вибрати папку'; - - @override - String get setupEnableNotifications => 'Увімкнути сповіщення'; - - @override - String get setupNotificationBackgroundDescription => - 'Отримуйте сповіщення про прогрес та завершення завантаження. Це допомагає відстежувати завантаження, коли програма працює у фоновому режимі.'; - - @override - String get setupSkipForNow => 'Пропустити поки що'; - - @override - String get setupNext => 'Далі'; - - @override - String get setupGetStarted => 'Почати'; - - @override - String get setupAllowAccessToManageFiles => - 'Будь ласка, увімкніть опцію «Дозволити доступ для керування всіма файлами» на наступному екрані.'; - - @override - String get setupLanguageTitle => 'Choose Language'; - - @override - String get setupLanguageDescription => - 'Select your preferred language for the app. You can change this later in Settings.'; - - @override - String get setupLanguageSystemDefault => 'System Default'; - - @override - String get dialogCancel => 'Скасувати'; - - @override - String get dialogSave => 'Зберегти'; - - @override - String get dialogDelete => 'Видалити'; - - @override - String get dialogRetry => 'Повторити спробу'; - - @override - String get dialogClear => 'Очистити'; - - @override - String get dialogDone => 'Готово'; - - @override - String get dialogImport => 'Імпорт'; - - @override - String get dialogDownload => 'Завантажити'; - - @override - String get previewPlay => 'Play preview'; - - @override - String get previewStop => 'Stop preview'; - - @override - String get previewUnavailable => 'Preview unavailable'; - - @override - String get dialogDiscard => 'Відхилити'; - - @override - String get dialogRemove => 'Видалити'; - - @override - String get dialogUninstall => 'Деінсталювати'; - - @override - String get dialogDiscardChanges => 'Відхилити зміни?'; - - @override - String get dialogUnsavedChanges => - 'У вас є незбережені зміни. Ви хочете їх скасувати?'; - - @override - String get dialogClearAll => 'Очистити все'; - - @override - String get dialogRemoveExtension => 'Видалити розширення'; - - @override - String get dialogRemoveExtensionMessage => - 'Ви впевнені, що хочете видалити це розширення? Цю дію неможливо скасувати.'; - - @override - String get dialogUninstallExtension => 'Видалити розширення?'; - - @override - String dialogUninstallExtensionMessage(String extensionName) { - return 'Ви впевнені, що хочете видалити $extensionName?'; - } - - @override - String get dialogClearHistoryTitle => 'Очистити історію'; - - @override - String get dialogClearHistoryMessage => - 'Ви впевнені, що хочете очистити всю історію завантажень? Цю дію неможливо скасувати.'; - - @override - String get dialogDeleteSelectedTitle => 'Видалити вибране'; - - @override - String dialogDeleteSelectedMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Видалити $count $_temp0 з історії?\n\nЦе також видалить файли з пам\'яті.'; - } - - @override - String get dialogImportPlaylistTitle => 'Імпорт списку відтворення'; - - @override - String dialogImportPlaylistMessage(int count) { - return 'Знайдено $count треків у CSV. Додати їх до черги завантаження?'; - } - - @override - String csvImportTracks(int count) { - return '$count треків з CSV'; - } - - @override - String get collectionExportM3u => 'Export as M3U8'; - - @override - String collectionExportM3uDone(int exported, int total) { - return 'Exported $exported of $total tracks'; - } - - @override - String get collectionExportM3uNone => 'No downloaded files to export'; - - @override - String get collectionExportM3uFailed => 'Export failed'; - - @override - String get trackOpenOn => 'Open on...'; - - @override - String get trackOpenOnNoLinks => 'No platform links found for this track.'; - - @override - String get libraryReviewDuplicates => 'Review duplicates'; - - @override - String get libraryReviewDuplicatesSubtitle => - 'Find tracks stored more than once'; - - @override - String get duplicatesTitle => 'Duplicates'; - - @override - String get duplicatesEmpty => 'No duplicate tracks found.'; - - @override - String get duplicatesKeepBest => 'Keep best'; - - @override - String duplicatesKeepBestMessage(int count, String trackName) { - return 'Delete $count lower-quality copies of \"$trackName\"?'; - } - - @override - String duplicatesDeleteCopyMessage(String trackName) { - return 'Delete this copy of \"$trackName\"?'; - } - - @override - String snackbarAddedToQueue(String trackName) { - return 'Додано \"$trackName\" до черги'; - } - - @override - String snackbarAddedTracksToQueue(int count) { - return 'Додано $count треків до черги'; - } - - @override - String snackbarAlreadyDownloaded(String trackName) { - return '\"$trackName\" вже завантажено'; - } - - @override - String snackbarAlreadyInLibrary(String trackName) { - return '\"$trackName\" вже є у вашій бібліотеці'; - } - - @override - String get snackbarHistoryCleared => 'Історія очищена'; - - @override - String snackbarDeletedTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Видалено $count $_temp0'; - } - - @override - String snackbarCannotOpenFile(String error) { - return 'Не вдається відкрити файл: $error'; - } - - @override - String get snackbarViewQueue => 'Переглянути чергу'; - - @override - String snackbarUrlCopied(String platform) { - return '$platform URL-адреса скопійована в буфер обміну'; - } - - @override - String get snackbarFileNotFound => 'Файл не знайдено'; - - @override - String get snackbarSelectExtFile => - 'Будь ласка, виберіть файл .spotiflac-ext'; - - @override - String get snackbarProviderPrioritySaved => - 'Пріоритет постачальника збережено'; - - @override - String get snackbarMetadataProviderSaved => - 'Пріоритет постачальника метаданих збережено'; - - @override - String snackbarExtensionInstalled(String extensionName) { - return 'Розширення $extensionName встановлено.'; - } - - @override - String snackbarExtensionUpdated(String extensionName) { - return '$extensionName оновлено.'; - } - - @override - String get snackbarFailedToInstall => 'Не вдалося встановити розширення'; - - @override - String get snackbarFailedToUpdate => 'Не вдалося оновити розширення'; - - @override - String get errorRateLimited => 'Обмежений тариф'; - - @override - String get errorRateLimitedMessage => - 'Забагато запитів. Будь ласка, зачекайте хвилинку, перш ніж шукати знову.'; - - @override - String get errorNoTracksFound => 'Треків не знайдено'; - - @override - String get searchEmptyResultSubtitle => 'Try another keyword'; - - @override - String get errorUrlNotRecognized => 'Посилання не розпізнано'; - - @override - String get errorUrlNotRecognizedMessage => - 'Це посилання не підтримується. Переконайтеся, що URL-адреса правильна та встановлено сумісне розширення.'; - - @override - String get errorUrlFetchFailed => - 'Не вдалося завантажити вміст за цим посиланням. Спробуйте ще раз.'; - - @override - String errorMissingExtensionSource(String item) { - return 'Не вдається завантажити $item: відсутній вихідний код розширення'; - } - - @override - String get actionPause => 'Пауза'; - - @override - String get actionResume => 'Відновити'; - - @override - String get actionCancel => 'Скасувати'; - - @override - String get actionSelectAll => 'Вибрати все'; - - @override - String get actionDeselect => 'Скасувати вибір'; - - @override - String selectionSelected(int count) { - return 'Вибрано $count'; - } - - @override - String get selectionAllSelected => 'Усі треки вибрано'; - - @override - String get selectionSelectToDelete => 'Виберіть треки для видалення'; - - @override - String progressFetchingMetadata(int current, int total) { - return 'Отримання метаданих... $current/$total'; - } - - @override - String get progressReadingCsv => 'Читання CSV-файлу...'; - - @override - String get searchSongs => 'Пісні'; - - @override - String get searchArtists => 'Виконавці'; - - @override - String get searchAlbums => 'Альбоми'; - - @override - String get searchPlaylists => 'Списки відтворення'; - - @override - String get searchSortTitle => 'Сортувати результати'; - - @override - String get searchSortDefault => 'За замовчуванням'; - - @override - String get searchSortTitleAZ => 'Назва (А-Я)'; - - @override - String get searchSortTitleZA => 'Назва (Я-А)'; - - @override - String get searchSortArtistAZ => 'Виконавець (А-Я)'; - - @override - String get searchSortArtistZA => 'Виконавець (Я-А)'; - - @override - String get searchSortDurationShort => 'Тривалість (найкоротша)'; - - @override - String get searchSortDurationLong => 'Тривалість (найдовша)'; - - @override - String get searchSortDateOldest => 'Дата випуску (найстаріша)'; - - @override - String get searchSortDateNewest => 'Дата випуску (найновіша)'; - - @override - String get tooltipPlay => 'Відтворити'; - - @override - String get filenameFormat => 'Формат імені файлу'; - - @override - String get filenameShowAdvancedTags => 'Показати розширені теги'; - - @override - String get filenameShowAdvancedTagsDescription => - 'Увімкнути відформатовані теги для доповнення доріжок і шаблонів дати'; - - @override - String get folderOrganizationNone => 'Жодної організації'; - - @override - String get folderOrganizationByPlaylist => 'За списком відтворення'; - - @override - String get folderOrganizationByPlaylistSubtitle => - 'Окрема папка для кожного списку відтворення'; - - @override - String get folderOrganizationByArtist => 'За виконавцем'; - - @override - String get folderOrganizationByAlbum => 'За альбомом'; - - @override - String get folderOrganizationByArtistAlbum => 'Виконавець/Альбом'; - - @override - String get folderOrganizationDescription => - 'Упорядкувати завантажені файли в папки'; - - @override - String get folderOrganizationNoneSubtitle => 'Усі файли в папці завантажень'; - - @override - String get folderOrganizationByArtistSubtitle => - 'Окрема папка для кожного виконавця'; - - @override - String get folderOrganizationByAlbumSubtitle => - 'Окрема папка для кожного альбому'; - - @override - String get folderOrganizationByArtistAlbumSubtitle => - 'Вкладені папки для виконавця та альбому'; - - @override - String get updateAvailable => 'Доступне оновлення'; - - @override - String get updateLater => 'Пізніше'; - - @override - String get updateStartingDownload => 'Початок завантаження...'; - - @override - String get updateDownloadFailed => 'Не вдалося завантажити'; - - @override - String get updateFailedMessage => 'Не вдалося завантажити оновлення'; - - @override - String get updateNewVersionReady => 'Доступна нова версія'; - - @override - String get updateRequiredTitle => 'Update required'; - - @override - String updateRequiredNotice(int count) { - return 'This version is $count releases behind and is no longer supported. Update to keep using the app.'; - } - - @override - String get updateCurrent => 'Поточна'; - - @override - String get updateNew => 'Нова'; - - @override - String get updateDownloading => 'Завантаження...'; - - @override - String get updateWhatsNew => 'Що нового'; - - @override - String get updateDownloadInstall => 'Завантажити та встановити'; - - @override - String get updateDontRemind => 'Не нагадувати'; - - @override - String get providerPriorityTitle => 'Пріоритет постачальника'; - - @override - String get providerPriorityDescription => - 'Перетягніть, щоб змінити порядок постачальників завантажень. Під час завантаження треків програма використовуватиме постачальників зверху вниз.'; - - @override - String get providerPriorityInfo => - 'Якщо трек недоступний у першого провайдера, додаток автоматично спробує наступного.'; - - @override - String get providerPriorityFallbackExtensionsDescription => - 'Choose which installed download extensions can be used during automatic fallback.'; - - @override - String get providerPriorityFallbackExtensionsHint => - 'Тут перелічені лише ввімкнені розширення з можливістю завантаження через постачальника послуг.'; - - @override - String get providerExtension => 'Розширення'; - - @override - String get metadataProviderPriorityTitle => 'Пріоритет метаданих'; - - @override - String get metadataProviderPriorityDescription => - 'Перетягніть, щоб змінити порядок постачальників метаданих. Додаток шукатиме постачальників зверху вниз під час пошуку треків та отримання метаданих.'; - - @override - String get metadataProviderPriorityInfo => - 'Deezer не має обмежень за швидкістю та рекомендований як основний сервіс. Spotify може обмежувати швидкість після великої кількості запитів.'; - - @override - String get logTitle => 'Журнали'; - - @override - String get logCopied => 'Журнали скопійовано в буфер обміну'; - - @override - String get logSearchHint => 'Пошук журналів...'; - - @override - String get logFilterLevel => 'Рівень'; - - @override - String get logFilterSection => 'Фільтр'; - - @override - String get logShareLogs => 'Журнали обміну'; - - @override - String get logClearLogs => 'Очистити журнали'; - - @override - String get logClearLogsTitle => 'Очистити Журнали'; - - @override - String get logClearLogsMessage => - 'Ви впевнені, що хочете очистити всі журнали?'; - - @override - String get logFilterBySeverity => 'Фільтрувати журнали за рівнем серйозності'; - - @override - String get logNoLogsYet => 'Журналів поки що немає'; - - @override - String get logNoLogsYetSubtitle => - 'Журнали відображатимуться тут під час використання програми'; - - @override - String logEntriesFiltered(int count) { - return 'Записи ($count filtered)'; - } - - @override - String logEntries(int count) { - return 'Записи ($count)'; - } - - @override - String get channelStable => 'Стабільний'; - - @override - String get channelPreview => 'Бета'; - - @override - String get sectionSearchSource => 'Джерело пошуку'; - - @override - String get sectionDownload => 'Завантажити'; - - @override - String get sectionPerformance => 'Продуктивність'; - - @override - String get sectionApp => 'Додаток'; - - @override - String get sectionData => 'Дані'; - - @override - String get sectionDebug => 'Налагодження'; - - @override - String get sectionService => 'Сервіс'; - - @override - String get sectionAudioQuality => 'Якість звуку'; - - @override - String get sectionFileSettings => 'Налаштування файлу'; - - @override - String get sectionLyrics => 'Тексти пісень'; - - @override - String get lyricsMode => 'Режим тексту пісні'; - - @override - String get lyricsModeDescription => - 'Виберіть, як тексти пісень зберігатимуться разом із завантаженнями пісень.'; - - @override - String get lyricsModeEmbed => 'Вбудувати у файл'; - - @override - String get lyricsModeEmbedSubtitle => - 'Тексти пісень зберігаються в метаданих FLAC'; - - @override - String get lyricsModeExternal => 'Зовнішній файл .lrc'; - - @override - String get lyricsModeExternalSubtitle => - 'Окремий файл .lrc для плеєрів, таких як Samsung Music'; - - @override - String get lyricsModeBoth => 'Обидва'; - - @override - String get lyricsModeBothSubtitle => 'Вбудувати та зберегти файл .lrc'; - - @override - String get sectionColor => 'Колір'; - - @override - String get sectionTheme => 'Тема'; - - @override - String get sectionLayout => 'Макет'; - - @override - String get sectionLanguage => 'Мова'; - - @override - String get appearanceLanguage => 'Мова програми'; - - @override - String get settingsAppearanceSubtitle => 'Тема, кольори, дисплей'; - - @override - String get settingsDownloadSubtitle => 'Service, quality, fallback'; - - @override - String get settingsExtensionsSubtitle => - 'Керування постачальниками послуг завантаження'; - - @override - String get settingsLogsSubtitle => - 'Перегляд журналів програми для налагодження'; - - @override - String get loadingSharedLink => 'Завантаження спільного посилання...'; - - @override - String get pressBackAgainToExit => - 'Натисніть кнопку «Назад» ще раз, щоб вийти'; - - @override - String downloadAllCount(int count) { - return 'Завантажити все ($count)'; - } - - @override - String tracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треків', - one: '1 трек', - ); - return '$_temp0'; - } - - @override - String get trackCopyFilePath => 'Копіювати шлях до файлу'; - - @override - String get trackRemoveFromDevice => 'Видалити з пристрою'; - - @override - String get trackLoadLyrics => 'Завантажити текст пісні'; - - @override - String get trackMetadata => 'Метадані'; - - @override - String get trackFileInfo => 'Інформація про файл'; - - @override - String get trackLyrics => 'Тексти пісень'; - - @override - String get trackFileNotFound => 'Файл не знайдено'; - - @override - String get trackOpenInDeezer => 'Відкрити в Deezer'; - - @override - String get trackOpenInSpotify => 'Відкрити в Spotify'; - - @override - String get trackTrackName => 'Назва треку'; - - @override - String get trackArtist => 'Артист'; - - @override - String get trackAlbumArtist => 'Виконавець альбому'; - - @override - String get trackAlbum => 'Альбом'; - - @override - String get trackTrackNumber => 'Номер треку'; - - @override - String get trackDiscNumber => 'Номер диска'; - - @override - String get trackDuration => 'Тривалість'; - - @override - String get trackAudioQuality => 'Якість звуку'; - - @override - String get libraryQualityLabelFileFormat => 'File format'; - - @override - String get trackReleaseDate => 'Дата випуску'; - - @override - String get trackGenre => 'Жанр'; - - @override - String get trackLabel => 'Лейбл'; - - @override - String get trackCopyright => 'Авторське право'; - - @override - String get trackDownloaded => 'Завантажено'; - - @override - String get trackCopyLyrics => 'Скопіювати тексти пісень'; - - @override - String trackLyricsSource(String source) { - return 'Source: $source'; - } - - @override - String get trackLyricsNotAvailable => - 'Текст пісні для цього треку недоступний'; - - @override - String get trackLyricsNotInFile => 'У цьому файлі не знайдено текстів пісень'; - - @override - String get trackFetchOnlineLyrics => 'Отримати з Інтернету'; - - @override - String get trackLyricsTimeout => - 'Час очікування запиту минув. Спробуйте ще раз пізніше.'; - - @override - String get trackLyricsLoadFailed => 'Не вдалося завантажити текст пісні'; - - @override - String get trackEmbedLyrics => 'Вбудувати текст пісні'; - - @override - String get trackLyricsEmbedded => 'Текст пісні успішно вбудовано в пісню'; - - @override - String get trackInstrumental => 'Інструментальний трек'; - - @override - String get trackCopiedToClipboard => 'Скопійовано в буфер обміну'; - - @override - String get trackDeleteConfirmTitle => 'Видалити з пристрою?'; - - @override - String get trackDeleteConfirmMessage => - 'Це назавжди видалить завантажений файл і вилучить його з вашої історії.'; - - @override - String get dateToday => 'Сьогодні'; - - @override - String get dateYesterday => 'Вчора'; - - @override - String dateDaysAgo(int count) { - return '$count днів тому'; - } - - @override - String dateWeeksAgo(int count) { - return '$count тижнів тому'; - } - - @override - String dateMonthsAgo(int count) { - return '$count місяців тому'; - } - - @override - String get storeFilterAll => 'Усі'; - - @override - String get storeFilterMetadata => 'Метадані'; - - @override - String get storeFilterDownload => 'Завантажити'; - - @override - String get storeFilterUtility => 'Утиліта'; - - @override - String get storeFilterLyrics => 'Тексти пісень'; - - @override - String get storeFilterIntegration => 'Інтеграція'; - - @override - String get storeClearFilters => 'Очистити фільтри'; - - @override - String get storeAddRepoTitle => 'Додати репозиторій розширень'; - - @override - String get storeAddRepoDescription => - 'Введіть URL-адресу репозиторію GitHub, яка містить файл registry.json, для перегляду та встановлення розширень.'; - - @override - String get storeRepoUrlLabel => 'URL-адреса репозиторію'; - - @override - String get storeRepoUrlHint => 'https://github.com/user/repo'; - - @override - String get storeAddRepoButton => 'Додати репозиторій'; - - @override - String get storeChangeRepoTooltip => 'Змінити репозиторій'; - - @override - String get storeRepoDialogTitle => 'Репозиторій розширень'; - - @override - String get storeRepoDialogCurrent => 'Поточний репозиторій:'; - - @override - String get storeNewRepoUrlLabel => 'Нова URL-адреса репозиторію'; - - @override - String get storeLoadError => 'Не вдалося завантажити репозиторій'; - - @override - String get storeEmptyNoExtensions => 'Розширень немає'; - - @override - String get storeEmptyNoResults => 'Розширень не знайдено'; - - @override - String get extensionId => 'Ідентифікатор'; - - @override - String get extensionError => 'Помилка'; - - @override - String get extensionCapabilities => 'Можливості'; - - @override - String get extensionMetadataProvider => 'Постачальник метаданих'; - - @override - String get extensionDownloadProvider => 'Постачальник завантажень'; - - @override - String get extensionLyricsProvider => 'Постачальник текстів пісень'; - - @override - String get extensionUrlHandler => 'Обробник URL-адрес'; - - @override - String get extensionQualityOptions => 'Варіанти якості'; - - @override - String get extensionPostProcessingHooks => 'Хуки пост-обробки'; - - @override - String get extensionPermissions => 'Дозволи'; - - @override - String get extensionSettings => 'Налаштування'; - - @override - String get extensionRemoveButton => 'Видалити розширення'; - - @override - String get extensionUpdated => 'Оновлено'; - - @override - String get extensionMinAppVersion => 'Мінімальна версія програми'; - - @override - String get extensionCustomTrackMatching => 'Підбір користувацьких треків'; - - @override - String get extensionPostProcessing => 'Післяобробка'; - - @override - String extensionHooksAvailable(int count) { - return '$count доступних хуків'; - } - - @override - String extensionPatternsCount(int count) { - return '$count шаблон(ів)'; - } - - @override - String extensionStrategy(String strategy) { - return 'Стратегія: $strategy'; - } - - @override - String get extensionsProviderPrioritySection => 'Пріоритет постачальника'; - - @override - String get extensionsInstalledSection => 'Встановлені розширення'; - - @override - String get extensionsNoExtensions => 'Розширень не встановлено'; - - @override - String get extensionsNoExtensionsSubtitle => - 'Встановіть файли .spotiflac-ext, щоб додати нових провайдерів'; - - @override - String get extensionsInstallButton => 'Встановити розширення'; - - @override - String get extensionsInfoTip => - 'Розширення можуть додавати нові метадані та завантажувати постачальників. Встановлюйте розширення лише з перевірених джерел.'; - - @override - String get extensionsInstalledSuccess => 'Розширення успішно встановлено'; - - @override - String extensionsInstalledCount(int count) { - return '$count extensions installed successfully'; - } - - @override - String extensionsInstallPartialSuccess(int installed, int attempted) { - return 'Installed $installed of $attempted extensions'; - } - - @override - String get extensionsDownloadPriority => 'Пріоритет завантаження'; - - @override - String get extensionsDownloadPrioritySubtitle => - 'Встановити порядок завантаження'; - - @override - String get extensionsFallbackTitle => 'Резервні розширення'; - - @override - String get extensionsFallbackSubtitle => - 'Виберіть, які встановлені розширення для завантаження можна використовувати як резервні'; - - @override - String get extensionsNoDownloadProvider => - 'Без розширень із постачальником завантажень'; - - @override - String get extensionsMetadataPriority => 'Пріоритет метаданих'; - - @override - String get extensionsMetadataPrioritySubtitle => - 'Встановити порядок пошуку та джерел метаданих'; - - @override - String get extensionsNoMetadataProvider => - 'Без розширень із постачальником метаданих'; - - @override - String get extensionsSearchProvider => 'Постачальник пошуку'; - - @override - String get extensionsNoCustomSearch => - 'Без розширень із користувацьким пошуком'; - - @override - String get extensionsSearchProviderDescription => - 'Виберіть, який сервіс використовувати для пошуку треків'; - - @override - String get extensionsCustomSearch => 'Користувацький пошук'; - - @override - String get extensionsErrorLoading => 'Помилка завантаження розширення'; - - @override - String get qualityFlacLossless => 'FLAC без втрат'; - - @override - String get qualityFlacLosslessSubtitle => '16 біт / 44,1 кГц'; - - @override - String get qualityHiResFlac => 'FLAC високої роздільної здатності'; - - @override - String get qualityHiResFlacSubtitle => '24-біт / до 96 кГц'; - - @override - String get qualityHiResFlacMax => 'FLAC Max з високою роздільною здатністю'; - - @override - String get qualityHiResFlacMaxSubtitle => '24-біт / до 192 кГц'; - - @override - String get downloadLossy320 => 'Lossy (із втратами) 320 кбіт/с'; - - @override - String get downloadLossyFormat => 'Формат із втратами'; - - @override - String get downloadAutoConvert => 'Auto-convert after download'; - - @override - String get downloadAutoConvertSubtitle => - 'Convert completed downloads to a smaller lossy format. The original is replaced only after conversion succeeds.'; - - @override - String get downloadAutoConvertFormat => 'Output format'; - - @override - String get downloadAutoConvertFormatSubtitle => - 'Choose the lossy format used for newly completed downloads.'; - - @override - String get downloadAutoConvertBitrate => 'Output quality'; - - @override - String get downloadAutoConvertBitrateSubtitle => - 'Higher bitrates preserve more detail but create larger files.'; - - @override - String get downloadAutoConvertMp3Subtitle => - 'Best compatibility across players and devices'; - - @override - String get downloadAutoConvertM4aSubtitle => - 'Efficient AAC audio in an M4A container'; - - @override - String get downloadAutoConvertOpusSubtitle => - 'Best efficiency for modern players'; - - @override - String get downloadLossy320Format => 'Формат із втратами 320 кбіт/с'; - - @override - String get downloadLossy320FormatDesc => - 'Choose the output format for 320kbps lossy downloads. The original stream will be converted to your selected format when needed.'; - - @override - String get downloadLossyMp3 => 'MP3 320 кбіт/с'; - - @override - String get downloadLossyMp3Subtitle => - 'Найкраща сумісність, ~10 МБ на доріжку'; - - @override - String get downloadLossyAac => 'AAC/M4A 320kbps'; - - @override - String get downloadLossyAacSubtitle => - 'Best mobile compatibility, M4A container'; - - @override - String get downloadLossyOpus256 => 'Opus 256 кбіт/с'; - - @override - String get downloadLossyOpus256Subtitle => - 'Opus найкращої якості, ~8 МБ на трек'; - - @override - String get downloadLossyOpus128 => 'Opus 128 кбіт/с'; - - @override - String get downloadLossyOpus128Subtitle => - 'Найменший розмір, ~4 МБ на доріжку'; - - @override - String get downloadAskBeforeDownload => 'Запитувати перед завантаженням'; - - @override - String get downloadDirectory => 'Каталог завантажень'; - - @override - String get downloadSeparateSinglesFolder => 'Окрема папка для синглів'; - - @override - String get downloadAlbumFolderStructure => 'Структура папок альбому'; - - @override - String get albumFolderStructureDescription => - 'Choose how album folders are structured'; - - @override - String get downloadUseAlbumArtistForFolders => - 'Використовувати виконавця альбому для папок'; - - @override - String get downloadUsePrimaryArtistOnly => - 'Тільки основний виконавець для папок'; - - @override - String get downloadUsePrimaryArtistOnlyEnabled => - 'Вибраних виконавців видалити з назви папки (наприклад, Джастін Бібер, Quavo → Джастін Бібер)'; - - @override - String get downloadUsePrimaryArtistOnlyDisabled => - 'Повний рядок виконавця, що використовується для назви папки'; - - @override - String get downloadSelectQuality => 'Вибрати якість'; - - @override - String get downloadFrom => 'Завантажити з'; - - @override - String get appearanceAmoledDark => 'Темний AMOLED'; - - @override - String get appearanceAmoledDarkSubtitle => 'Чисто чорний фон'; - - @override - String get appearanceHeroAnimations => 'Hero animations'; - - @override - String get appearanceHeroAnimationsSubtitle => - 'Fly covers between screens, e.g. when opening the player'; - - @override - String get appearanceForceBlur => 'Always use blur effects'; - - @override - String get appearanceForceBlurSubtitle => - 'Enable the navigation bar blur even on devices where it is off by default. May cost performance.'; - - @override - String get queueClearAll => 'Усі'; - - @override - String get queueClearAllMessage => - 'Ви впевнені, що хочете очистити всі завантаження?'; - - @override - String get settingsAutoExportFailed => - 'Автоматичний експорт невдалих завантажень'; - - @override - String get settingsAutoExportFailedSubtitle => - 'Автоматично зберігати невдалі завантаження у файл TXT'; - - @override - String get settingsDownloadNetwork => 'Мережа для завантаження'; - - @override - String get settingsDownloadNetworkAny => 'Wi-Fi + мобільний інтернет'; - - @override - String get settingsDownloadNetworkWifiOnly => 'Тільки Wi-Fi'; - - @override - String get settingsDownloadNetworkSubtitle => - 'Вибрати мережу для завантажень. Якщо встановлено значення «Тільки Wi-Fi», завантаження призупиняться через мобільні дані.'; - - @override - String get settingsConcurrentDownloads => 'Concurrent downloads'; - - @override - String get settingsConcurrentDownloadsSubtitle => - 'Downloading several tracks at once is faster, but some providers may rate-limit parallel requests.'; - - @override - String get concurrentDownloadsOne => '1 track at a time'; - - @override - String concurrentDownloadsCount(int count) { - return 'Up to $count tracks at once'; - } - - @override - String get albumFolderArtistAlbum => 'Артист / Альбом'; - - @override - String get albumFolderArtistAlbumSubtitle => - 'Альбоми/Ім\'я артиста/Назва альбому/'; - - @override - String get albumFolderArtistYearAlbum => 'Артист / [Рік] Альбом'; - - @override - String get albumFolderArtistYearAlbumSubtitle => - 'Альбоми/Ім\'я Виконавця/[2005] Назва альбому/'; - - @override - String get albumFolderAlbumOnly => 'Тільки альбом'; - - @override - String get albumFolderAlbumOnlySubtitle => 'Альбоми/Назва Альбому/'; - - @override - String get albumFolderYearAlbum => '[Рік] Альбом'; - - @override - String get albumFolderYearAlbumSubtitle => 'Альбоми/[2005] Назва Альбому/'; - - @override - String get albumFolderArtistAlbumSingles => 'Виконавець / Альбом + Сингли'; - - @override - String get albumFolderArtistAlbumSinglesSubtitle => - 'Виконавець/Альбом/ та Виконавець/Сингли/'; - - @override - String get albumFolderArtistAlbumFlat => - 'Виконавець / Альбом (сингли без альбомів)'; - - @override - String get albumFolderArtistAlbumFlatSubtitle => - 'Виконавець/Альбом/ та Виконавець/пісня.flac'; - - @override - String get downloadedAlbumDeleteSelected => 'Видалити вибране'; - - @override - String downloadedAlbumDeleteMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Видалити $count $_temp0 з цього альбому?\n\nЦе також призведе до видалення файлів зі сховища.'; - } - - @override - String downloadedAlbumSelectedCount(int count) { - return 'Вибрано $count'; - } - - @override - String get downloadedAlbumTapToSelect => 'Натисніть на треки, щоб вибрати'; - - @override - String downloadedAlbumDeleteCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Видалити $count $_temp0'; - } - - @override - String get downloadedAlbumSelectToDelete => 'Виберіть треки для видалення'; - - @override - String downloadedAlbumDiscHeader(int discNumber) { - return 'Диск $discNumber'; - } - - @override - String get recentTypeArtist => 'Артист'; - - @override - String get recentTypeAlbum => 'Альбом'; - - @override - String get recentTypeSong => 'Пісня'; - - @override - String get recentTypePlaylist => 'Список відтворення'; - - @override - String get recentEmpty => 'Поки що немає нещодавніх записів'; - - @override - String get recentClearAllMessage => - 'Clear all recent activity? Download history and music files will not be deleted.'; - - @override - String get recentShowAllDownloads => 'Показати всі завантаження'; - - @override - String recentPlaylistInfo(String name) { - return 'Список відтворення: $name'; - } - - @override - String get discographyDownload => 'Завантажити дискографію'; - - @override - String get discographyDownloadAll => 'Завантажити все'; - - @override - String discographyDownloadAllSubtitle(int count, int albumCount) { - return '$count треків з $albumCount релізів'; - } - - @override - String get discographyAlbumsOnly => 'Тільки альбоми'; - - @override - String discographyAlbumsOnlySubtitle(int count, int albumCount) { - return '$count треків з $albumCount альбомів'; - } - - @override - String get discographySinglesOnly => 'Тільки сингли та міні-альбоми'; - - @override - String discographySinglesOnlySubtitle(int count, int albumCount) { - return '$count треків з $albumCount синглів'; - } - - @override - String get discographySelectAlbums => 'Вибрати альбоми...'; - - @override - String get discographySelectAlbumsSubtitle => - 'Виберіть конкретні альбоми або сингли'; - - @override - String get discographyFetchingTracks => 'Отримання треків...'; - - @override - String discographyFetchingAlbum(int current, int total) { - return 'Отримання $current з $total...'; - } - - @override - String discographySelectedCount(int count) { - return '$count вибрано'; - } - - @override - String get discographyDownloadSelected => 'Завантажити вибране'; - - @override - String discographyAddedToQueue(int count) { - return 'Додано $count треків до черги'; - } - - @override - String discographySkippedDownloaded(int added, int skipped) { - return '$added додано, $skipped вже завантажено'; - } - - @override - String get discographyNoAlbums => 'Немає доступних альбомів'; - - @override - String get discographyFailedToFetch => 'Не вдалося отримати деякі альбоми'; - - @override - String get sectionStorageAccess => 'Доступ до сховища'; - - @override - String get allFilesAccess => 'Доступ до всіх файлів'; - - @override - String get allFilesAccessEnabledSubtitle => - 'Можна записувати в будь-яку папку'; - - @override - String get allFilesAccessDisabledSubtitle => 'Обмежено лише медіа-папками'; - - @override - String get allFilesAccessDescription => - 'Увімкніть цю опцію, якщо під час збереження у власні папки виникають помилки запису. Android 13+ за замовчуванням обмежує доступ до певних каталогів.'; - - @override - String get allFilesAccessDeniedMessage => - 'У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.'; - - @override - String get allFilesAccessDisabledMessage => - 'У дозволі відмовлено. Будь ласка, увімкніть «Доступ до всіх файлів» вручну в налаштуваннях системи.'; - - @override - String get settingsLocalLibrary => 'Локальна бібліотека'; - - @override - String get settingsLocalLibrarySubtitle => - 'Сканування музики та виявлення дублікатів'; - - @override - String get settingsCache => 'Сховище та Кеш'; - - @override - String get settingsCacheSubtitle => - 'Переглянути розмір і очистити кешовані дані'; - - @override - String get libraryTitle => 'Локальна бібліотека'; - - @override - String get libraryScanSettings => 'Налаштування сканування'; - - @override - String get libraryEnableLocalLibrary => 'Увімкнути локальну бібліотеку'; - - @override - String get libraryEnableLocalLibrarySubtitle => - 'Скануати та відстежити свою існуючу музику'; - - @override - String get libraryFolder => 'Папка бібліотеки'; - - @override - String get libraryFolderHint => 'Натисніть, щоб вибрати папку'; - - @override - String get libraryAddFolder => 'Add library folder'; - - @override - String get libraryAddFolderSubtitle => - 'Internal storage, SD card, SSD, or another external drive'; - - @override - String get librarySourceOnline => 'Online'; - - @override - String get librarySourceOffline => - 'Offline. Reconnect the storage to restore these tracks'; - - @override - String get librarySourceDisabled => 'Disabled'; - - @override - String librarySourceScanCount(int scanned, int total, String progress) { - return '$scanned of $total files scanned ($progress%)'; - } - - @override - String get libraryExternalStorage => 'External storage'; - - @override - String get libraryRemoveFolder => 'Remove library folder'; - - @override - String get libraryRemoveFolderMessage => - 'Remove this folder and its indexed tracks from SpotiFLAC Mobile? Audio files on the storage will not be deleted.'; - - @override - String get libraryShowDuplicateIndicator => 'Показати індикатор дублікатів'; - - @override - String get libraryShowDuplicateIndicatorSubtitle => - 'Показувати під час пошуку існуючих треків'; - - @override - String get libraryAutoScan => 'Автоматичне сканування'; - - @override - String get libraryAutoScanSubtitle => - 'Автоматичне сканування бібліотеки на наявність нових файлів'; - - @override - String get libraryAutoScanOff => 'Вимкнено'; - - @override - String get libraryAutoScanOnOpen => 'Кожного разу коли додаток відкривається'; - - @override - String get libraryAutoScanDaily => 'Щоденно'; - - @override - String get libraryAutoScanWeekly => 'Щотижнево'; - - @override - String get libraryActions => 'Дії'; - - @override - String get libraryScan => 'Сканувати бібліотеку'; - - @override - String get libraryScanSubtitle => 'Сканувати для аудіофайлів'; - - @override - String get libraryScanSelectFolderFirst => 'Спочатку виберіть папку'; - - @override - String get libraryCleanupMissingFiles => 'Очищення відсутніх файлів'; - - @override - String get libraryCleanupMissingFilesSubtitle => - 'Видалити записи для файлів, яких більше не існує'; - - @override - String get libraryClear => 'Очистити бібліотеку'; - - @override - String get libraryClearSubtitle => 'Видалити всі скановані треки'; - - @override - String get libraryClearConfirmTitle => 'Очистити бібліотеку'; - - @override - String get libraryClearConfirmMessage => - 'Це видалить усі скановані треки з вашої бібліотеки. Ваші фактичні музичні файли не будуть видалені.'; - - @override - String get libraryAbout => 'Про локальну бібліотеку'; - - @override - String get libraryAboutDescription => - 'Сканує вашу існуючу музичну колекцію для виявлення дублікатів під час завантаження. Підтримує формати FLAC, M4A, MP3, Opus та OGG. Метадані зчитуються з тегів файлів, коли вони доступні.'; - - @override - String libraryTracksUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return '$_temp0'; - } - - @override - String libraryFilesUnit(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'файлів', - one: 'file', - ); - return '$_temp0'; - } - - @override - String libraryLastScanned(String time) { - return 'Останнє сканування: $time'; - } - - @override - String get libraryLastScannedNever => 'Ніколи'; - - @override - String get libraryScanning => 'Сканування...'; - - @override - String get libraryScanFinalizing => 'Завершення роботи з бібліотекою...'; - - @override - String libraryScanProgress(String progress, int total) { - return '$progress% від $total файлів'; - } - - @override - String get libraryInLibrary => 'У бібліотеці'; - - @override - String libraryRemovedMissingFiles(int count) { - return 'Видалено $count відсутніх файлів з бібліотеки'; - } - - @override - String get libraryCleared => 'Бібліотека очищена'; - - @override - String get libraryStorageAccessRequired => 'Потрібен доступ до сховища'; - - @override - String get libraryStorageAccessMessage => - 'SpotiFLAC потрібен доступ до сховища для сканування вашої музичної бібліотеки. Надайте дозвіл у налаштуваннях.'; - - @override - String get libraryFolderNotExist => 'Вибрана папка не існує'; - - @override - String get librarySourceDownloaded => 'Завантажені'; - - @override - String get librarySourceLocal => 'Локальні'; - - @override - String get libraryFilterAll => 'Усі'; - - @override - String get libraryFilterDownloaded => 'Завантажені'; - - @override - String get libraryFilterLocal => 'Локальні'; - - @override - String get libraryFilterTitle => 'Фільтри'; - - @override - String get libraryFilterReset => 'Скинути'; - - @override - String get libraryFilterApply => 'Застосувати'; - - @override - String get libraryFilterSource => 'Джерело'; - - @override - String get libraryFilterQuality => 'Якість'; - - @override - String get libraryFilterQualityHiRes => - 'Висока роздільна здатність (24 біти)'; - - @override - String get libraryFilterQualityCD => 'CD (16-бітний)'; - - @override - String get libraryFilterQualityLossy => 'Із втратами (lossy)'; - - @override - String get libraryFilterFormat => 'Формат'; - - @override - String get libraryFilterMetadata => 'Метадані'; - - @override - String get libraryFilterMetadataComplete => 'Повні метадані'; - - @override - String get libraryFilterMetadataMissingAny => 'будь-які метадані'; - - @override - String get libraryFilterMetadataMissingYear => 'Відсутній рік'; - - @override - String get libraryFilterMetadataMissingGenre => 'Відсутній жанр'; - - @override - String get libraryFilterMetadataMissingAlbumArtist => - 'Відсутній виконавець альбому'; - - @override - String get libraryFilterSort => 'Сортувати'; - - @override - String get libraryFilterSortLatest => 'Найновіші'; - - @override - String get libraryFilterSortOldest => 'Найстаріші'; - - @override - String get libraryFilterSortAlbumAsc => 'Альбом (А-Я)'; - - @override - String get libraryFilterSortAlbumDesc => 'Альбом (Я-А)'; - - @override - String get libraryFilterSortGenreAsc => 'Жанр (А-Я)'; - - @override - String get libraryFilterSortGenreDesc => 'Жанр (Я-А)'; - - @override - String get timeJustNow => 'Щойно'; - - @override - String timeMinutesAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count хвилин тому', - one: '1 minute ago', - ); - return '$_temp0'; - } - - @override - String timeHoursAgo(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count годин тому', - one: '1 hour ago', - ); - return '$_temp0'; - } - - @override - String get tutorialWelcomeTitle => 'Ласкаво просимо до SpotiFLAC Mobile!'; - - @override - String get tutorialWelcomeDesc => - 'Давайте дізнаємося, як завантажувати улюблену музику в якості без втрат. Цей короткий посібник покаже вам основи.'; - - @override - String get tutorialWelcomeTip1 => - 'Шукайте за допомогою встановленого розширення або вставте підтримуване посилання'; - - @override - String get tutorialWelcomeTip2 => - 'Get FLAC quality audio from installed download extensions'; - - @override - String get tutorialWelcomeTip3 => - 'Автоматичне додавання метаданих, обкладинки та текстів пісень'; - - @override - String get tutorialSearchTitle => 'Пошук музики'; - - @override - String get tutorialSearchDesc => - 'Існує два простих способи знайти музику, яку ви хочете завантажити.'; - - @override - String get tutorialDownloadTitle => 'Завантаження музики'; - - @override - String get tutorialDownloadDesc => - 'Завантаження музики просте та швидке. Ось як це працює.'; - - @override - String get tutorialLibraryTitle => 'Ваша бібліотека'; - - @override - String get tutorialLibraryDesc => - 'Вся завантажена музика організована на вкладці «Бібліотека».'; - - @override - String get tutorialLibraryTip1 => - 'Перегляд стану завантаження та черги на вкладці «Бібліотека»'; - - @override - String get tutorialLibraryTip2 => - 'Торкніться будь-якої композиції, щоб відтворити її за допомогою музичного плеєра'; - - @override - String get tutorialLibraryTip3 => - 'Перемикання між списком та сіткою для кращого перегляду'; - - @override - String get tutorialExtensionsTitle => 'Розширення'; - - @override - String get tutorialExtensionsDesc => - 'Розширте можливості програми за допомогою розширень спільноти.'; - - @override - String get tutorialExtensionsTip1 => - 'Перегляньте вкладку «Репозиторій», щоб знайти корисні розширення'; - - @override - String get tutorialExtensionsTip2 => - 'Додавайте нових постачальників послуг завантаження або джерела пошуку'; - - @override - String get tutorialExtensionsTip3 => - 'Отримайте тексти пісень, розширені метадані та інші функції'; - - @override - String get tutorialSettingsTitle => 'Налаштуйте свій досвід'; - - @override - String get tutorialSettingsDesc => - 'Персоналізуйте програму в налаштуваннях відповідно до ваших уподобань.'; - - @override - String get tutorialSettingsTip1 => - 'Змініть місце завантаження та організації папок'; - - @override - String get tutorialSettingsTip2 => - 'Встановіть параметри якості звуку та формату за замовчуванням'; - - @override - String get tutorialSettingsTip3 => - 'Налаштуйте тему та зовнішній вигляд програми'; - - @override - String get tutorialReadyMessage => - 'Готово! Почніть завантажувати свою улюблену музику прямо зараз.'; - - @override - String get libraryForceFullScan => 'Примусове повне сканування'; - - @override - String get libraryForceFullScanSubtitle => - 'Пересканувати всі файли, ігноруючи кеш'; - - @override - String get cleanupOrphanedDownloads => 'Очищення застарілих завантажень'; - - @override - String get cleanupOrphanedDownloadsSubtitle => - 'Видалити записи історії для файлів, яких більше не існує'; - - @override - String cleanupOrphanedDownloadsResult(int count) { - return 'Видалено $count утрачених записів з історії'; - } - - @override - String get cleanupOrphanedDownloadsNone => 'Не знайдено утрачених записів'; - - @override - String get cacheTitle => 'Зберігання та кеш'; - - @override - String get cacheSummaryTitle => 'Огляд кешу'; - - @override - String get cacheSummarySubtitle => - 'Очищення кешу не призведе до видалення завантажених музичних файлів.'; - - @override - String cacheEstimatedTotal(String size) { - return 'Орієнтовне використання кешу: $size'; - } - - @override - String get cacheSectionStorage => 'Кешовані дані'; - - @override - String get cacheSectionMaintenance => 'Технічне обслуговування'; - - @override - String get cacheAppDirectory => 'Каталог кешу додатка'; - - @override - String get cacheAppDirectoryDesc => - 'HTTP-відповіді, дані WebView та інші тимчасові дані додатків.'; - - @override - String get cacheTempDirectory => 'Тимчасовий каталог'; - - @override - String get cacheTempDirectoryDesc => - 'Тимчасові файли із завантажень та конвертації аудіо.'; - - @override - String get cacheCoverImage => 'Кеш зображень обкладинок'; - - @override - String get cacheCoverImageDesc => - 'Завантажено обкладинку альбому та треку. Завантаження відбудеться повторно після перегляду.'; - - @override - String get cacheLibraryCover => 'Кеш бібліотеки обкладинок'; - - @override - String get cacheLibraryCoverDesc => - 'Обкладинку витягнуто з локальних музичних файлів. Буде повторно витягнуто під час наступного сканування.'; - - @override - String get libraryPlaybackNormalization => 'Volume normalization'; - - @override - String get libraryPlaybackNormalizationSubtitle => - 'Even out loudness between tracks using their ReplayGain or R128 tags, when present'; - - @override - String get cacheAudioAnalysis => 'Audio analysis cache'; - - @override - String get cacheAudioAnalysisDesc => - 'Saved spectrograms and analysis results. Will re-analyze on next open.'; - - @override - String get cacheExploreFeed => 'Огляд кешу стрічки'; - - @override - String get cacheExploreFeedDesc => - 'Переглянути вміст вкладки (нові випуски, тренди). Оновиться під час наступного відвідування.'; - - @override - String get cacheTrackLookup => 'Відстеження кешу пошуку'; - - @override - String get cacheTrackLookupDesc => - 'Пошук ідентифікаторів треків Spotify/Deezer. Очищення може уповільнити наступні кілька пошуків.'; - - @override - String get cacheCleanupUnusedDesc => - 'Видалити історію втрачених завантажень та записи бібліотеки для відсутніх файлів.'; - - @override - String get cacheNoData => 'Кешованих даних немає'; - - @override - String cacheSizeWithFiles(String size, int count) { - return '$size у $count файлах'; - } - - @override - String cacheSizeOnly(String size) { - return '$size'; - } - - @override - String cacheEntries(int count) { - return '$count записів'; - } - - @override - String cacheClearSuccess(String target) { - return 'Очищено: $target'; - } - - @override - String get cacheClearConfirmTitle => 'Очистити кеш?'; - - @override - String cacheClearConfirmMessage(String target) { - return 'Це очистить кешовані дані для $target. Завантажені музичні файли не будуть видалені.'; - } - - @override - String get cacheClearAllConfirmTitle => 'Очистити увесь кеш?'; - - @override - String get cacheClearAllConfirmMessage => - 'Це очистить усі категорії кешу на цій сторінці. Завантажені музичні файли не будуть видалені.'; - - @override - String get cacheClearAll => 'Очистити весь кеш'; - - @override - String get cacheCleanupUnused => 'Очищення невикористаних даних'; - - @override - String get cacheCleanupUnusedSubtitle => - 'Видалити історію утрачених завантажень файлів та відсутні записи бібліотеки'; - - @override - String cacheCleanupResult(int downloadCount, int libraryCount) { - return 'Очищення завершено: $downloadCount утрачених завантажень, $libraryCount відсутніх записів бібліотеки'; - } - - @override - String get cacheRefreshStats => 'Оновити статистику'; - - @override - String get trackSaveCoverArt => 'Зберегти обкладинку'; - - @override - String get trackSaveLyrics => 'Зберегти текст пісні (.lrc)'; - - @override - String get trackSaveLyricsProgress => 'Збереження тексту пісні...'; - - @override - String get trackReEnrich => 'Перезбагачувати'; - - @override - String get trackReEnrichOnlineSubtitle => - 'Пошук метаданих в Інтернеті та вбудовування у файл'; - - @override - String get trackReEnrichFieldCover => 'Обкладинка'; - - @override - String get trackReEnrichFieldLyrics => 'Тексти пісень'; - - @override - String get trackReEnrichFieldBasicTags => 'Альбом, Виконавець альбому'; - - @override - String get trackReEnrichFieldTrackInfo => 'Номер треку та диска'; - - @override - String get trackReEnrichFieldReleaseInfo => 'Дата та ISRC'; - - @override - String get trackReEnrichFieldExtra => 'Жанр, Лейбл, Авторське право'; - - @override - String get trackReEnrichSelectAll => 'Вибрати все'; - - @override - String get trackReEnrichModeIsrc => 'ISRC only'; - - @override - String get trackReEnrichModeIsrcSubtitle => - 'Find and add the recording identifier without changing other tags'; - - @override - String get trackReEnrichModeMissing => 'Fill missing tags'; - - @override - String get trackReEnrichModeMissingSubtitle => - 'Keep existing values and fill only fields that are empty'; - - @override - String get trackReEnrichModeReplace => 'Update selected tags'; - - @override - String get trackReEnrichModeReplaceSubtitle => - 'Choose which existing values may be replaced by online metadata'; - - @override - String get trackReEnrichFieldsTitle => 'Tags to update'; - - @override - String get trackReEnrichReview => 'Review changes'; - - @override - String get trackReEnrichReviewTitle => 'Review metadata changes'; - - @override - String trackReEnrichReviewSubtitle(int changeCount, int trackCount) { - return '$changeCount proposed changes across $trackCount tracks'; - } - - @override - String get trackReEnrichNoChanges => - 'No metadata changes were found for the selected tracks.'; - - @override - String get trackReEnrichApplyChanges => 'Apply changes'; - - @override - String get trackReEnrichRefreshOnline => 'Refresh from online'; - - @override - String get trackEditMetadata => 'Редагувати метадані'; - - @override - String trackCoverSaved(String fileName) { - return 'Обкладинку збережено до $fileName'; - } - - @override - String get trackCoverNoSource => 'Джерело обкладинки недоступне'; - - @override - String trackLyricsSaved(String fileName) { - return 'Текст пісні збережено в $fileName'; - } - - @override - String get trackReEnrichProgress => 'Повторне збагачення метаданих...'; - - @override - String get trackReEnrichSearching => 'Пошук метаданих в Інтернеті...'; - - @override - String get trackReEnrichSuccess => 'Метадані повторно збагачені успішно'; - - @override - String get trackReEnrichFfmpegFailed => - 'Не вдалося вбудувати метадані FFmpeg'; - - @override - String get queueFlacAction => 'Черга FLAC'; - - @override - String queueFlacConfirmMessage(int count) { - return 'Пошук онлайн-збігів для вибраних треків та додавання завантажень FLAC до черги.\n\nІснуючі файли не будуть змінені або видалені.\n\nАвтоматично додаються до черги лише збіги з високою достовірністю.\n\n$count вибрано'; - } - - @override - String get queueFlacNoReliableMatches => - 'Не знайдено надійних онлайн-відповідей для вибраного запиту'; - - @override - String queueFlacQueuedWithSkipped(int addedCount, int skippedCount) { - return 'Додано $addedCount треків до черги, пропущено $skippedCount'; - } - - @override - String trackSaveFailed(String error) { - return 'Не вдалося: $error'; - } - - @override - String get trackConvertFormat => 'Конвертувати формат'; - - @override - String get trackConvertTitle => 'Конвертувати аудіо'; - - @override - String get trackConvertTargetFormat => 'Цільовий формат'; - - @override - String get trackConvertBitrate => 'Бітрейт'; - - @override - String get trackConvertKeepOriginal => 'Keep original file'; - - @override - String get trackConvertKeepOriginalDescription => - 'Add the converted file as a separate library entry'; - - @override - String get trackConvertConfirmTitle => 'Підтвердити конверсію'; - - @override - String trackConvertConfirmMessage( - String sourceFormat, - String targetFormat, - String bitrate, - ) { - return 'Конвертувати з $sourceFormat в $targetFormat із бітрейтом $bitrate?\n\nОригінальний файл буде видалено після конвертації.'; - } - - @override - String trackConvertConfirmMessageLossless( - String sourceFormat, - String targetFormat, - ) { - return 'Конвертувати з $sourceFormat у $targetFormat? (Lossless — без втрати якості)\n\nОригінальний файл буде видалено після конвертації.'; - } - - @override - String trackConvertConfirmKeepOriginal( - String sourceFormat, - String targetFormat, - ) { - return 'Convert from $sourceFormat to $targetFormat?\n\nThe original file will be kept and the converted file will be added as a separate library entry.'; - } - - @override - String get trackConvertLosslessHint => - 'Lossless конвертація — без втрати якості'; - - @override - String get trackConvertConverting => 'Конвертування аудіо...'; - - @override - String trackConvertSuccess(String format) { - return 'Конвертовано в $format успішно'; - } - - @override - String get trackConvertFailed => 'Конвертація не вдалася'; - - @override - String get cueSplitTitle => 'Розділений аркуш CUE'; - - @override - String cueSplitAlbum(String album) { - return 'Альбом: $album'; - } - - @override - String cueSplitArtist(String artist) { - return 'Артист: $artist'; - } - - @override - String cueSplitTrackCount(int count) { - return '$count треків'; - } - - @override - String get cueSplitConfirmTitle => 'Розділений альбом CUE'; - - @override - String cueSplitConfirmMessage(String album, int count) { - return 'Розділити \"$album\" на $count окремих FLAC-файлів?\n\nФайли будуть збережені в одному каталозі.'; - } - - @override - String cueSplitSplitting(int current, int total) { - return 'Розділення аркуша CUE... ($current/$total)'; - } - - @override - String cueSplitSuccess(int count) { - return 'Розділено на $count треків успішно'; - } - - @override - String get cueSplitFailed => 'Розділення CUE не вдалося'; - - @override - String get cueSplitNoAudioFile => - 'Аудіофайл для цього аркуша CUE не знайдено'; - - @override - String get cueSplitButton => 'Розділити на треки'; - - @override - String get actionCreate => 'Створити'; - - @override - String get collectionFoldersTitle => 'Мої папки'; - - @override - String get collectionWishlist => 'Список бажань'; - - @override - String get collectionLoved => 'Вподобані'; - - @override - String get collectionFavoriteArtists => 'Favorite Artists'; - - @override - String get collectionPlaylist => 'Список відтворення'; - - @override - String get collectionAddToPlaylist => 'Додати до списку відтворення'; - - @override - String get collectionCreatePlaylist => 'Створити плейлист'; - - @override - String get collectionNoPlaylistsYet => 'Поки що немає списків відтворення'; - - @override - String collectionPlaylistTracks(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треків', - one: '1 трек', - ); - return '$_temp0'; - } - - @override - String collectionArtistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count artists', - one: '1 artist', - ); - return '$_temp0'; - } - - @override - String collectionAddedToPlaylist(String playlistName) { - return 'Додано до \"$playlistName\"'; - } - - @override - String collectionAlreadyInPlaylist(String playlistName) { - return 'Вже у списку відтворення \"$playlistName\"'; - } - - @override - String get collectionPlaylistNameHint => 'Назва списку відтворення'; - - @override - String get collectionPlaylistNameRequired => - 'Потрібно вказати назву списку відтворення'; - - @override - String get collectionRenamePlaylist => 'Перейменувати список відтворення'; - - @override - String get collectionDeletePlaylist => 'Видалити список відтворення'; - - @override - String get collectionPlaylistRenamed => 'Список відтворення перейменовано'; - - @override - String get collectionWishlistEmptyTitle => 'Список бажань порожній'; - - @override - String get collectionWishlistEmptySubtitle => - 'Натисніть + на треках, щоб зберегти те, що ви хочете завантажити пізніше'; - - @override - String get collectionLovedEmptyTitle => 'Папка \"Улюблені\" порожня'; - - @override - String get collectionLovedEmptySubtitle => - 'Натисніть «Подобається» на треках, щоб зберегти у свої улюблені'; - - @override - String get collectionFavoriteArtistsEmptyTitle => 'No favorite artists yet'; - - @override - String get collectionFavoriteArtistsEmptySubtitle => - 'Tap the heart on an artist page to keep them here'; - - @override - String get collectionPlaylistEmptyTitle => 'Список відтворення порожній'; - - @override - String get collectionPlaylistEmptySubtitle => - 'Тривале натискання + на будь-якій доріжці додасть її сюди'; - - @override - String get collectionRemoveFromPlaylist => 'Видалити зі списку відтворення'; - - @override - String get collectionRemoveFromFolder => 'Видалити з папки'; - - @override - String collectionAddedToLoved(String trackName) { - return '\"$trackName\" додано до списку улюблених'; - } - - @override - String collectionRemovedFromLoved(String trackName) { - return '\"$trackName\" видалено з уподобань'; - } - - @override - String collectionAddedToWishlist(String trackName) { - return '\"$trackName\" додано до списку бажань'; - } - - @override - String collectionRemovedFromWishlist(String trackName) { - return '\"$trackName\" видалено зі списку бажань'; - } - - @override - String collectionAddedToFavoriteArtists(String artistName) { - return '\"$artistName\" added to Favorite Artists'; - } - - @override - String collectionRemovedFromFavoriteArtists(String artistName) { - return '\"$artistName\" removed from Favorite Artists'; - } - - @override - String get trackOptionAddToLoved => 'Додати до улюблених'; - - @override - String get trackOptionRemoveFromLoved => 'Видалити з улюблених'; - - @override - String get trackOptionAddToWishlist => 'Додати до списку бажань'; - - @override - String get trackOptionRemoveFromWishlist => 'Видалити зі списку бажань'; - - @override - String get artistOptionAddToFavorites => 'Add to Favorite Artists'; - - @override - String get artistOptionRemoveFromFavorites => 'Remove from Favorite Artists'; - - @override - String get collectionPlaylistChangeCover => 'Змінити зображення обкладинки'; - - @override - String get collectionPlaylistRemoveCover => 'Видалити зображення обкладинки'; - - @override - String selectionShareCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Поділитися $count $_temp0'; - } - - @override - String get selectionShareNoFiles => - 'Файлів для спільного доступу не знайдено'; - - @override - String selectionConvertCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Конвертувати $count $_temp0'; - } - - @override - String get selectionConvertNoConvertible => - 'Трансформованих треків не вибрано'; - - @override - String get selectionBatchConvertConfirmTitle => 'Пакетне конвертування'; - - @override - String selectionBatchConvertConfirmMessage( - int count, - String format, - String bitrate, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Конвертувати $count $_temp0 у $format з бітрейтом $bitrate?\n\nОригінальні файли будуть видалені після конвертації.'; - } - - @override - String selectionBatchConvertConfirmMessageLossless(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'треків', - one: 'трек', - ); - return 'Конвертувати $count $_temp0 у $format? (Lossless — без втрати якості)\n\nОригінальні файли будуть видалені після конвертації.'; - } - - @override - String selectionBatchConvertConfirmKeepOriginal(int count, String format) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Convert $count $_temp0 to $format?\n\nOriginal files will be kept and converted files will be added as separate library entries.'; - } - - @override - String selectionBatchConvertSuccess(int success, int total, String format) { - return 'Конвертовано $success з $total треків у $format'; - } - - @override - String downloadedAlbumDownloadedCount(int count) { - 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'; - - @override - String get lyricsProvidersDescription => - 'Увімкнення, вимкнення та зміна порядку джерел текстів пісень. Постачальники перевірятимуть зверху вниз, доки не буде знайдено текст пісні.'; - - @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 'Увімкнено ($count)'; - } - - @override - String lyricsProvidersDisabledSection(int count) { - return 'Вимкнено ($count)'; - } - - @override - String get lyricsProvidersAtLeastOne => - 'Принаймні один постачальник має залишатися ввімкненим'; - - @override - String get lyricsProvidersSaved => - 'Пріоритет постачальника текстів пісень збережено'; - - @override - String get lyricsProvidersDiscardContent => - 'У вас є незбережені зміни, які буде втрачено.'; - - @override - String get lyricsProviderLrclibDesc => - 'Синхронізована база даних текстів пісень з відкритим кодом'; - - @override - String get lyricsProviderNeteaseDesc => - 'NetEase Cloud Music (добре підходить для азійських пісень)'; - - @override - String get lyricsProviderMusixmatchDesc => - 'Найбільша база даних текстів пісень (багатомовна)'; - - @override - String get lyricsProviderAppleMusicDesc => - 'Синхронізовані тексти пісень слово за словом (через проксі)'; - - @override - String get lyricsProviderQqMusicDesc => - 'QQ Music (добре для китайських пісень, через проксі)'; - - @override - String get lyricsProviderLyricsPlusDesc => - 'Word-by-word karaoke lyrics (Apple/Musixmatch/Spotify/QQ, via proxy)'; - - @override - String get lyricsProviderExtensionDesc => 'Постачальник розширень'; - - @override - String get safMigrationTitle => 'Потрібне оновлення сховища'; - - @override - String get safMigrationMessage1 => - 'SpotiFLAC тепер використовує Android Storage Access Framework (SAF) для завантажень. Це виправляє помилки «відмовлено в доступі» на Android 10+.'; - - @override - String get safMigrationMessage2 => - 'Будь ласка, виберіть папку завантажень ще раз, щоб перейти до нової системи зберігання.'; - - @override - String get safMigrationSuccess => 'Папку завантажень оновлено до режиму SAF'; - - @override - String get settingsDonate => 'Support Development'; - - @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 backupCreated => 'Backup created'; - - @override - String get backupCreateFailed => 'Failed to create backup'; - - @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 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 repo.'; - } - - @override - String get tooltipLoveAll => 'Уподобати всіх'; - - @override - String get tooltipAddToPlaylist => 'Додати до списку відтворення'; - - @override - String snackbarRemovedTracksFromLoved(int count) { - return 'Видалено $count треків з уподобань'; - } - - @override - String snackbarAddedTracksToLoved(int count) { - return 'Додано $count треків до списку \"Улюблені\"'; - } - - @override - String get dialogDownloadAllTitle => 'Завантажити все'; - - @override - String dialogDownloadAllMessage(int count) { - return 'Завантажити $count треків?'; - } - - @override - String get homeSkipAlreadyDownloaded => 'Пропустити вже завантажені пісні'; - - @override - String get homeGoToAlbum => 'Перейти до альбому'; - - @override - String get homeAlbumInfoUnavailable => 'Інформація про альбом недоступна'; - - @override - String get snackbarLoadingCueSheet => 'Завантаження аркуша CUE...'; - - @override - String get snackbarMetadataSaved => 'Метадані успішно збережено'; - - @override - String get snackbarFailedToEmbedLyrics => 'Не вдалося вставити текст пісні'; - - @override - String get snackbarFailedToWriteStorage => - 'Не вдалося перезаписати у сховище'; - - @override - String snackbarError(String error) { - return 'Помилка: $error'; - } - - @override - String get snackbarNoActionDefined => - 'Для цієї кнопки не визначено жодної дії'; - - @override - String get noTracksFoundForAlbum => - 'Для цього альбому не знайдено жодних треків'; - - @override - String get downloadLocationSubtitle => - 'Choose where to save your downloaded tracks'; - - @override - String get storageModeAppFolder => 'App Folder (Recommended)'; - - @override - String get storageModeAppFolderSubtitle => - 'Saves to Music/SpotiFLAC by default'; - - @override - String get storageModeSaf => 'Custom Folder (SAF)'; - - @override - String get storageModeSafSubtitle => 'Pick any folder, including SD card'; - - @override - String get downloadFolderAccessLostTitle => 'Download folder access lost'; - - @override - String get downloadFolderAccessLostSubtitle => - 'Downloads will fail until you re-select the folder'; - - @override - String get downloadFolderReselect => 'Re-select folder'; - - @override - String get downloadErrorSafPermissionLost => - 'SAF permission invalid or revoked. Please reconfigure download location in Settings.'; - - @override - String get downloadErrorFolderAccessLost => - 'Download folder access lost. Please re-select your download folder in Settings.'; - - @override - String downloadFilenameDescription( - Object album, - Object artist, - Object date, - Object disc, - Object title, - Object track, - Object year, - ) { - return 'Use $artist, $title, $album, $track, $year, $date, $disc as placeholders.'; - } - - @override - String get downloadFilenameInsertTag => 'Натисніть, щоб вставити тег:'; - - @override - String get downloadSeparateSinglesEnabled => - 'Singles and EPs saved in a separate folder'; - - @override - String get downloadSeparateSinglesDisabled => - 'Singles and albums saved in the same folder'; - - @override - String get downloadArtistNameFilters => 'Фільтри імені виконавця'; - - @override - String get downloadCreatePlaylistSourceFolder => 'Playlist Source Folder'; - - @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'; - - @override - String get downloadSongLinkRegion => 'Регіон SongLink'; - - @override - String get downloadNetworkCompatibilityMode => 'Network Compatibility Mode'; - - @override - String get downloadNetworkCompatibilityModeEnabled => - 'Allowing legacy HTTP endpoints; TLS verification remains enabled'; - - @override - 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'; - - @override - String get downloadEmbedLyricsDisabled => 'Enable metadata embedding first'; - - @override - String get downloadNeteaseIncludeTranslation => 'Netease: Включити переклад'; - - @override - String get downloadNeteaseIncludeTranslationEnabled => - 'Chinese translation lines included'; - - @override - String get downloadNeteaseIncludeTranslationDisabled => - 'Original lyrics only'; - - @override - String get downloadNeteaseIncludeRomanization => - 'Netease: Включити романізацію'; - - @override - String get downloadNeteaseIncludeRomanizationEnabled => - 'Romanization lines included'; - - @override - String get downloadNeteaseIncludeRomanizationDisabled => 'No romanization'; - - @override - String get downloadAppleQqMultiPerson => 'Apple / QQ: Multi-Person Lyrics'; - - @override - String get downloadAppleQqMultiPersonEnabled => - 'Speaker labels included for duets and group tracks'; - - @override - String get downloadAppleQqMultiPersonDisabled => - 'Standard lyrics without speaker labels'; - - @override - String get downloadAppleElrcWordSync => 'Apple Music eLRC Word Sync'; - - @override - String get downloadAppleElrcWordSyncEnabled => - 'Raw word-by-word timestamps preserved'; - - @override - String get downloadAppleElrcWordSyncDisabled => - 'Safer line-by-line Apple Music lyrics'; - - @override - String get downloadMusixmatchLanguage => 'Мова Musixmatch'; - - @override - String get downloadMusixmatchLanguageAuto => 'Auto (original language)'; - - @override - String get downloadFilterContributing => 'Filter Contributing Artists'; - - @override - String get downloadFilterContributingEnabled => - 'Contributing artists removed from Album Artist folder name'; - - @override - String get downloadFilterContributingDisabled => - 'Full Album Artist string used'; - - @override - String get downloadProvidersNoneEnabled => 'No providers enabled'; - - @override - String get downloadMusixmatchLanguageCode => 'Код мови'; - - @override - String get downloadMusixmatchLanguageHint => 'e.g. en, de, ja'; - - @override - String get downloadMusixmatchLanguageDesc => - 'Enter a BCP-47 language code (e.g. en, de, ja) to request translated lyrics from Musixmatch.'; - - @override - String get downloadMusixmatchAuto => 'Авто'; - - @override - String get downloadNetworkAnySubtitle => 'Use WiFi or mobile data'; - - @override - String get downloadNetworkWifiOnlySubtitle => - 'Downloads pause when on mobile data'; - - @override - String get downloadSongLinkRegionDesc => - 'Region used when resolving track links via SongLink. Choose the country where your streaming services are available.'; - - @override - String get snackbarUnsupportedAudioFormat => 'Непідтримуваний аудіоформат'; - - @override - String get cacheRefresh => 'Оновити'; - - @override - String dialogDownloadPlaylistsMessage(int trackCount, int playlistCount) { - String _temp0 = intl.Intl.pluralLogic( - trackCount, - locale: localeName, - other: 'треків', - one: 'трек', - ); - String _temp1 = intl.Intl.pluralLogic( - playlistCount, - locale: localeName, - other: 'плейлистів', - one: 'плейлист', - ); - return 'Завантажити $trackCount $_temp0 з $playlistCount $_temp1?'; - } - - @override - String bulkDownloadPlaylistsButton(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'плейлистів', - one: 'плейлист', - ); - return 'Завантажити $count $_temp0'; - } - - @override - String get bulkDownloadSelectPlaylists => - 'Вибрати списки відтворення для завантаження'; - - @override - String get snackbarSelectedPlaylistsEmpty => - 'Вибрані списки відтворення не містять треків'; - - @override - String playlistsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count плейлистів', - one: '1 плейлист', - ); - return '$_temp0'; - } - - @override - String get editMetadataAutoFill => 'Автоматичне заповнення з онлайн-ресурсів'; - - @override - String get editMetadataAutoFillDesc => - 'Виберіть поля для автоматичного заповнення з онлайн-метаданих'; - - @override - String get editMetadataAutoFillSource => 'Metadata source'; - - @override - String get editMetadataAutoFillSourceAutomatic => - 'Automatic (provider priority)'; - - @override - String get editMetadataAutoFillFind => 'Find metadata'; - - @override - String editMetadataAutoFillPreview(String source) { - return 'Data from $source'; - } - - @override - String get editMetadataAutoFillCoverAvailable => 'Cover artwork available'; - - @override - String get editMetadataAutoFillApply => 'Apply selected data'; - - @override - String editMetadataAutoFillDoneFromSource(int count, String source) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'fields', - one: 'field', - ); - return 'Filled $count $_temp0 from $source'; - } - - @override - String get editMetadataAutoFillFetch => 'Отримання та заповнення'; - - @override - String get editMetadataAutoFillSearching => 'Пошук в Інтернеті...'; - - @override - String get editMetadataAutoFillNoResults => - 'Відповідних метаданих в Інтернеті не знайдено'; - - @override - String editMetadataAutoFillDone(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'полей', - one: 'поле', - ); - return 'Заповнено $count $_temp0 з онлайн-метаданих'; - } - - @override - String get editMetadataAutoFillNoneSelected => - 'Виберіть принаймні одне поле для автоматичного заповнення'; - - @override - String get editMetadataFieldTitle => 'Назва'; - - @override - String get editMetadataFieldArtist => 'Виконавець'; - - @override - String get editMetadataFieldAlbum => 'Альбом'; - - @override - String get editMetadataFieldAlbumArtist => 'Виконавець альбому'; - - @override - String get editMetadataFieldDate => 'Дата'; - - @override - String get editMetadataFieldTrackNum => 'Номер треку'; - - @override - String get editMetadataFieldDiscNum => 'Номер диска'; - - @override - String get editMetadataFieldGenre => 'Жанр'; - - @override - String get editMetadataFieldIsrc => 'ISRC'; - - @override - String get editMetadataFieldLabel => 'Лейбл'; - - @override - String get editMetadataFieldCopyright => 'Авторське право'; - - @override - String get editMetadataFieldCover => 'Обкладинка'; - - @override - String get editMetadataSelectAll => 'Усі'; - - @override - String get editMetadataSelectEmpty => 'Порожні (без мета даних)'; - - @override - String queueDownloadingCount(int count) { - return 'Завантаження ($count)'; - } - - @override - String get queueFilteringIndicator => 'Фільтрування...'; - - @override - String queueTrackCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count треків', - one: '1 трек', - ); - return '$_temp0'; - } - - @override - String queueAlbumCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count альбомів', - one: '1 альбом', - ); - return '$_temp0'; - } - - @override - String get queueEmptyAlbums => 'Немає завантажень альбомів'; - - @override - String get queueEmptyAlbumsSubtitle => - 'Завантажте кілька треків з альбому, щоб переглянути їх тут'; - - @override - String get queueEmptySingles => 'Без окремих завантажень'; - - @override - String get queueEmptySinglesSubtitle => - 'Завантаження окремих треків з’являться тут'; - - @override - String queuePlaylistCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: '$count playlists', - one: '1 playlist', - ); - return '$_temp0'; - } - - @override - String get queueEmptyPlaylistsSubtitle => - 'Create a playlist to organize your tracks'; - - @override - String get libraryDefaultView => 'Default view'; - - @override - String get libraryDefaultViewLastUsed => 'Last used'; - - @override - String get queueEmptyHistory => 'Немає історії завантажень'; - - @override - String get queueEmptyHistorySubtitle => 'Завантажені треки з’являться тут'; - - @override - String get selectionAllPlaylistsSelected => 'Вибрано всі списки відтворення'; - - @override - String get selectionTapPlaylistsToSelect => - 'Торкніться списків відтворення, щоб вибрати'; - - @override - String get selectionSelectPlaylistsToDelete => - 'Вибрати списки відтворення для видалення'; - - @override - String get audioAnalysisTitle => 'Аналіз якості звуку'; - - @override - String get audioAnalysisDescription => - 'Перевірити якість без втрат за допомогою спектрального аналізу'; - - @override - String get audioAnalysisAnalyzing => 'Аналіз аудіо...'; - - @override - String get audioAnalysisSampleRate => 'Частота дискретизації'; - - @override - String get audioAnalysisCodec => 'Codec'; - - @override - String get audioAnalysisContainer => 'Container'; - - @override - String get audioAnalysisDecodedFormat => 'Decoded Format'; - - @override - String get audioAnalysisBitDepth => 'Глибина бітів'; - - @override - String get audioAnalysisChannels => 'Канали'; - - @override - String get audioAnalysisDuration => 'Тривалість'; - - @override - String get audioAnalysisNyquist => 'Частота Найквіста'; - - @override - String get audioAnalysisFileSize => 'Розмір'; - - @override - String get audioAnalysisDynamicRange => 'Динамічний діапазон'; - - @override - String get audioAnalysisPeak => 'Пік'; - - @override - String get audioAnalysisRms => 'RMS'; - - @override - String get audioAnalysisLufs => 'LUFS'; - - @override - String get audioAnalysisTruePeak => 'True Peak'; - - @override - String get audioAnalysisClipping => 'Clipping'; - - @override - String get audioAnalysisNoClipping => 'No clipping'; - - @override - String get audioAnalysisSpectralCutoff => 'Spectral Cutoff'; - - @override - String get audioAnalysisCutoffNotDetected => 'Not detected'; - - @override - String get audioAnalysisChannelStats => 'Per-channel Stats'; - - @override - String get audioAnalysisSamples => 'Семпли'; - - @override - String get audioAnalysisRescan => 'Re-analyze'; - - @override - String get audioAnalysisRescanning => 'Re-analyzing audio...'; - - @override - String get extensionsHomeFeedProvider => - 'Постачальник оновлень домашньої стрічки'; - - @override - String get extensionsHomeFeedDescription => - 'Виберіть, яке розширення відображатиме домашню стрічку на головному екрані'; - - @override - String get extensionsHomeFeedAuto => 'Авто'; - - @override - String get extensionsHomeFeedAutoSubtitle => - 'Автоматично вибирати найкращий доступний'; - - @override - String get extensionsHomeFeedOff => 'Off'; - - @override - String get extensionsHomeFeedOffSubtitle => - 'Do not show the home feed on the main screen'; - - @override - String extensionsHomeFeedUse(String extensionName) { - return 'Використовувати $extensionName головну стрічку'; - } - - @override - String get extensionsNoHomeFeedExtensions => - 'Без розширень із домашньою стрічкою'; - - @override - String get cancelDownloadTitle => 'Скасувати завантаження?'; - - @override - String cancelDownloadContent(String trackName) { - return 'Це скасує активне завантаження треку \"$trackName\".'; - } - - @override - String get cancelDownloadKeep => 'Зберегти'; - - @override - String get queueCancelledTitle => 'Download cancelled'; - - @override - String get queueCancelledMessage => - 'This download was cancelled. Retry it or remove it from the queue.'; - - @override - String get metadataSaveFailedFfmpeg => - 'Не вдалося зберегти метадані через FFmpeg'; - - @override - String get metadataSaveFailedStorage => - 'Не вдалося записати метадані назад у сховище'; - - @override - String snackbarFolderPickerFailed(String error) { - return 'Не вдалося відкрити засіб вибору папок: $error'; - } - - @override - String notifDownloadingTrack(String trackName) { - return 'Завантаження $trackName'; - } - - @override - String notifFinalizingTrack(String trackName) { - return 'Фіналізація $trackName'; - } - - @override - String get notifEmbeddingMetadata => 'Вбудовування метаданих...'; - - @override - String notifAlreadyInLibraryCount(int completed, int total) { - return 'Вже в бібліотеці ($completed/$total)'; - } - - @override - String get notifAlreadyInLibrary => 'Вже в бібліотеці'; - - @override - String notifDownloadCompleteCount(int completed, int total) { - return 'Завантаження завершено ($completed/$total)'; - } - - @override - String get notifDownloadComplete => 'Завантаження завершено'; - - @override - String notifDownloadsFinished(int completed, int failed) { - return 'Завантаження завершено ($completed завершено, $failed не вдалося)'; - } - - @override - String get notifVerificationRequiredTitle => 'Verification required'; - - @override - String get notifVerificationRequiredBody => - 'Open the app to complete verification and resume downloads'; - - @override - 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', - ); - return '$_temp0'; - } - - @override - String notifDownloadsFinishedBody(int completed, int failed) { - String _temp0 = intl.Intl.pluralLogic( - completed, - locale: localeName, - other: '$completed tracks downloaded', - one: '1 track downloaded', - ); - String _temp1 = intl.Intl.pluralLogic( - failed, - locale: localeName, - other: '$failed failed', - one: '1 failed', - ); - return '$_temp0, $_temp1'; - } - - @override - String get notifDownloadsCanceledTitle => 'Downloads canceled'; - - @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', - ); - return '$_temp0'; - } - - @override - String get notifScanningLibrary => 'Сканування локальної бібліотеки'; - - @override - String notifLibraryScanProgressWithTotal( - int scanned, - int total, - int percentage, - ) { - return '$scanned/$total файлів • $percentage%'; - } - - @override - String notifLibraryScanProgressNoTotal(int scanned, int percentage) { - return '$scanned файлів скановано • $percentage%'; - } - - @override - String get notifLibraryScanComplete => 'Сканування бібліотеки завершено'; - - @override - String notifLibraryScanCompleteBody(int count) { - return '$count треків індексовано'; - } - - @override - String notifLibraryScanExcluded(int count) { - return '$count виключені'; - } - - @override - String notifLibraryScanErrors(int count) { - return '$count помилок'; - } - - @override - String get notifLibraryScanFailed => 'Не вдалося сканувати бібліотеку'; - - @override - String get notifLibraryScanCancelled => 'Сканування бібліотеки скасовано'; - - @override - String get notifLibraryScanStopped => 'Сканування зупинено до завершення.'; - - @override - String notifDownloadingUpdate(String version) { - return 'Downloading SpotiFLAC Mobile v$version'; - } - - @override - String notifUpdateProgress(String received, String total, int percentage) { - return '$received / $total МБ • $percentage%'; - } - - @override - String get notifUpdateReady => 'Оновлення готове'; - - @override - String notifUpdateReadyBody(String version) { - return 'SpotiFLAC Mobile v$version downloaded. Tap to install.'; - } - - @override - String get notifUpdateFailed => 'Не вдалося оновити'; - - @override - String get notifUpdateFailedBody => - 'Не вдалося завантажити оновлення. Спробуйте пізніше.'; - - @override - String get searchTracks => 'Tracks'; - - @override - String get homeSearchHintDefault => 'Paste supported URL or search...'; - - @override - String homeSearchHintProvider(String providerName) { - return 'Search with $providerName...'; - } - - @override - String get homeImportCsvTooltip => 'Import CSV'; - - @override - String get homeChangeSearchProviderTooltip => 'Change search provider'; - - @override - String get actionPaste => 'Paste'; - - @override - String get tutorialSearchHint => 'Paste or search...'; - - @override - String get tutorialDownloadCompletedSemantics => 'Download completed'; - - @override - String get tutorialDownloadInProgressSemantics => 'Download in progress'; - - @override - String get tutorialStartDownloadSemantics => 'Start download'; - - @override - String get optionsEmbedMetadata => 'Embed Metadata'; - - @override - String get optionsEmbedMetadataSubtitleOn => - 'Write metadata, cover art, and embedded lyrics to files'; - - @override - String get optionsEmbedMetadataSubtitleOff => - 'Disabled (advanced): skip all metadata embedding'; - - @override - String get trackCoverNoEmbeddedArt => 'No embedded album art found'; - - @override - String get trackCoverReplace => 'Replace Cover'; - - @override - String get trackCoverPick => 'Pick Cover'; - - @override - String get trackCoverClearSelected => 'Clear selected cover'; - - @override - String get trackCoverCurrent => 'Current cover'; - - @override - String get trackCoverSelected => 'Selected cover'; - - @override - String get trackCoverReplaceNotice => - 'The selected cover will replace the current embedded cover when you tap Save.'; - - @override - String get trackCoverResolution => 'Cover resolution'; - - @override - String get trackCoverResolutionHint => - 'Sets the longest edge when saved. Enlarging does not add image detail.'; - - @override - String get trackCoverResizeFailed => - 'The cover image could not be resized. Please try another size or image.'; - - @override - String get actionStop => 'Stop'; - - @override - String get queueFinalizingDownload => 'Finalizing download'; - - @override - String get queueDownloadNext => 'Download next'; - - @override - String get queueMoveUp => 'Move up'; - - @override - String get queueMoveDown => 'Move down'; - - @override - String get editMetadataMusicBrainzButton => 'Fetch from MusicBrainz'; - - @override - String get editMetadataMusicBrainzFilled => 'Updated from MusicBrainz'; - - @override - String get editMetadataMusicBrainzNothing => 'Nothing found on MusicBrainz'; - - @override - String get editMetadataMusicBrainzNeedsIsrc => 'Requires an ISRC tag'; - - @override - String get nowPlayingRepeatOff => 'Repeat off'; - - @override - String get nowPlayingRepeatAll => 'Repeat all'; - - @override - String get nowPlayingRepeatOne => 'Repeat one'; - - @override - String queueNetworkFailedOffline(int count) { - return '$count downloads failed while offline'; - } - - @override - String get queueDownloadedFileMissing => 'Downloaded file missing'; - - @override - String get queueCheckingDownloadedFile => 'Checking downloaded file...'; - - @override - String get queueDownloadCompleted => 'Download completed'; - - @override - String get queueRateLimitTitle => 'Service rate limited'; - - @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'; - } - - @override - String get logAutoScrollOn => 'Auto-scroll ON'; - - @override - String get logAutoScrollOff => 'Auto-scroll OFF'; - - @override - String get logCopyLogs => 'Copy logs'; - - @override - String get logClearSearch => 'Clear search'; - - @override - String get logIssueIspBlockingLabel => 'ISP BLOCKING DETECTED'; - - @override - String get logIssueIspBlockingDescription => - 'Your ISP may be blocking access to download services'; - - @override - String get logIssueIspBlockingSuggestion => - 'Try using a VPN or change DNS to 1.1.1.1 or 8.8.8.8'; - - @override - String get logIssueRateLimitedLabel => 'RATE LIMITED'; - - @override - String get logIssueRateLimitedDescription => - 'Too many requests to the service'; - - @override - String get logIssueRateLimitedSuggestion => - 'Wait a few minutes before trying again'; - - @override - String get logIssueNetworkErrorLabel => 'NETWORK ERROR'; - - @override - String get logIssueNetworkErrorDescription => 'Connection issues detected'; - - @override - String get logIssueNetworkErrorSuggestion => 'Check your internet connection'; - - @override - String get logIssueTrackNotFoundLabel => 'TRACK NOT FOUND'; - - @override - String get logIssueTrackNotFoundDescription => - 'Some tracks could not be found on download services'; - - @override - String get logIssueTrackNotFoundSuggestion => - 'The track may not be available in lossless quality'; - - @override - String get clickableLookingUpArtist => 'Looking up artist...'; - - @override - String clickableInformationUnavailable(String type) { - return '$type information not available'; - } - - @override - String get extensionDetailsTags => 'Tags'; - - @override - String get extensionDetailsInformation => 'Information'; - - @override - String get extensionUtilityFunctions => 'Utility Functions'; - - @override - String get actionDismiss => 'Dismiss'; - - @override - String get setupChangeFolderTooltip => 'Change folder'; - - @override - String a11yOpenTrackByArtist(String trackName, String artistName) { - return 'Open track $trackName by $artistName'; - } - - @override - String a11yOpenItem(String itemType, String name) { - return 'Open $itemType $name'; - } - - @override - String a11yOpenItemCount(String title, int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return 'Open $title, $count $_temp0'; - } - - @override - String a11yOpenAlbumByArtistTrackCount( - String albumName, - String artistName, - int trackCount, - ) { - return 'Open album $albumName by $artistName, $trackCount tracks'; - } - - @override - String a11yTrackByArtist(String trackName, String artistName) { - return '$trackName by $artistName'; - } - - @override - String a11ySelectAlbum(String albumName) { - return 'Select album $albumName'; - } - - @override - String a11yOpenAlbum(String albumName) { - return 'Open album $albumName'; - } - - @override - String get settingsFiles => 'Files & Folders'; - - @override - String get settingsFilesSubtitle => - 'Download location, filename, folder structure'; - - @override - String get settingsMetadata => 'Metadata'; - - @override - String get settingsMetadataSubtitle => - 'Cover art, tags, ReplayGain, providers'; - - @override - String get settingsLyrics => 'Lyrics'; - - @override - String get settingsLyricsSubtitle => - 'Embed, mode, providers, language options'; - - @override - String get settingsApp => 'App'; - - @override - String get settingsAppSubtitle => 'Updates, data, extension repo, debug'; - - @override - String get sectionMetadataProviders => 'Providers'; - - @override - String get sectionDuplicates => 'Duplicates'; - - @override - String get sectionLyricsProviderOptions => 'Provider Options'; - - @override - String get metadataProvidersTitle => 'Metadata Provider Priority'; - - @override - String get metadataProvidersSubtitle => - 'Drag to set search and metadata source order'; - - @override - String get downloadDeduplication => 'Skip Duplicate Downloads'; - - @override - String get downloadDeduplicationEnabled => - 'Already-downloaded tracks will be skipped'; - - @override - String get downloadDeduplicationWithQualityVariants => - 'Existing files at the selected quality will be skipped'; - - @override - String get downloadDeduplicationDisabled => - 'All tracks will be downloaded regardless of history'; - - @override - String get downloadQualityVariants => 'Allow different quality versions'; - - @override - String get downloadQualityVariantsDescription => - 'Зберігати кожну версію якості; додавати виміряну якість до назви файлу лише тоді, коли назва вже використовується'; - - @override - String get trackOptionDownloadQualityVariant => 'Download another quality'; - - @override - String get downloadFallbackExtensions => 'Fallback Extensions'; - - @override - String get downloadFallbackExtensionsSubtitle => - 'Choose which extensions can be used as fallback'; - - @override - String get editMetadataFieldDateHint => 'YYYY-MM-DD or YYYY'; - - @override - String get editMetadataFieldTrackTotal => 'Track Total'; - - @override - String get editMetadataFieldDiscTotal => 'Disc Total'; - - @override - String get editMetadataFieldComposer => 'Composer'; - - @override - String get editMetadataFieldComment => 'Comment'; - - @override - String get trackAlbumType => 'Release Type'; - - @override - String get editMetadataFieldAlbumTypeHint => - 'Album, single, EP, compilation...'; - - @override - String get editMetadataFieldExplicit => 'Explicit'; - - @override - String get editMetadataFieldExplicitHint => - 'Mark this track as containing explicit content'; - - @override - String get metadataExplicitValue => 'Explicit'; - - @override - String get editMetadataFieldUpc => 'UPC / Barcode'; - - @override - String get editMetadataFieldUpcHint => 'Numeric UPC, EAN, or GTIN'; - - @override - String get editMetadataAdvanced => 'Advanced'; - - @override - String get libraryFilterMetadataMissingTrackNumber => 'Missing track number'; - - @override - String get libraryFilterMetadataMissingDiscNumber => 'Missing disc number'; - - @override - String get libraryFilterMetadataMissingArtist => 'Missing artist'; - - @override - String get libraryFilterMetadataIncorrectIsrcFormat => - 'Incorrect ISRC format'; - - @override - String get libraryFilterMetadataMissingIsrc => 'Missing ISRC'; - - @override - String get libraryFilterMetadataMissingLabel => 'Missing label'; - - @override - String collectionDeletePlaylistsMessage(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return 'Delete $count $_temp0?'; - } - - @override - String collectionPlaylistsDeleted(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'playlists', - one: 'playlist', - ); - return '$count $_temp0 deleted'; - } - - @override - String collectionAddedTracksToPlaylist(int count, String playlistName) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName'; - } - - @override - String collectionAddedTracksToPlaylistWithExisting( - int count, - String playlistName, - int alreadyCount, - ) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Added $count $_temp0 to $playlistName ($alreadyCount already in playlist)'; - } - - @override - String itemCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'items', - one: 'item', - ); - return '$count $_temp0'; - } - - @override - String trackReEnrichSuccessWithFailures( - int successCount, - int total, - int failedCount, - ) { - return 'Metadata re-enriched successfully ($successCount/$total) - Failed: $failedCount'; - } - - @override - String selectionDeleteTracksCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'tracks', - one: 'track', - ); - return 'Delete $count $_temp0'; - } - - @override - String queueDownloadSpeedStatus(String speed) { - return 'Downloading - $speed MB/s'; - } - - @override - String get queueDownloadStarting => 'Starting...'; - - @override - String get queueCheckingDownloadSession => 'Checking download session...'; - - @override - String get queueResolvingDownloadMetadata => 'Resolving track metadata...'; - - @override - String get queueResolvingDownloadStream => 'Preparing audio stream...'; - - @override - String get queueWaitingForVerification => 'Waiting for verification...'; - - @override - String get queueResumingAfterVerification => 'Resuming after verification...'; - - @override - String get a11ySelectTrack => 'Select track'; - - @override - String get a11yDeselectTrack => 'Deselect track'; - - @override - String a11yPlayTrackByArtist(String trackName, String artistName) { - return 'Play $trackName by $artistName'; - } - - @override - String storeExtensionsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'extensions', - one: 'extension', - ); - return '$count $_temp0'; - } - - @override - String storeRequiresVersion(String version) { - return 'Requires v$version+'; - } - - @override - String get actionGo => 'Go'; - - @override - String get logIssueSummary => 'Issue Summary'; - - @override - String logTotalErrors(int count) { - return 'Total errors: $count'; - } - - @override - String logAffectedDomains(String domains) { - return 'Affected: $domains'; - } - - @override - String get libraryScanCancelled => 'Scan cancelled'; - - @override - String get libraryScanCancelledSubtitle => - 'You can retry the scan when ready.'; - - @override - String libraryDownloadsHistoryExcluded(int count) { - return '$count from Downloads history (excluded from list)'; - } - - @override - String get downloadNativeWorker => 'Native download worker'; - - @override - String get downloadNativeWorkerSubtitle => - 'Фонова служба Android для завантажень через розширення'; - - @override - String get extensionServiceStatus => 'Service Status'; - - @override - String get extensionServiceHealth => 'Service health'; - - @override - String extensionHealthChecksConfigured(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'checks', - one: 'check', - ); - return '$count $_temp0 configured'; - } - - @override - String get extensionOauthConnectHint => - 'Tap Connect to Spotify to fill this field.'; - - @override - String extensionLastChecked(String time) { - return 'Last checked $time'; - } - - @override - String get extensionRefreshStatus => 'Refresh status'; - - @override - String get extensionCustomUrlHandling => 'Custom URL Handling'; - - @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.'; - - @override - String extensionSettingsCount(int count) { - String _temp0 = intl.Intl.pluralLogic( - count, - locale: localeName, - other: 'settings', - one: 'setting', - ); - return '$count $_temp0'; - } - - @override - String get extensionHealthOnline => 'Online'; - - @override - String get extensionHealthDegraded => 'Degraded'; - - @override - String get extensionHealthOffline => 'Offline'; - - @override - String get extensionHealthNotConfigured => 'Not configured'; - - @override - String get extensionHealthUnknown => 'Unknown'; - - @override - String get extensionHealthRequired => 'required'; - - @override - String get extensionSettingNotSet => 'Not set'; - - @override - String get extensionActionFailed => 'Action failed'; - - @override - String get extensionEnterValue => 'Enter value'; - - @override - String get extensionHealthServiceOnline => 'Service online'; - - @override - String get extensionHealthServiceDegraded => 'Service degraded'; - - @override - String get extensionHealthServiceOffline => 'Service offline'; - - @override - String get extensionHealthServiceUnknown => 'Service status unknown'; - - @override - String get audioAnalysisStereo => 'Stereo'; - - @override - String get audioAnalysisMono => 'Mono'; - - @override - String trackOpenInService(String serviceName) { - return 'Open in $serviceName'; - } - - @override - String get trackLyricsEmbeddedSource => 'Embedded'; - - @override - String get unknownAlbum => 'Unknown Album'; - - @override - String get unknownArtist => 'Unknown Artist'; - - @override - String get permissionAudio => 'Audio'; - - @override - String get permissionStorage => 'Storage'; - - @override - String get permissionNotification => 'Notification'; - - @override - String get errorInvalidFolderSelected => 'Invalid folder selected'; - - @override - String get storeAnyVersion => 'Any'; - - @override - String get storeCategoryMetadata => 'Metadata'; - - @override - String get storeCategoryDownload => 'Download'; - - @override - String get storeCategoryUtility => 'Utility'; - - @override - String get storeCategoryLyrics => 'Lyrics'; - - @override - String get storeCategoryIntegration => 'Integration'; - - @override - String get artistReleases => 'Releases'; - - @override - String get editMetadataSelectNone => 'None'; - - @override - String queueRetryAllFailed(int count) { - return 'Retry $count failed'; - } - - @override - String get settingsSaveDownloadHistory => 'Save download history'; - - @override - String get settingsSaveDownloadHistorySubtitle => - 'Keep completed downloads in history and library views'; - - @override - String get dialogDisableHistoryTitle => 'Turn off download history?'; - - @override - String get dialogDisableHistoryMessage => - 'Existing history will be cleared. Downloaded files will not be deleted.'; - - @override - String get dialogDisableAndClear => 'Turn off and clear'; - - @override - String get openInOtherServices => 'Open in Other Services'; - - @override - String get shareSheetNoExtensions => 'No other compatible services'; - - @override - String get shareSheetNotFound => 'Not found'; - - @override - String get shareSheetCopyLink => 'Copy Link'; - - @override - 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 nowPlayingPreviousTrack => 'Попередній трек'; - - @override - String get nowPlayingNextTrack => 'Наступний трек'; - - @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'; - - @override - String get settingsSearchHint => 'Пошук у налаштуваннях'; - - @override - String settingsSearchNoResults(String query) { - return 'Немає налаштувань, що відповідають запиту «$query»'; - } - - @override - String get settingsGroupInterface => 'Розширення та вигляд'; - - @override - String get settingsGroupContent => 'Вміст і метадані'; - - @override - String get settingsGroupDownloads => 'Завантаження та файли'; - - @override - String get settingsGroupSystem => 'Система'; - - @override - String get settingsGroupHelp => 'Про програму та підтримка'; - - @override - String get libraryFilterMetadataMissingLyrics => 'Missing lyrics'; - - @override - String get trackOptionCopyTrackName => 'Copy track name'; - - @override - String get trackOptionCopyArtist => 'Copy artist'; - - @override - String get trackOptionCopyTrackAndArtist => 'Copy track and artist'; - - @override - String get metadataCopyValue => 'Copy value'; - - @override - String get metadataCopyField => 'Copy field and value'; - - @override - String get metadataCopyAll => 'Copy all metadata'; - - @override - String get optionsEmbeddedCoverSize => 'Embedded Cover Size'; - - @override - String get optionsEmbeddedCoverSizeDescription => - 'Downscale remotely downloaded cover art before embedding it. Images already within the limit are kept unchanged.'; - - @override - String get optionsEmbeddedCoverSizeOriginal => 'Original resolution'; -} diff --git a/lib/services/cover_cache_manager.dart b/lib/services/cover_cache_manager.dart index 9fd133c9..a8e2cd7b 100644 --- a/lib/services/cover_cache_manager.dart +++ b/lib/services/cover_cache_manager.dart @@ -216,16 +216,4 @@ class CacheStats { final int totalSizeBytes; const CacheStats({required this.fileCount, required this.totalSizeBytes}); - - String get formattedSize { - if (totalSizeBytes < 1024) { - return '$totalSizeBytes B'; - } else if (totalSizeBytes < 1024 * 1024) { - return '${(totalSizeBytes / 1024).toStringAsFixed(1)} KB'; - } else if (totalSizeBytes < 1024 * 1024 * 1024) { - return '${(totalSizeBytes / (1024 * 1024)).toStringAsFixed(1)} MB'; - } else { - return '${(totalSizeBytes / (1024 * 1024 * 1024)).toStringAsFixed(2)} GB'; - } - } } diff --git a/lib/services/history_database.dart b/lib/services/history_database.dart index cd23e080..dde59422 100644 --- a/lib/services/history_database.dart +++ b/lib/services/history_database.dart @@ -4,6 +4,7 @@ import 'package:sqflite/sqflite.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; import 'package:spotiflac_android/services/sqlite_helpers.dart' as sqlite; +import 'package:spotiflac_android/utils/isrc_utils.dart' as isrc; import 'package:spotiflac_android/utils/logger.dart'; import 'package:spotiflac_android/utils/path_match_keys.dart'; @@ -286,9 +287,7 @@ class HistoryDatabase { static String normalizeLookupText(String? value) => sqlite.normalizeLookupText(value); - static String normalizeIsrc(String? value) { - return (value ?? '').trim().toUpperCase().replaceAll(RegExp(r'[-\s]'), ''); - } + static String normalizeIsrc(String? value) => isrc.normalizeIsrc(value); static String normalizeSpotifyId(String? value) { return (value ?? '').trim().toLowerCase(); diff --git a/lib/services/library_database_models.dart b/lib/services/library_database_models.dart index 550939d2..2f880848 100644 --- a/lib/services/library_database_models.dart +++ b/lib/services/library_database_models.dart @@ -240,8 +240,6 @@ class LocalLibrarySource { enum LocalLibrarySortMode { album, title, artist, latest, quality } -enum LocalLibraryFilterMode { all, albums, singles } - class LocalLibraryLookupIndex { final Set isrcs; final Set matchKeys; diff --git a/lib/widgets/cached_cover_image.dart b/lib/widgets/cached_cover_image.dart index 32ebd23d..37427e15 100644 --- a/lib/widgets/cached_cover_image.dart +++ b/lib/widgets/cached_cover_image.dart @@ -254,13 +254,3 @@ void precacheCoverImage(BuildContext context, String? url) { context, ); } - -int coverImageCacheExtent( - BuildContext context, - double logicalSize, { - int min = 64, - int max = 512, -}) { - final dpr = MediaQuery.devicePixelRatioOf(context).clamp(1.0, 3.0).toDouble(); - return (logicalSize * dpr).round().clamp(min, max).toInt(); -}