/// /// Generated file. Do not edit. /// // coverage:ignore-file // ignore_for_file: type=lint, unused_import // dart format off part of 'strings.g.dart'; // Path: typedef TranslationsEn = Translations; // ignore: unused_element class Translations with BaseTranslations { /// Returns the current translations of the given [context]. /// /// Usage: /// final t = Translations.of(context); static Translations of(BuildContext context) => InheritedLocaleData.of(context).translations; /// You can call this constructor and build your own translation instance of this locale. /// Constructing via the enum [AppLocale.build] is preferred. Translations({Map? overrides, PluralResolver? cardinalResolver, PluralResolver? ordinalResolver, TranslationMetadata? meta}) : assert(overrides == null, 'Set "translation_overrides: true" in order to enable this feature.'), $meta = meta ?? TranslationMetadata( locale: AppLocale.en, overrides: overrides ?? {}, cardinalResolver: cardinalResolver, ordinalResolver: ordinalResolver, ) { $meta.setFlatMapFunction(_flatMapFunction); } /// Metadata for the translations of . @override final TranslationMetadata $meta; /// Access flat map dynamic operator[](String key) => $meta.getTranslation(key); late final Translations _root = this; // ignore: unused_field Translations $copyWith({TranslationMetadata? meta}) => Translations(meta: meta ?? this.$meta); // Translations late final Translations$app$en app = Translations$app$en.internal(_root); late final Translations$auth$en auth = Translations$auth$en.internal(_root); late final Translations$common$en common = Translations$common$en.internal(_root); late final Translations$screens$en screens = Translations$screens$en.internal(_root); late final Translations$update$en update = Translations$update$en.internal(_root); late final Translations$settings$en settings = Translations$settings$en.internal(_root); late final Translations$search$en search = Translations$search$en.internal(_root); late final Translations$hotkeys$en hotkeys = Translations$hotkeys$en.internal(_root); late final Translations$fileInfo$en fileInfo = Translations$fileInfo$en.internal(_root); late final Translations$mediaMenu$en mediaMenu = Translations$mediaMenu$en.internal(_root); late final Translations$rateSheet$en rateSheet = Translations$rateSheet$en.internal(_root); late final Translations$accessibility$en accessibility = Translations$accessibility$en.internal(_root); late final Translations$tooltips$en tooltips = Translations$tooltips$en.internal(_root); late final Translations$audioTracks$en audioTracks = Translations$audioTracks$en.internal(_root); late final Translations$videoControls$en videoControls = Translations$videoControls$en.internal(_root); late final Translations$messages$en messages = Translations$messages$en.internal(_root); late final Translations$subtitlingStyling$en subtitlingStyling = Translations$subtitlingStyling$en.internal(_root); late final Translations$mpvConfig$en mpvConfig = Translations$mpvConfig$en.internal(_root); late final Translations$dialog$en dialog = Translations$dialog$en.internal(_root); late final Translations$profiles$en profiles = Translations$profiles$en.internal(_root); late final Translations$connections$en connections = Translations$connections$en.internal(_root); late final Translations$discover$en discover = Translations$discover$en.internal(_root); late final Translations$errors$en errors = Translations$errors$en.internal(_root); late final Translations$libraries$en libraries = Translations$libraries$en.internal(_root); late final Translations$about$en about = Translations$about$en.internal(_root); late final Translations$serverSelection$en serverSelection = Translations$serverSelection$en.internal(_root); late final Translations$hubDetail$en hubDetail = Translations$hubDetail$en.internal(_root); late final Translations$logs$en logs = Translations$logs$en.internal(_root); late final Translations$licenses$en licenses = Translations$licenses$en.internal(_root); late final Translations$navigation$en navigation = Translations$navigation$en.internal(_root); late final Translations$explore$en explore = Translations$explore$en.internal(_root); late final Translations$liveTv$en liveTv = Translations$liveTv$en.internal(_root); late final Translations$collections$en collections = Translations$collections$en.internal(_root); late final Translations$playlists$en playlists = Translations$playlists$en.internal(_root); late final Translations$music$en music = Translations$music$en.internal(_root); late final Translations$watchTogether$en watchTogether = Translations$watchTogether$en.internal(_root); late final Translations$downloads$en downloads = Translations$downloads$en.internal(_root); late final Translations$shaders$en shaders = Translations$shaders$en.internal(_root); late final Translations$companionRemote$en companionRemote = Translations$companionRemote$en.internal(_root); late final Translations$videoSettings$en videoSettings = Translations$videoSettings$en.internal(_root); late final Translations$performanceOverlay$en performanceOverlay = Translations$performanceOverlay$en.internal(_root); late final Translations$externalPlayer$en externalPlayer = Translations$externalPlayer$en.internal(_root); late final Translations$metadataEdit$en metadataEdit = Translations$metadataEdit$en.internal(_root); late final Translations$matchScreen$en matchScreen = Translations$matchScreen$en.internal(_root); late final Translations$serverTasks$en serverTasks = Translations$serverTasks$en.internal(_root); late final Translations$trakt$en trakt = Translations$trakt$en.internal(_root); late final Translations$seerr$en seerr = Translations$seerr$en.internal(_root); late final Translations$services$en services = Translations$services$en.internal(_root); late final Translations$addServer$en addServer = Translations$addServer$en.internal(_root); } // Path: app class Translations$app$en { Translations$app$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Plezy' String get title => 'Plezy'; } // Path: auth class Translations$auth$en { Translations$auth$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Sign in with Plex' String get signInWithPlex => 'Sign in with Plex'; /// en: 'Show QR Code' String get showQRCode => 'Show QR Code'; /// en: 'Authenticate' String get authenticate => 'Authenticate'; /// en: 'Authentication timed out. Please try again.' String get authenticationTimeout => 'Authentication timed out. Please try again.'; /// en: 'Scan this QR code to sign in' String get scanQRToSignIn => 'Scan this QR code to sign in'; /// en: 'Waiting for authentication... Sign in from your browser.' String get waitingForAuth => 'Waiting for authentication...\nSign in from your browser.'; /// en: 'Use browser' String get useBrowser => 'Use browser'; /// en: 'or' String get or => 'or'; /// en: 'Connect to Jellyfin' String get connectToJellyfin => 'Connect to Jellyfin'; /// en: 'Use Quick Connect' String get useQuickConnect => 'Use Quick Connect'; /// en: 'Open Quick Connect in Jellyfin and enter this code.' String get quickConnectInstructions => 'Open Quick Connect in Jellyfin and enter this code.'; /// en: 'Waiting for approval…' String get quickConnectWaiting => 'Waiting for approval…'; /// en: 'Cancel' String get quickConnectCancel => 'Cancel'; /// en: 'Quick Connect expired. Try again.' String get quickConnectExpired => 'Quick Connect expired. Try again.'; /// en: 'Plezy could not safely recover local sign-in and pending playback data. Please sign in again.' String get localDataRecoveryRequired => 'Plezy could not safely recover local sign-in and pending playback data. Please sign in again.'; } // Path: common class Translations$common$en { Translations$common$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Cancel' String get cancel => 'Cancel'; /// en: 'Save' String get save => 'Save'; /// en: 'Close' String get close => 'Close'; /// en: 'Clear' String get clear => 'Clear'; /// en: 'Reset' String get reset => 'Reset'; /// en: 'Later' String get later => 'Later'; /// en: 'Submit' String get submit => 'Submit'; /// en: 'Confirm' String get confirm => 'Confirm'; /// en: 'Retry' String get retry => 'Retry'; /// en: 'Log out' String get logout => 'Log out'; /// en: 'Unknown' String get unknown => 'Unknown'; /// en: 'Refresh' String get refresh => 'Refresh'; /// en: 'Yes' String get yes => 'Yes'; /// en: 'No' String get no => 'No'; /// en: 'Delete' String get delete => 'Delete'; /// en: 'Edit' String get edit => 'Edit'; /// en: 'Shuffle' String get shuffle => 'Shuffle'; /// en: 'Add to...' String get addTo => 'Add to...'; /// en: 'Create new' String get createNew => 'Create new'; /// en: 'Connect' String get connect => 'Connect'; /// en: 'Disconnect' String get disconnect => 'Disconnect'; /// en: 'Play' String get play => 'Play'; /// en: 'Pause' String get pause => 'Pause'; /// en: 'Resume' String get resume => 'Resume'; /// en: 'Error' String get error => 'Error'; /// en: 'Search' String get search => 'Search'; /// en: 'Home' String get home => 'Home'; /// en: 'Back' String get back => 'Back'; /// en: 'Settings' String get settings => 'Settings'; /// en: 'Mute' String get mute => 'Mute'; /// en: 'OK' String get ok => 'OK'; /// en: 'Off' String get off => 'Off'; /// en: 'Season ${number}' String seasonNumber({required Object number}) => 'Season ${number}'; /// en: 'Episode ${number} - ${title}' String episodeNumberTitle({required Object number, required Object title}) => 'Episode ${number} - ${title}'; /// en: 'Chapter ${number}' String chapterNumber({required Object number}) => 'Chapter ${number}'; /// en: 'Reconnect' String get reconnect => 'Reconnect'; /// en: 'View All' String get viewAll => 'View All'; /// en: 'Checking network...' String get checkingNetwork => 'Checking network...'; /// en: 'Loading servers...' String get loadingServers => 'Loading servers...'; /// en: 'Connecting to servers...' String get connectingToServers => 'Connecting to servers...'; /// en: 'Starting offline mode...' String get startingOfflineMode => 'Starting offline mode...'; /// en: 'Loading...' String get loading => 'Loading...'; /// en: 'Fullscreen' String get fullscreen => 'Fullscreen'; /// en: 'Exit fullscreen' String get exitFullscreen => 'Exit fullscreen'; /// en: 'Press back again to exit' String get pressBackAgainToExit => 'Press back again to exit'; } // Path: screens class Translations$screens$en { Translations$screens$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Licenses' String get licenses => 'Licenses'; /// en: 'Switch Profile' String get switchProfile => 'Switch Profile'; /// en: 'Subtitle Styling' String get subtitleStyling => 'Subtitle Styling'; /// en: 'mpv.conf' String get mpvConfig => 'mpv.conf'; /// en: 'Logs' String get logs => 'Logs'; } // Path: update class Translations$update$en { Translations$update$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Update Available' String get available => 'Update Available'; /// en: 'Version ${version} is available' String versionAvailable({required Object version}) => 'Version ${version} is available'; /// en: 'Current: ${version}' String currentVersion({required Object version}) => 'Current: ${version}'; /// en: 'Skip This Version' String get skipVersion => 'Skip This Version'; /// en: 'View Release' String get viewRelease => 'View Release'; /// en: 'You are on the latest version' String get latestVersion => 'You are on the latest version'; /// en: 'Failed to check for updates' String get checkFailed => 'Failed to check for updates'; } // Path: settings class Translations$settings$en { Translations$settings$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Settings' String get title => 'Settings'; /// en: 'Support Plezy' String get supportDeveloper => 'Support Plezy'; /// en: 'Donate via Liberapay to fund development' String get supportDeveloperDescription => 'Donate via Liberapay to fund development'; /// en: 'Language' String get language => 'Language'; /// en: 'Theme' String get theme => 'Theme'; /// en: 'Appearance' String get appearance => 'Appearance'; /// en: 'Video Playback' String get videoPlayback => 'Video Playback'; /// en: 'Configure playback behavior' String get videoPlaybackDescription => 'Configure playback behavior'; /// en: 'Advanced' String get advanced => 'Advanced'; /// en: 'Episode Poster Style' String get episodePosterMode => 'Episode Poster Style'; /// en: 'Series Poster' String get seriesPoster => 'Series Poster'; /// en: 'Season Poster' String get seasonPoster => 'Season Poster'; /// en: 'Thumbnail' String get episodeThumbnail => 'Thumbnail'; /// en: 'Display featured content carousel on home screen' String get showHeroSectionDescription => 'Display featured content carousel on home screen'; /// en: 'Seconds' String get secondsLabel => 'Seconds'; /// en: 'Minutes' String get minutesLabel => 'Minutes'; /// en: 's' String get secondsShort => 's'; /// en: 'm' String get minutesShort => 'm'; /// en: 'Enter duration (${min}-${max})' String durationHint({required Object min, required Object max}) => 'Enter duration (${min}-${max})'; /// en: 'System' String get systemTheme => 'System'; /// en: 'Light' String get lightTheme => 'Light'; /// en: 'Dark' String get darkTheme => 'Dark'; /// en: 'OLED' String get oledTheme => 'OLED'; /// en: 'Library Density' String get libraryDensity => 'Library Density'; /// en: 'Compact' String get compact => 'Compact'; /// en: 'Comfortable' String get comfortable => 'Comfortable'; /// en: 'Corner Spotlight Backdrop' String get tvCornerSpotlightBackdrop => 'Corner Spotlight Backdrop'; /// en: 'Show spotlight artwork in the top-right corner instead of filling the screen' String get tvCornerSpotlightBackdropDescription => 'Show spotlight artwork in the top-right corner instead of filling the screen'; /// en: 'View Mode' String get viewMode => 'View Mode'; /// en: 'Grid' String get gridView => 'Grid'; /// en: 'List' String get listView => 'List'; /// en: 'Show Hero Section' String get showHeroSection => 'Show Hero Section'; /// en: 'Continue Watching Action' String get continueWatchingAction => 'Continue Watching Action'; /// en: 'Play' String get continueWatchingPlay => 'Play'; /// en: 'Open Details' String get continueWatchingDetails => 'Open Details'; /// en: 'Episode Action' String get episodeAction => 'Episode Action'; /// en: 'Play' String get episodePlay => 'Play'; /// en: 'Open Details' String get episodeDetails => 'Open Details'; /// en: 'Use Home Layout' String get useGlobalHubs => 'Use Home Layout'; /// en: 'Show unified home hubs. Otherwise use library recommendations.' String get useGlobalHubsDescription => 'Show unified home hubs. Otherwise use library recommendations.'; /// en: 'Show Server Name on Hubs' String get showServerNameOnHubs => 'Show Server Name on Hubs'; /// en: 'Always show server names in hub titles.' String get showServerNameOnHubsDescription => 'Always show server names in hub titles.'; /// en: 'Group Libraries by Server' String get groupLibrariesByServer => 'Group Libraries by Server'; /// en: 'Group sidebar libraries under each media server.' String get groupLibrariesByServerDescription => 'Group sidebar libraries under each media server.'; /// en: 'Always Keep Sidebar Open' String get alwaysKeepSidebarOpen => 'Always Keep Sidebar Open'; /// en: 'Sidebar stays expanded and content area adjusts to fit' String get alwaysKeepSidebarOpenDescription => 'Sidebar stays expanded and content area adjusts to fit'; /// en: 'Show Unwatched Count' String get showUnwatchedCount => 'Show Unwatched Count'; /// en: 'Display unwatched episode count on shows and seasons' String get showUnwatchedCountDescription => 'Display unwatched episode count on shows and seasons'; /// en: 'Show Episode Number on Cards' String get showEpisodeNumberOnCards => 'Show Episode Number on Cards'; /// en: 'Show season and episode number on episode cards' String get showEpisodeNumberOnCardsDescription => 'Show season and episode number on episode cards'; /// en: 'Show Season Posters on Tabs' String get showSeasonPostersOnTabs => 'Show Season Posters on Tabs'; /// en: 'Show each season's poster above its tab' String get showSeasonPostersOnTabsDescription => 'Show each season\'s poster above its tab'; /// en: 'Full TV Cards' String get tvFullCardLayout => 'Full TV Cards'; /// en: 'Use image-only TV cards with actor names overlaid' String get tvFullCardLayoutDescription => 'Use image-only TV cards with actor names overlaid'; /// en: 'Focus Glow' String get focusGlow => 'Focus Glow'; /// en: 'Draw a soft glow around the focused card' String get focusGlowDescription => 'Draw a soft glow around the focused card'; /// en: 'Visual Effects' String get visualEffects => 'Visual Effects'; /// en: 'Auto' String get visualEffectsAuto => 'Auto'; /// en: 'Reduce effects automatically on low-power devices' String get visualEffectsAutoDescription => 'Reduce effects automatically on low-power devices'; /// en: 'Full' String get visualEffectsFull => 'Full'; /// en: 'Reduced' String get visualEffectsReduced => 'Reduced'; /// en: 'Fewer animations and lower-resolution artwork' String get visualEffectsReducedDescription => 'Fewer animations and lower-resolution artwork'; /// en: 'Hide Spoilers for Unwatched Episodes' String get hideSpoilers => 'Hide Spoilers for Unwatched Episodes'; /// en: 'Blur thumbnails and descriptions for unwatched episodes' String get hideSpoilersDescription => 'Blur thumbnails and descriptions for unwatched episodes'; /// en: 'Player Backend' String get playerBackend => 'Player Backend'; /// en: 'ExoPlayer' String get exoPlayer => 'ExoPlayer'; /// en: 'mpv' String get mpv => 'mpv'; /// en: 'Hardware Decoding' String get hardwareDecoding => 'Hardware Decoding'; /// en: 'Use hardware acceleration when available' String get hardwareDecodingDescription => 'Use hardware acceleration when available'; /// en: 'Buffer Size' String get bufferSize => 'Buffer Size'; /// en: '${size}MB' String bufferSizeMB({required Object size}) => '${size}MB'; /// en: 'Auto (Recommended)' String get bufferSizeAuto => 'Auto (Recommended)'; /// en: '${heap}MB memory available. A ${size}MB buffer may affect playback.' String bufferSizeWarning({required Object heap, required Object size}) => '${heap}MB memory available. A ${size}MB buffer may affect playback.'; /// en: 'Default Quality' String get defaultQualityTitle => 'Default Quality'; /// en: 'Music Quality' String get musicQualityTitle => 'Music Quality'; /// en: 'Subtitle Styling' String get subtitleStyling => 'Subtitle Styling'; /// en: 'Customize subtitle appearance' String get subtitleStylingDescription => 'Customize subtitle appearance'; /// en: 'Small Skip Duration' String get smallSkipDuration => 'Small Skip Duration'; /// en: 'Large Skip Duration' String get largeSkipDuration => 'Large Skip Duration'; /// en: 'Rewind on Resume' String get rewindOnResume => 'Rewind on Resume'; /// en: '${seconds} seconds' String secondsUnit({required Object seconds}) => '${seconds} seconds'; /// en: 'Default Sleep Timer' String get defaultSleepTimer => 'Default Sleep Timer'; /// en: '${minutes} minutes' String minutesUnit({required Object minutes}) => '${minutes} minutes'; /// en: 'Remember track selections per show/movie' String get rememberTrackSelections => 'Remember track selections per show/movie'; /// en: 'Remember audio and subtitle choices per title' String get rememberTrackSelectionsDescription => 'Remember audio and subtitle choices per title'; /// en: 'Show chapter markers on seek bar' String get showChapterMarkersOnTimeline => 'Show chapter markers on seek bar'; /// en: 'Segment the seek bar at chapter boundaries' String get showChapterMarkersOnTimelineDescription => 'Segment the seek bar at chapter boundaries'; /// en: 'Click on video to toggle play/pause' String get clickVideoTogglesPlayback => 'Click on video to toggle play/pause'; /// en: 'Click video to play/pause instead of showing controls.' String get clickVideoTogglesPlaybackDescription => 'Click video to play/pause instead of showing controls.'; /// en: 'Video Player Controls' String get videoPlayerControls => 'Video Player Controls'; /// en: 'Keyboard Shortcuts' String get keyboardShortcuts => 'Keyboard Shortcuts'; /// en: 'Customize keyboard shortcuts' String get keyboardShortcutsDescription => 'Customize keyboard shortcuts'; /// en: 'Video Player Navigation' String get videoPlayerNavigation => 'Video Player Navigation'; /// en: 'Use arrow keys to navigate video player controls' String get videoPlayerNavigationDescription => 'Use arrow keys to navigate video player controls'; /// en: 'Watch Together Relay' String get watchTogetherRelay => 'Watch Together Relay'; /// en: 'Set a custom relay. Everyone must use the same server.' String get watchTogetherRelayDescription => 'Set a custom relay. Everyone must use the same server.'; /// en: 'https://my-relay.example.com' String get watchTogetherRelayHint => 'https://my-relay.example.com'; /// en: 'Enter a valid HTTP or HTTPS relay base URL.' String get watchTogetherRelayInvalid => 'Enter a valid HTTP or HTTPS relay base URL.'; /// en: 'Crash Reporting' String get crashReporting => 'Crash Reporting'; /// en: 'Send crash reports to help improve the app' String get crashReportingDescription => 'Send crash reports to help improve the app'; /// en: 'Debug Logging' String get debugLogging => 'Debug Logging'; /// en: 'Enable detailed logging for troubleshooting' String get debugLoggingDescription => 'Enable detailed logging for troubleshooting'; /// en: 'View Logs' String get viewLogs => 'View Logs'; /// en: 'View application logs' String get viewLogsDescription => 'View application logs'; /// en: 'Clear Image Cache' String get clearImageCache => 'Clear Image Cache'; /// en: 'Clear cached artwork and thumbnails. Images may load slower until downloaded again.' String get clearImageCacheDescription => 'Clear cached artwork and thumbnails. Images may load slower until downloaded again.'; /// en: 'Image cache cleared successfully' String get clearImageCacheSuccess => 'Image cache cleared successfully'; /// en: 'Reset Settings' String get resetSettings => 'Reset Settings'; /// en: 'Restore default settings. This can't be undone.' String get resetSettingsDescription => 'Restore default settings. This can\'t be undone.'; /// en: 'Settings reset successfully' String get resetSettingsSuccess => 'Settings reset successfully'; /// en: 'Backup' String get backup => 'Backup'; /// en: 'Export Settings' String get exportSettings => 'Export Settings'; /// en: 'Save your preferences to a file' String get exportSettingsDescription => 'Save your preferences to a file'; /// en: 'Settings exported' String get exportSettingsSuccess => 'Settings exported'; /// en: 'Import Settings' String get importSettings => 'Import Settings'; /// en: 'Restore preferences from a file' String get importSettingsDescription => 'Restore preferences from a file'; /// en: 'This will replace your current settings. Continue?' String get importSettingsConfirm => 'This will replace your current settings. Continue?'; /// en: 'Settings imported' String get importSettingsSuccess => 'Settings imported'; /// en: 'This file isn't a valid Plezy settings export' String get importSettingsInvalidFile => 'This file isn\'t a valid Plezy settings export'; /// en: 'Sign in before importing settings' String get importSettingsNoUser => 'Sign in before importing settings'; /// en: 'Shortcuts reset to defaults' String get shortcutsReset => 'Shortcuts reset to defaults'; /// en: 'About' String get about => 'About'; /// en: 'App information and licenses' String get aboutDescription => 'App information and licenses'; /// en: 'Updates' String get updates => 'Updates'; /// en: 'Update Available' String get updateAvailable => 'Update Available'; /// en: 'Check for Updates' String get checkForUpdates => 'Check for Updates'; /// en: 'Automatically check for updates on startup' String get autoCheckUpdatesOnStartup => 'Automatically check for updates on startup'; /// en: 'Notify when an update is available at launch' String get autoCheckUpdatesOnStartupDescription => 'Notify when an update is available at launch'; /// en: 'Please enter a valid number' String get validationErrorEnterNumber => 'Please enter a valid number'; /// en: 'Duration must be between ${min} and ${max} ${unit}' String validationErrorDuration({required Object min, required Object max, required Object unit}) => 'Duration must be between ${min} and ${max} ${unit}'; /// en: 'Shortcut already assigned to ${action}' String shortcutAlreadyAssigned({required Object action}) => 'Shortcut already assigned to ${action}'; /// en: 'Shortcut updated for ${action}' String shortcutUpdated({required Object action}) => 'Shortcut updated for ${action}'; /// en: 'Could not save changes. Try again.' String get saveFailed => 'Could not save changes. Try again.'; /// en: 'Auto Skip' String get autoSkip => 'Auto Skip'; /// en: 'Auto Skip Intro' String get autoSkipIntro => 'Auto Skip Intro'; /// en: 'Automatically skip intro markers after a few seconds' String get autoSkipIntroDescription => 'Automatically skip intro markers after a few seconds'; /// en: 'Auto Skip Credits' String get autoSkipCredits => 'Auto Skip Credits'; /// en: 'Automatically skip credits and play next episode' String get autoSkipCreditsDescription => 'Automatically skip credits and play next episode'; /// en: 'Force Fallback Markers' String get forceSkipMarkerFallback => 'Force Fallback Markers'; /// en: 'Use chapter title patterns even when Plex has markers' String get forceSkipMarkerFallbackDescription => 'Use chapter title patterns even when Plex has markers'; /// en: 'Auto Skip Delay' String get autoSkipDelay => 'Auto Skip Delay'; /// en: 'Wait ${seconds} seconds before auto-skipping' String autoSkipDelayDescription({required Object seconds}) => 'Wait ${seconds} seconds before auto-skipping'; /// en: 'Intro Marker Pattern' String get introPattern => 'Intro Marker Pattern'; /// en: 'Regex pattern to match intro markers in chapter titles' String get introPatternDescription => 'Regex pattern to match intro markers in chapter titles'; /// en: 'Credits Marker Pattern' String get creditsPattern => 'Credits Marker Pattern'; /// en: 'Regex pattern to match credits markers in chapter titles' String get creditsPatternDescription => 'Regex pattern to match credits markers in chapter titles'; /// en: 'Invalid regular expression' String get invalidRegex => 'Invalid regular expression'; /// en: 'Regular expression' String get regex => 'Regular expression'; /// en: 'Downloads' String get downloads => 'Downloads'; /// en: 'Choose where to store downloaded content' String get downloadLocationDescription => 'Choose where to store downloaded content'; /// en: 'Default (App Storage)' String get downloadLocationDefault => 'Default (App Storage)'; /// en: 'Custom Location' String get downloadLocationCustom => 'Custom Location'; /// en: 'Select Folder' String get selectFolder => 'Select Folder'; /// en: 'Reset to Default' String get resetToDefault => 'Reset to Default'; /// en: 'Current: ${path}' String currentPath({required Object path}) => 'Current: ${path}'; /// en: 'Download location changed' String get downloadLocationChanged => 'Download location changed'; /// en: 'Download location reset to default' String get downloadLocationReset => 'Download location reset to default'; /// en: 'Selected folder is not writable' String get downloadLocationInvalid => 'Selected folder is not writable'; /// en: 'Folder selection is not available on this device' String get downloadLocationPickerUnavailable => 'Folder selection is not available on this device'; /// en: 'Download on Wi-Fi only' String get downloadOnWifiOnly => 'Download on Wi-Fi only'; /// en: 'Prevent downloads when on cellular data' String get downloadOnWifiOnlyDescription => 'Prevent downloads when on cellular data'; /// en: 'Auto-remove watched downloads' String get autoRemoveWatchedDownloads => 'Auto-remove watched downloads'; /// en: 'Delete watched downloads automatically' String get autoRemoveWatchedDownloadsDescription => 'Delete watched downloads automatically'; /// en: 'Downloads are blocked on cellular. Use Wi-Fi or change the setting.' String get cellularDownloadBlocked => 'Downloads are blocked on cellular. Use Wi-Fi or change the setting.'; /// en: 'Maximum Volume' String get maxVolume => 'Maximum Volume'; /// en: 'Allow volume boost above 100% for quiet media' String get maxVolumeDescription => 'Allow volume boost above 100% for quiet media'; /// en: '${percent}%' String maxVolumePercent({required Object percent}) => '${percent}%'; /// en: 'Discord Rich Presence' String get discordRichPresence => 'Discord Rich Presence'; /// en: 'Show what you're watching on Discord' String get discordRichPresenceDescription => 'Show what you\'re watching on Discord'; /// en: 'Services' String get services => 'Services'; /// en: 'Connect Trakt, MyAnimeList, Seerr, and more' String get servicesDescription => 'Connect Trakt, MyAnimeList, Seerr, and more'; /// en: 'Reorder and hide libraries' String get manageLibrariesDescription => 'Reorder and hide libraries'; /// en: 'Companion Remote Server' String get companionRemoteServer => 'Companion Remote Server'; /// en: 'Allow mobile devices on your network to control this app' String get companionRemoteServerDescription => 'Allow mobile devices on your network to control this app'; /// en: 'Auto Picture-in-Picture' String get autoPip => 'Auto Picture-in-Picture'; /// en: 'Automatically enter picture-in-picture when you leave the app during playback' String get autoPipDescription => 'Automatically enter picture-in-picture when you leave the app during playback'; /// en: 'Match Content Frame Rate' String get matchContentFrameRate => 'Match Content Frame Rate'; /// en: 'Match display refresh rate to video content' String get matchContentFrameRateDescription => 'Match display refresh rate to video content'; /// en: 'Match Refresh Rate' String get matchRefreshRate => 'Match Refresh Rate'; /// en: 'Match display refresh rate in fullscreen' String get matchRefreshRateDescription => 'Match display refresh rate in fullscreen'; /// en: 'Match Dynamic Range' String get matchDynamicRange => 'Match Dynamic Range'; /// en: 'Switch HDR on for HDR content, then back to SDR' String get matchDynamicRangeDescription => 'Switch HDR on for HDR content, then back to SDR'; /// en: 'Display Switch Delay' String get displaySwitchDelay => 'Display Switch Delay'; /// en: 'Tunneled Playback' String get tunneledPlayback => 'Tunneled Playback'; /// en: 'Use video tunneling. Disable if HDR playback shows black video.' String get tunneledPlaybackDescription => 'Use video tunneling. Disable if HDR playback shows black video.'; /// en: 'Audio Passthrough' String get audioPassthrough => 'Audio Passthrough'; /// en: 'Send Dolby/DTS audio to your receiver or TV without re-encoding, preserving surround sound. Turn off if you have no sound.' String get audioPassthroughDescription => 'Send Dolby/DTS audio to your receiver or TV without re-encoding, preserving surround sound. Turn off if you have no sound.'; /// en: 'Use Apple's native Dolby decoder for Dolby Digital Plus, including Atmos. DTS and TrueHD still play as multichannel PCM. Turn off if you have no sound.' String get audioPassthroughDescriptionAppleTv => 'Use Apple\'s native Dolby decoder for Dolby Digital Plus, including Atmos. DTS and TrueHD still play as multichannel PCM. Turn off if you have no sound.'; /// en: 'Downmix to Stereo' String get audioDownmix => 'Downmix to Stereo'; /// en: 'Mix surround audio down to two channels for stereo speakers or headphones' String get audioDownmixDescription => 'Mix surround audio down to two channels for stereo speakers or headphones'; /// en: 'Center Channel Boost' String get downmixCenterBoost => 'Center Channel Boost'; /// en: '${db} dB' String downmixCenterBoostValue({required Object db}) => '${db} dB'; /// en: 'Boost (dB)' String get downmixCenterBoostLabel => 'Boost (dB)'; /// en: 'dB' String get downmixCenterBoostShort => 'dB'; /// en: 'Normalize Volume on Downmix' String get audioDownmixNormalize => 'Normalize Volume on Downmix'; /// en: 'Lower the mix to prevent clipping. Turn off to keep the original volume (may distort loud scenes).' String get audioDownmixNormalizeDescription => 'Lower the mix to prevent clipping. Turn off to keep the original volume (may distort loud scenes).'; /// en: 'Atmos Output Test' String get atmosDiagnostics => 'Atmos Output Test'; /// en: 'Diagnose Dolby Atmos output by playing test signals through the system player' String get atmosDiagnosticsDescription => 'Diagnose Dolby Atmos output by playing test signals through the system player'; /// en: 'Apple Atmos stream' String get atmosTestHlsAtmos => 'Apple Atmos stream'; /// en: 'Known-good Dolby Atmos stream. The receiver should show Dolby Atmos.' String get atmosTestHlsAtmosDescription => 'Known-good Dolby Atmos stream. The receiver should show Dolby Atmos.'; /// en: 'Apple surround stream' String get atmosTestHlsControl => 'Apple surround stream'; /// en: 'Non-Atmos control stream. The receiver should show surround without Atmos.' String get atmosTestHlsControlDescription => 'Non-Atmos control stream. The receiver should show surround without Atmos.'; /// en: 'Raw EAC3 stream' String get atmosTestRawStream => 'Raw EAC3 stream'; /// en: 'Streams the test file exactly like in-player Atmos playback. Needs the test file URL.' String get atmosTestRawStreamDescription => 'Streams the test file exactly like in-player Atmos playback. Needs the test file URL.'; /// en: 'Raw EAC3 file' String get atmosTestRawFile => 'Raw EAC3 file'; /// en: 'Plays the test file with a known length. Needs the test file URL.' String get atmosTestRawFileDescription => 'Plays the test file with a known length. Needs the test file URL.'; /// en: 'Sample-buffer renderer (native)' String get atmosTestAsbarNative => 'Sample-buffer renderer (native)'; /// en: 'Feeds the file's untouched compressed audio straight to the system renderer. Needs the test file URL.' String get atmosTestAsbarNativeDescription => 'Feeds the file\'s untouched compressed audio straight to the system renderer. Needs the test file URL.'; /// en: 'Sample-buffer renderer (rebuilt)' String get atmosTestAsbarGenerated => 'Sample-buffer renderer (rebuilt)'; /// en: 'Same, but with the audio description rebuilt the way playback builds it. Needs the test file URL.' String get atmosTestAsbarGeneratedDescription => 'Same, but with the audio description rebuilt the way playback builds it. Needs the test file URL.'; /// en: 'Use movie playback session mode' String get atmosTestSessionMode => 'Use movie playback session mode'; /// en: 'Off uses the mode Dolby documents. On uses the mode playback used previously.' String get atmosTestSessionModeDescription => 'Off uses the mode Dolby documents. On uses the mode playback used previously.'; /// en: 'Choose AirPlay output' String get atmosTestShowRoutePicker => 'Choose AirPlay output'; /// en: 'Hide AirPlay output picker' String get atmosTestHideRoutePicker => 'Hide AirPlay output picker'; /// en: 'Send the test to an AirPlay receiver. Only AirPlay reports the resolved audio mode.' String get atmosTestRoutePickerDescription => 'Send the test to an AirPlay receiver. Only AirPlay reports the resolved audio mode.'; /// en: 'Stop test' String get atmosTestStop => 'Stop test'; /// en: 'Test file URL' String get atmosTestUrl => 'Test file URL'; /// en: 'HTTP URL of a raw .ec3 Dolby Atmos file (e.g. extracted with ffmpeg)' String get atmosTestUrlDescription => 'HTTP URL of a raw .ec3 Dolby Atmos file (e.g. extracted with ffmpeg)'; /// en: 'Set the test file URL first' String get atmosTestUrlMissing => 'Set the test file URL first'; /// en: 'Status' String get atmosTestStatus => 'Status'; /// en: 'Dolby Vision Conversion' String get dvConversionMode => 'Dolby Vision Conversion'; /// en: 'Choose how ExoPlayer handles Dolby Vision Profile 7 files.' String get dvConversionModeDescription => 'Choose how ExoPlayer handles Dolby Vision Profile 7 files.'; /// en: 'Auto' String get dvConversionAuto => 'Auto'; /// en: 'Native / Disabled' String get dvConversionNative => 'Native / Disabled'; /// en: 'P7 → P8.1' String get dvConversionDv81 => 'P7 → P8.1'; /// en: 'P7 → HEVC' String get dvConversionHevcStrip => 'P7 → HEVC'; /// en: 'Use device capability detection and normal fallback behavior' String get dvConversionAutoDescription => 'Use device capability detection and normal fallback behavior'; /// en: 'Force native DV7 and suppress DV conversion retry' String get dvConversionNativeDescription => 'Force native DV7 and suppress DV conversion retry'; /// en: 'Force inline RPU conversion to Dolby Vision profile 8.1' String get dvConversionDv81Description => 'Force inline RPU conversion to Dolby Vision profile 8.1'; /// en: 'Strip Dolby Vision RPU/EL layers and present plain HEVC' String get dvConversionHevcStripDescription => 'Strip Dolby Vision RPU/EL layers and present plain HEVC'; /// en: 'Ask for profile on app open' String get requireProfileSelectionOnOpen => 'Ask for profile on app open'; /// en: 'Show profile selection every time the app is opened' String get requireProfileSelectionOnOpenDescription => 'Show profile selection every time the app is opened'; /// en: 'Force TV mode' String get forceTvMode => 'Force TV mode'; /// en: 'Force TV layout. For devices that don't auto-detect. Requires restart.' String get forceTvModeDescription => 'Force TV layout. For devices that don\'t auto-detect. Requires restart.'; /// en: 'Start in fullscreen' String get startInFullscreen => 'Start in fullscreen'; /// en: 'Open Plezy in fullscreen mode at launch' String get startInFullscreenDescription => 'Open Plezy in fullscreen mode at launch'; /// en: 'Exit fullscreen on player close' String get exitFullscreenOnPlayerClose => 'Exit fullscreen on player close'; /// en: 'Automatically exit fullscreen when closing the video player' String get exitFullscreenOnPlayerCloseDescription => 'Automatically exit fullscreen when closing the video player'; /// en: 'Auto-Hide Performance Overlay' String get autoHidePerformanceOverlay => 'Auto-Hide Performance Overlay'; /// en: 'Fade the performance overlay with the playback controls' String get autoHidePerformanceOverlayDescription => 'Fade the performance overlay with the playback controls'; /// en: 'Show Navigation Bar Labels' String get showNavBarLabels => 'Show Navigation Bar Labels'; /// en: 'Display text labels under navigation bar icons' String get showNavBarLabelsDescription => 'Display text labels under navigation bar icons'; /// en: 'Startup Section' String get startupSection => 'Startup Section'; /// en: 'Default to Favorite Channels' String get liveTvDefaultFavorites => 'Default to Favorite Channels'; /// en: 'Show only favorite channels when opening Live TV' String get liveTvDefaultFavoritesDescription => 'Show only favorite channels when opening Live TV'; /// en: 'Display' String get display => 'Display'; /// en: 'Home Screen' String get homeScreen => 'Home Screen'; /// en: 'Navigation' String get navigation => 'Navigation'; /// en: 'Window' String get window => 'Window'; /// en: 'Content' String get content => 'Content'; /// en: 'Player' String get player => 'Player'; /// en: 'Subtitles & Configuration' String get subtitlesAndConfig => 'Subtitles & Configuration'; /// en: 'Seek & Timing' String get seekAndTiming => 'Seek & Timing'; /// en: 'Behavior' String get behavior => 'Behavior'; } // Path: search class Translations$search$en { Translations$search$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Search movies, shows, music...' String get hint => 'Search movies, shows, music...'; /// en: 'Try a different search term' String get tryDifferentTerm => 'Try a different search term'; /// en: 'Search your media' String get searchYourMedia => 'Search your media'; /// en: 'Enter a title, actor, or keyword' String get enterTitleActorOrKeyword => 'Enter a title, actor, or keyword'; } // Path: hotkeys class Translations$hotkeys$en { Translations$hotkeys$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Set Shortcut for ${actionName}' String setShortcutFor({required Object actionName}) => 'Set Shortcut for ${actionName}'; /// en: 'Clear shortcut' String get clearShortcut => 'Clear shortcut'; /// en: 'No shortcut set' String get noShortcutSet => 'No shortcut set'; /// en: 'Current shortcut:' String get currentShortcut => 'Current shortcut:'; /// en: 'Select to record a shortcut' String get pressToRecord => 'Select to record a shortcut'; /// en: 'Press the shortcut now' String get recordingShortcut => 'Press the shortcut now'; late final Translations$hotkeys$actions$en actions = Translations$hotkeys$actions$en.internal(_root); } // Path: fileInfo class Translations$fileInfo$en { Translations$fileInfo$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'File Info' String get title => 'File Info'; /// en: 'Overview' String get overview => 'Overview'; /// en: 'Video' String get video => 'Video'; /// en: 'Audio' String get audio => 'Audio'; /// en: 'Subtitles' String get subtitles => 'Subtitles'; /// en: 'Embedded Images' String get images => 'Embedded Images'; /// en: 'Data Streams' String get dataStreams => 'Data Streams'; /// en: 'Lyrics' String get lyrics => 'Lyrics'; /// en: 'File' String get file => 'File'; /// en: 'Attachments' String get attachments => 'Attachments'; /// en: 'Delivery' String get delivery => 'Delivery'; /// en: 'Version ${index} of ${count}' String versionCounter({required Object index, required Object count}) => 'Version ${index} of ${count}'; /// en: 'File ${index} of ${count}' String fileCounter({required Object index, required Object count}) => 'File ${index} of ${count}'; /// en: 'The server reported no streams for this file.' String get noStreams => 'The server reported no streams for this file.'; /// en: 'Copy path' String get copyPath => 'Copy path'; /// en: 'File path copied' String get pathCopied => 'File path copied'; /// en: 'Codec' String get codec => 'Codec'; /// en: 'Codec Tag' String get codecTag => 'Codec Tag'; /// en: 'Resolution' String get resolution => 'Resolution'; /// en: 'Coded Resolution' String get codedResolution => 'Coded Resolution'; /// en: 'Bitrate' String get bitrate => 'Bitrate'; /// en: 'Frame Rate' String get frameRate => 'Frame Rate'; /// en: 'Rotation' String get rotation => 'Rotation'; /// en: 'Comment' String get comment => 'Comment'; /// en: 'Audio Description' String get audioDescription => 'Audio Description'; /// en: 'Header Compression' String get headerCompression => 'Header Compression'; /// en: 'Sidecar File' String get sidecarFile => 'Sidecar File'; /// en: 'Transport Timestamp' String get transportTimestamp => 'Transport Timestamp'; /// en: 'Display Offset' String get displayOffset => 'Display Offset'; /// en: 'Preview Failure Code' String get previewFailureCode => 'Preview Failure Code'; /// en: 'Preview Retries' String get previewRetries => 'Preview Retries'; /// en: 'Aspect Ratio' String get aspectRatio => 'Aspect Ratio'; /// en: 'Pixel Aspect Ratio' String get pixelAspectRatio => 'Pixel Aspect Ratio'; /// en: 'Profile' String get profile => 'Profile'; /// en: 'Level' String get level => 'Level'; /// en: 'Bit Depth' String get bitDepth => 'Bit Depth'; /// en: 'Pixel Format' String get pixelFormat => 'Pixel Format'; /// en: 'Color Space' String get colorSpace => 'Color Space'; /// en: 'Color Range' String get colorRange => 'Color Range'; /// en: 'Color Primaries' String get colorPrimaries => 'Color Primaries'; /// en: 'Color Transfer' String get colorTransfer => 'Color Transfer'; /// en: 'Chroma Subsampling' String get chromaSubsampling => 'Chroma Subsampling'; /// en: 'Chroma Location' String get chromaLocation => 'Chroma Location'; /// en: 'Scan Type' String get scanType => 'Scan Type'; /// en: 'Interlaced' String get interlaced => 'Interlaced'; /// en: 'Anamorphic' String get anamorphic => 'Anamorphic'; /// en: 'Reference Frames' String get referenceFrames => 'Reference Frames'; /// en: 'Dynamic Range' String get dynamicRange => 'Dynamic Range'; /// en: 'Dolby Vision' String get dolbyVision => 'Dolby Vision'; /// en: 'Dolby Vision Level' String get dolbyVisionLevel => 'Dolby Vision Level'; /// en: 'Dolby Vision Version' String get dolbyVisionVersion => 'Dolby Vision Version'; /// en: 'Dolby Vision Layers' String get dolbyVisionLayers => 'Dolby Vision Layers'; /// en: 'Base Layer Compatibility' String get baseLayerCompatibility => 'Base Layer Compatibility'; /// en: 'AVC Bitstream' String get avcBitstream => 'AVC Bitstream'; /// en: 'NAL Length Size' String get nalLengthSize => 'NAL Length Size'; /// en: 'Custom Scaling Matrix' String get scalingMatrix => 'Custom Scaling Matrix'; /// en: 'Stream Identifier' String get streamIdentifier => 'Stream Identifier'; /// en: 'Stream Index' String get streamIndex => 'Stream Index'; /// en: 'Stream ID' String get streamId => 'Stream ID'; /// en: 'Language' String get language => 'Language'; /// en: 'Language Code' String get languageCode => 'Language Code'; /// en: 'Track Title' String get streamTitle => 'Track Title'; /// en: 'Channels' String get channels => 'Channels'; /// en: 'Sample Rate' String get sampleRate => 'Sample Rate'; /// en: 'Spatial Audio' String get spatialAudio => 'Spatial Audio'; /// en: 'Text Based' String get textBased => 'Text Based'; /// en: 'Sidecar Format' String get subtitleFormat => 'Sidecar Format'; /// en: 'Provider' String get provider => 'Provider'; /// en: 'Match Score' String get matchScore => 'Match Score'; /// en: 'Can Be Served Separately' String get externalDelivery => 'Can Be Served Separately'; /// en: 'Sidecar Path' String get sidecarPath => 'Sidecar Path'; /// en: 'Copied From' String get sourceStream => 'Copied From'; /// en: 'Temporary' String get temporary => 'Temporary'; /// en: 'Time Base' String get timeBase => 'Time Base'; /// en: 'Overall Bitrate' String get overallBitrate => 'Overall Bitrate'; /// en: 'Path' String get path => 'Path'; /// en: 'File Name' String get fileName => 'File Name'; /// en: 'Size' String get size => 'Size'; /// en: 'Total Size' String get totalSize => 'Total Size'; /// en: 'Container' String get container => 'Container'; /// en: 'Duration' String get duration => 'Duration'; /// en: 'Preview Thumbnails' String get previewThumbnails => 'Preview Thumbnails'; /// en: 'Preview Index' String get previewIndex => 'Preview Index'; /// en: 'Packet Length' String get packetLength => 'Packet Length'; /// en: 'File Present' String get filePresent => 'File Present'; /// en: 'Readable by Server' String get fileReadable => 'Readable by Server'; /// en: 'Stream Path' String get streamPath => 'Stream Path'; /// en: 'Optimized for Streaming' String get optimizedForStreaming => 'Optimized for Streaming'; /// en: '64-bit Offsets' String get has64bitOffsets => '64-bit Offsets'; /// en: 'Protocol' String get protocol => 'Protocol'; /// en: 'Media Type' String get mediaType => 'Media Type'; /// en: 'Source Kind' String get sourceKind => 'Source Kind'; /// en: 'Optimized Version' String get optimizedVersion => 'Optimized Version'; /// en: 'Optimization Target' String get optimizationTarget => 'Optimization Target'; /// en: 'Deleted' String get deletedAt => 'Deleted'; /// en: 'Remote Source' String get remoteSource => 'Remote Source'; /// en: 'Infinite Stream' String get infiniteStream => 'Infinite Stream'; /// en: 'Direct Play' String get directPlay => 'Direct Play'; /// en: 'Direct Stream' String get directStream => 'Direct Stream'; /// en: 'Transcoding' String get transcoding => 'Transcoding'; /// en: 'ETag' String get etag => 'ETag'; /// en: 'Version ID' String get versionId => 'Version ID'; /// en: 'File ID' String get fileId => 'File ID'; /// en: 'Default Audio Track' String get defaultAudioTrack => 'Default Audio Track'; /// en: 'Default Subtitle Track' String get defaultSubtitleTrack => 'Default Subtitle Track'; /// en: 'Off' String get subtitlesOff => 'Off'; /// en: 'Default' String get flagDefault => 'Default'; /// en: 'Forced' String get flagForced => 'Forced'; /// en: 'Selected' String get flagSelected => 'Selected'; /// en: 'External' String get flagExternal => 'External'; /// en: 'Hearing impaired' String get flagHearingImpaired => 'Hearing impaired'; /// en: 'Dub' String get flagDub => 'Dub'; /// en: 'Original' String get flagOriginal => 'Original'; } // Path: mediaMenu class Translations$mediaMenu$en { Translations$mediaMenu$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Mark as Watched' String get markAsWatched => 'Mark as Watched'; /// en: 'Mark as Unwatched' String get markAsUnwatched => 'Mark as Unwatched'; /// en: 'Remove from Continue Watching' String get removeFromContinueWatching => 'Remove from Continue Watching'; /// en: 'View details' String get viewDetails => 'View details'; /// en: 'Go to series' String get goToSeries => 'Go to series'; /// en: 'Shuffle Play' String get shufflePlay => 'Shuffle Play'; /// en: 'Shuffle not available offline' String get shuffleNotAvailableOffline => 'Shuffle not available offline'; /// en: 'File Info' String get fileInfo => 'File Info'; /// en: 'Delete from server' String get deleteFromServer => 'Delete from server'; /// en: 'Delete this media and its files from your server?' String get confirmDelete => 'Delete this media and its files from your server?'; /// en: 'This includes all episodes and their files.' String get deleteMultipleWarning => 'This includes all episodes and their files.'; /// en: 'Media item deleted successfully' String get mediaDeletedSuccessfully => 'Media item deleted successfully'; /// en: 'Failed to delete media item' String get mediaFailedToDelete => 'Failed to delete media item'; /// en: 'Rate' String get rate => 'Rate'; /// en: 'Play from Beginning' String get playFromBeginning => 'Play from Beginning'; /// en: 'Play Version...' String get playVersion => 'Play Version...'; } // Path: rateSheet class Translations$rateSheet$en { Translations$rateSheet$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Rate' String get title => 'Rate'; /// en: 'Server' String get server => 'Server'; /// en: 'Favorite' String get favorite => 'Favorite'; /// en: 'Favorited' String get favorited => 'Favorited'; /// en: 'Saved' String get saved => 'Saved'; /// en: 'No match found' String get notAvailable => 'No match found'; /// en: 'Connect a service in Settings to rate there.' String get noConnectedServices => 'Connect a service in Settings to rate there.'; } // Path: accessibility class Translations$accessibility$en { Translations$accessibility$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: '${title}, movie' String mediaCardMovie({required Object title}) => '${title}, movie'; /// en: '${title}, TV show' String mediaCardShow({required Object title}) => '${title}, TV show'; /// en: '${title}, ${episodeInfo}' String mediaCardEpisode({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}'; /// en: '${title}, ${seasonInfo}' String mediaCardSeason({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}'; /// en: 'watched' String get mediaCardWatched => 'watched'; /// en: '${percent} percent watched' String mediaCardPartiallyWatched({required Object percent}) => '${percent} percent watched'; /// en: 'unwatched' String get mediaCardUnwatched => 'unwatched'; /// en: 'Tap to play' String get tapToPlay => 'Tap to play'; /// en: 'Decrease' String get decrease => 'Decrease'; /// en: 'Increase' String get increase => 'Increase'; /// en: 'Decrease ${label}' String decreaseValue({required Object label}) => 'Decrease ${label}'; /// en: 'Increase ${label}' String increaseValue({required Object label}) => 'Increase ${label}'; /// en: 'Hue' String get hue => 'Hue'; /// en: 'Saturation' String get saturation => 'Saturation'; /// en: 'Brightness' String get brightness => 'Brightness'; /// en: 'Hex color' String get hexColor => 'Hex color'; /// en: 'Expand text' String get expandText => 'Expand text'; /// en: 'Collapse text' String get collapseText => 'Collapse text'; /// en: 'Alphabet navigation' String get alphabetNavigation => 'Alphabet navigation'; /// en: 'Swipe up or down to move by letter' String get alphabetScrollHint => 'Swipe up or down to move by letter'; /// en: 'Row ${row} of ${rowCount}, column ${column} of ${columnCount}' String rowColumnPosition({required Object row, required Object rowCount, required Object column, required Object columnCount}) => 'Row ${row} of ${rowCount}, column ${column} of ${columnCount}'; /// en: 'Row ${row} of ${rowCount}' String rowPosition({required Object row, required Object rowCount}) => 'Row ${row} of ${rowCount}'; } // Path: tooltips class Translations$tooltips$en { Translations$tooltips$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Shuffle play' String get shufflePlay => 'Shuffle play'; /// en: 'Play trailer' String get playTrailer => 'Play trailer'; /// en: 'Mark as watched' String get markAsWatched => 'Mark as watched'; /// en: 'Mark as unwatched' String get markAsUnwatched => 'Mark as unwatched'; } // Path: audioTracks class Translations$audioTracks$en { Translations$audioTracks$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Audio Track ${n}' String track({required Object n}) => 'Audio Track ${n}'; } // Path: videoControls class Translations$videoControls$en { Translations$videoControls$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Audio' String get audioLabel => 'Audio'; /// en: 'Subtitles' String get subtitlesLabel => 'Subtitles'; /// en: 'Reset to 0ms' String get resetToZero => 'Reset to 0ms'; /// en: '+${amount}${unit}' String addTime({required Object amount, required Object unit}) => '+${amount}${unit}'; /// en: '-${amount}${unit}' String minusTime({required Object amount, required Object unit}) => '-${amount}${unit}'; /// en: '${label} plays later' String playsLater({required Object label}) => '${label} plays later'; /// en: '${label} plays earlier' String playsEarlier({required Object label}) => '${label} plays earlier'; /// en: 'No offset' String get noOffset => 'No offset'; /// en: 'Letterbox' String get letterbox => 'Letterbox'; /// en: 'Fill screen' String get fillScreen => 'Fill screen'; /// en: 'Stretch' String get stretch => 'Stretch'; /// en: 'Lock rotation' String get lockRotation => 'Lock rotation'; /// en: 'Unlock rotation' String get unlockRotation => 'Unlock rotation'; /// en: 'Timer Active' String get timerActive => 'Timer Active'; /// en: 'Playback will pause in ${duration}' String playbackWillPauseIn({required Object duration}) => 'Playback will pause in ${duration}'; /// en: 'End of current video' String get sleepTimerEndOfVideo => 'End of current video'; /// en: 'Stop at' String get sleepTimerStopAtHeader => 'Stop at'; /// en: 'Timer' String get sleepTimerDurationHeader => 'Timer'; /// en: 'Playback will pause at the end of this video' String get playbackWillPauseAtEnd => 'Playback will pause at the end of this video'; /// en: 'Still watching?' String get stillWatching => 'Still watching?'; /// en: 'Pausing in ${seconds}s' String pausingIn({required Object seconds}) => 'Pausing in ${seconds}s'; /// en: 'Continue' String get continueWatching => 'Continue'; /// en: 'Auto-Play Next' String get autoPlayNext => 'Auto-Play Next'; /// en: 'Play Next' String get playNext => 'Play Next'; /// en: 'Play' String get playButton => 'Play'; /// en: 'Pause' String get pauseButton => 'Pause'; /// en: 'Paused' String get playbackPaused => 'Paused'; /// en: 'Playing' String get playbackResumed => 'Playing'; /// en: 'Show playback controls' String get showPlaybackControls => 'Show playback controls'; /// en: 'Hide playback controls' String get hidePlaybackControls => 'Hide playback controls'; /// en: 'Seek backward ${seconds} seconds' String seekBackwardButton({required Object seconds}) => 'Seek backward ${seconds} seconds'; /// en: 'Seek forward ${seconds} seconds' String seekForwardButton({required Object seconds}) => 'Seek forward ${seconds} seconds'; /// en: 'Previous episode' String get previousButton => 'Previous episode'; /// en: 'Next episode' String get nextButton => 'Next episode'; /// en: 'Previous chapter' String get previousChapterButton => 'Previous chapter'; /// en: 'Next chapter' String get nextChapterButton => 'Next chapter'; /// en: 'Mute' String get muteButton => 'Mute'; /// en: 'Unmute' String get unmuteButton => 'Unmute'; /// en: 'Playback Settings' String get settingsButton => 'Playback Settings'; /// en: 'Audio & Subtitles' String get tracksButton => 'Audio & Subtitles'; /// en: 'Chapters' String get chaptersButton => 'Chapters'; /// en: 'Version & Quality' String get versionQualityButton => 'Version & Quality'; /// en: 'Version' String get versionColumnHeader => 'Version'; /// en: 'Quality' String get qualityColumnHeader => 'Quality'; /// en: 'Original' String get qualityOriginal => 'Original'; /// en: '${resolution}p ${bitrate} Mbps' String qualityPresetLabel({required Object resolution, required Object bitrate}) => '${resolution}p ${bitrate} Mbps'; /// en: 'Transcoding unavailable — playing original quality' String get transcodeUnavailableFallback => 'Transcoding unavailable — playing original quality'; /// en: 'Selected subtitles could not be loaded — continuing without subtitles' String get subtitleUnavailableFallback => 'Selected subtitles could not be loaded — continuing without subtitles'; /// en: 'Picture-in-Picture mode' String get pipButton => 'Picture-in-Picture mode'; /// en: 'Aspect ratio' String get aspectRatioButton => 'Aspect ratio'; /// en: 'Ambient lighting' String get ambientLighting => 'Ambient lighting'; /// en: 'Enter fullscreen' String get fullscreenButton => 'Enter fullscreen'; /// en: 'Exit fullscreen' String get exitFullscreenButton => 'Exit fullscreen'; /// en: 'Always on top' String get alwaysOnTopButton => 'Always on top'; /// en: 'Rotation lock' String get rotationLockButton => 'Rotation lock'; /// en: 'Lock screen' String get lockScreen => 'Lock screen'; /// en: 'Screen lock' String get screenLockButton => 'Screen lock'; /// en: 'Long press to unlock' String get longPressToUnlock => 'Long press to unlock'; /// en: 'Video timeline' String get timelineSlider => 'Video timeline'; /// en: 'Volume level' String get volumeSlider => 'Volume level'; /// en: 'Ends at ${time}' String endsAt({required Object time}) => 'Ends at ${time}'; /// en: 'Playing in Picture-in-Picture' String get pipActive => 'Playing in Picture-in-Picture'; /// en: 'Picture-in-picture failed to start' String get pipFailed => 'Picture-in-picture failed to start'; /// en: 'Screenshot saved' String get screenshotSaved => 'Screenshot saved'; /// en: 'Zoom ${percent}%' String zoomPercent({required Object percent}) => 'Zoom ${percent}%'; late final Translations$videoControls$pipErrors$en pipErrors = Translations$videoControls$pipErrors$en.internal(_root); /// en: 'Chapters' String get chapters => 'Chapters'; /// en: 'No chapters available' String get noChaptersAvailable => 'No chapters available'; /// en: 'Queue' String get queue => 'Queue'; /// en: 'No items in queue' String get noQueueItems => 'No items in queue'; /// en: 'Search Subtitles' String get searchSubtitles => 'Search Subtitles'; /// en: 'Language' String get language => 'Language'; /// en: 'No subtitles found' String get noSubtitlesFound => 'No subtitles found'; /// en: 'Subtitle downloaded' String get subtitleDownloaded => 'Subtitle downloaded'; /// en: 'Subtitle downloaded, but it could not be selected' String get subtitleDownloadedNotApplied => 'Subtitle downloaded, but it could not be selected'; /// en: 'Failed to download subtitle' String get subtitleDownloadFailed => 'Failed to download subtitle'; /// en: 'Search languages...' String get searchLanguages => 'Search languages...'; } // Path: messages class Translations$messages$en { Translations$messages$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Marked as watched' String get markedAsWatched => 'Marked as watched'; /// en: 'Marked as unwatched' String get markedAsUnwatched => 'Marked as unwatched'; /// en: 'Marked as watched (will sync when online)' String get markedAsWatchedOffline => 'Marked as watched (will sync when online)'; /// en: 'Marked as unwatched (will sync when online)' String get markedAsUnwatchedOffline => 'Marked as unwatched (will sync when online)'; /// en: 'Auto-removed: ${title}' String autoRemovedWatchedDownload({required Object title}) => 'Auto-removed: ${title}'; /// en: '(one) {Auto-removed ${n} watched download} (other) {Auto-removed ${n} watched downloads}' String autoRemovedWatchedDownloads({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: 'Auto-removed ${n} watched download', other: 'Auto-removed ${n} watched downloads', ); /// en: 'Removed from Continue Watching' String get removedFromContinueWatching => 'Removed from Continue Watching'; /// en: 'Error: ${error}' String errorLoading({required Object error}) => 'Error: ${error}'; /// en: 'Some media servers could not be searched. Showing available results.' String get searchPartialResults => 'Some media servers could not be searched. Showing available results.'; /// en: 'The stream was interrupted. Press play or seek to retry.' String get streamInterrupted => 'The stream was interrupted. Press play or seek to retry.'; /// en: 'The live stream was interrupted. Press play to retry.' String get liveStreamInterrupted => 'The live stream was interrupted. Press play to retry.'; /// en: 'File information not available' String get fileInfoNotAvailable => 'File information not available'; /// en: 'Sign in to the media server again to play this item.' String get playbackAuthenticationRequired => 'Sign in to the media server again to play this item.'; /// en: 'The media server is unavailable. Try again later.' String get playbackServerUnavailable => 'The media server is unavailable. Try again later.'; /// en: 'The server returned invalid playback information.' String get playbackDataInvalid => 'The server returned invalid playback information.'; /// en: 'Playback was canceled.' String get playbackCancelled => 'Playback was canceled.'; /// en: 'Playback could not be started.' String get playbackFailed => 'Playback could not be started.'; /// en: 'Error loading file info: ${error}' String errorLoadingFileInfo({required Object error}) => 'Error loading file info: ${error}'; /// en: 'Error loading series' String get errorLoadingSeries => 'Error loading series'; /// en: 'Music playback is not yet supported' String get musicNotSupported => 'Music playback is not yet supported'; /// en: 'No description available' String get noDescriptionAvailable => 'No description available'; /// en: 'No profiles available' String get noProfilesAvailable => 'No profiles available'; /// en: 'Contact your server administrator to add profiles' String get contactAdminForProfiles => 'Contact your server administrator to add profiles'; /// en: 'Unable to determine library section for this item' String get unableToDetermineLibrarySection => 'Unable to determine library section for this item'; /// en: 'Logs cleared' String get logsCleared => 'Logs cleared'; /// en: 'Logs copied to clipboard' String get logsCopied => 'Logs copied to clipboard'; /// en: 'No logs available' String get noLogsAvailable => 'No logs available'; /// en: 'Scanning "${title}"...' String libraryScanning({required Object title}) => 'Scanning "${title}"...'; /// en: 'Library scan started for "${title}"' String libraryScanStarted({required Object title}) => 'Library scan started for "${title}"'; /// en: 'Failed to scan library: ${error}' String libraryScanFailed({required Object error}) => 'Failed to scan library: ${error}'; /// en: 'Refreshing metadata for "${title}"...' String metadataRefreshing({required Object title}) => 'Refreshing metadata for "${title}"...'; /// en: 'Metadata refresh started for "${title}"' String metadataRefreshStarted({required Object title}) => 'Metadata refresh started for "${title}"'; /// en: 'Failed to refresh metadata: ${error}' String metadataRefreshFailed({required Object error}) => 'Failed to refresh metadata: ${error}'; /// en: 'Are you sure you want to log out?' String get logoutConfirm => 'Are you sure you want to log out?'; /// en: 'No seasons found' String get noSeasonsFound => 'No seasons found'; /// en: 'Couldn't load seasons' String get seasonsLoadFailed => 'Couldn\'t load seasons'; /// en: 'No episodes found in first season' String get noEpisodesFound => 'No episodes found in first season'; /// en: 'No episodes found' String get noEpisodesFoundGeneral => 'No episodes found'; /// en: 'Couldn't load episodes' String get episodesLoadFailed => 'Couldn\'t load episodes'; /// en: 'No results found' String get noResultsFound => 'No results found'; /// en: 'Sleep timer set for ${label}' String sleepTimerSet({required Object label}) => 'Sleep timer set for ${label}'; /// en: 'No items available' String get noItemsAvailable => 'No items available'; /// en: 'Failed to create a play queue — no items' String get failedToCreatePlayQueueNoItems => 'Failed to create a play queue — no items'; /// en: 'Failed to ${action}: ${error}' String failedPlayback({required Object action, required Object error}) => 'Failed to ${action}: ${error}'; /// en: 'Switching to compatible player...' String get switchingToCompatiblePlayer => 'Switching to compatible player...'; /// en: 'Playback failed' String get serverLimitTitle => 'Playback failed'; /// en: 'Server error (HTTP 500). A bandwidth/transcoding limit likely rejected this session. Ask the owner to adjust it.' String get serverLimitBody => 'Server error (HTTP 500). A bandwidth/transcoding limit likely rejected this session. Ask the owner to adjust it.'; /// en: 'Logs uploaded' String get logsUploaded => 'Logs uploaded'; /// en: 'Failed to upload logs' String get logsUploadFailed => 'Failed to upload logs'; /// en: 'Log ID' String get logId => 'Log ID'; } // Path: subtitlingStyling class Translations$subtitlingStyling$en { Translations$subtitlingStyling$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Text' String get text => 'Text'; /// en: 'Border' String get border => 'Border'; /// en: 'Background' String get background => 'Background'; /// en: 'Font Size' String get fontSize => 'Font Size'; /// en: 'Text Color' String get textColor => 'Text Color'; /// en: 'Border Size' String get borderSize => 'Border Size'; /// en: 'Border Color' String get borderColor => 'Border Color'; /// en: 'Background Opacity' String get backgroundOpacity => 'Background Opacity'; /// en: 'Background Color' String get backgroundColor => 'Background Color'; /// en: 'Position' String get position => 'Position'; /// en: 'ASS Override' String get assOverride => 'ASS Override'; /// en: 'Scale' String get overrideScale => 'Scale'; /// en: 'Force' String get overrideForce => 'Force'; /// en: 'Remove styling' String get overrideStrip => 'Remove styling'; /// en: 'Top' String get positionTop => 'Top'; /// en: 'Bottom' String get positionBottom => 'Bottom'; /// en: 'Bold' String get bold => 'Bold'; /// en: 'Italic' String get italic => 'Italic'; /// en: 'Render Resolution' String get renderResolution => 'Render Resolution'; /// en: 'Screen resolution' String get renderResolutionScreen => 'Screen resolution'; /// en: 'Video resolution' String get renderResolutionVideo => 'Video resolution'; } // Path: mpvConfig class Translations$mpvConfig$en { Translations$mpvConfig$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'mpv.conf' String get title => 'mpv.conf'; /// en: 'Advanced video player settings' String get description => 'Advanced video player settings'; /// en: 'Presets' String get presets => 'Presets'; /// en: 'No saved presets' String get noPresets => 'No saved presets'; /// en: 'Save as Preset...' String get saveAsPreset => 'Save as Preset...'; /// en: 'Preset Name' String get presetName => 'Preset Name'; /// en: 'Enter a name for this preset' String get presetNameHint => 'Enter a name for this preset'; /// en: 'Load' String get loadPreset => 'Load'; /// en: 'Delete' String get deletePreset => 'Delete'; /// en: 'Preset saved' String get presetSaved => 'Preset saved'; /// en: 'Preset loaded' String get presetLoaded => 'Preset loaded'; /// en: 'Preset deleted' String get presetDeleted => 'Preset deleted'; /// en: 'Are you sure you want to delete this preset?' String get confirmDeletePreset => 'Are you sure you want to delete this preset?'; /// en: 'gpu-api=vulkan hwdec=auto # comment' String get configPlaceholder => 'gpu-api=vulkan\nhwdec=auto\n# comment'; } // Path: dialog class Translations$dialog$en { Translations$dialog$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Confirm Action' String get confirmAction => 'Confirm Action'; } // Path: profiles class Translations$profiles$en { Translations$profiles$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Add Plezy profile' String get addPlezyProfile => 'Add Plezy profile'; /// en: 'Switching profile…' String get switchingProfile => 'Switching profile…'; /// en: 'Delete this profile?' String get deleteThisProfileTitle => 'Delete this profile?'; /// en: 'Remove ${displayName}. Connections aren't affected.' String deleteThisProfileMessage({required Object displayName}) => 'Remove ${displayName}. Connections aren\'t affected.'; /// en: 'Active' String get active => 'Active'; /// en: 'Manage' String get manage => 'Manage'; /// en: 'Delete' String get delete => 'Delete'; /// en: 'Sign out' String get signOut => 'Sign out'; /// en: 'Sign out of Plex?' String get signOutPlexTitle => 'Sign out of Plex?'; /// en: 'Remove ${displayName} and all Plex Home users? Sign back in anytime.' String signOutPlexMessage({required Object displayName}) => 'Remove ${displayName} and all Plex Home users? Sign back in anytime.'; /// en: 'Signed out of Plex.' String get signedOutPlex => 'Signed out of Plex.'; /// en: 'Sign out failed.' String get signOutFailed => 'Sign out failed.'; /// en: 'Profiles' String get sectionTitle => 'Profiles'; /// en: 'Add profiles to mix managed users and local identities' String get summarySingle => 'Add profiles to mix managed users and local identities'; /// en: '${count} profiles · active: ${activeName}' String summaryMultipleWithActive({required Object count, required Object activeName}) => '${count} profiles · active: ${activeName}'; /// en: '${count} profiles' String summaryMultiple({required Object count}) => '${count} profiles'; /// en: 'Remove connection?' String get removeConnectionTitle => 'Remove connection?'; /// en: 'Remove ${displayName}'s access to ${connectionLabel}. Other profiles keep it.' String removeConnectionMessage({required Object displayName, required Object connectionLabel}) => 'Remove ${displayName}\'s access to ${connectionLabel}. Other profiles keep it.'; /// en: 'Delete profile?' String get deleteProfileTitle => 'Delete profile?'; /// en: 'Remove ${displayName} and its connections. Servers stay available.' String deleteProfileMessage({required Object displayName}) => 'Remove ${displayName} and its connections. Servers stay available.'; /// en: 'Profile name' String get profileNameLabel => 'Profile name'; /// en: 'PIN protection' String get pinProtectionLabel => 'PIN protection'; /// en: 'PIN managed by Plex. Edit on plex.tv.' String get pinManagedByPlex => 'PIN managed by Plex. Edit on plex.tv.'; /// en: 'No PIN set. To require one, edit the home user on plex.tv.' String get noPinSetEditOnPlex => 'No PIN set. To require one, edit the home user on plex.tv.'; /// en: 'Set PIN' String get setPin => 'Set PIN'; /// en: 'Set PIN' String get setPinTitle => 'Set PIN'; /// en: 'Confirm PIN' String get confirmPinTitle => 'Confirm PIN'; /// en: 'PIN set' String get pinSet => 'PIN set'; /// en: 'Change' String get changePin => 'Change'; /// en: 'Remove' String get removePin => 'Remove'; /// en: 'Connections' String get connectionsLabel => 'Connections'; /// en: 'Add' String get add => 'Add'; /// en: 'Delete profile' String get deleteProfileButton => 'Delete profile'; /// en: 'No connections — add one to use this profile.' String get noConnectionsHint => 'No connections — add one to use this profile.'; /// en: 'No connections' String get noConnections => 'No connections'; /// en: 'Plex Home account' String get plexHomeAccount => 'Plex Home account'; /// en: 'Default' String get connectionDefault => 'Default'; /// en: 'as ${displayName}' String connectionAs({required Object displayName}) => 'as ${displayName}'; /// en: 'Make default' String get makeDefault => 'Make default'; /// en: 'Remove' String get removeConnection => 'Remove'; /// en: 'Profile renamed.' String get profileRenamed => 'Profile renamed.'; /// en: 'Add to ${displayName}' String borrowAddTo({required Object displayName}) => 'Add to ${displayName}'; /// en: 'Borrow another profile's connection. PIN-protected profiles require a PIN.' String get borrowExplain => 'Borrow another profile\'s connection. PIN-protected profiles require a PIN.'; /// en: 'Nothing to borrow yet.' String get borrowEmpty => 'Nothing to borrow yet.'; /// en: 'Connect Plex or Jellyfin to another profile first.' String get borrowEmptySubtitle => 'Connect Plex or Jellyfin to another profile first.'; /// en: 'Available connections could not be loaded. Try again.' String get borrowLoadFailed => 'Available connections could not be loaded. Try again.'; /// en: 'From ${displayName}' String borrowFromProfile({required Object displayName}) => 'From ${displayName}'; /// en: 'Connection borrowed.' String get borrowConnectionBorrowed => 'Connection borrowed.'; /// en: 'Failed to borrow connection.' String get borrowFailed => 'Failed to borrow connection.'; /// en: 'Incorrect PIN.' String get incorrectPin => 'Incorrect PIN.'; /// en: 'Incorrect PIN. Please try again.' String get incorrectPinTryAgain => 'Incorrect PIN. Please try again.'; /// en: 'Source profile is missing its parent account.' String get sourceProfileMissingParentAccount => 'Source profile is missing its parent account.'; /// en: 'Could not load your Plex Home users. Check your connection and try again.' String get failedToLoadHomeUsers => 'Could not load your Plex Home users. Check your connection and try again.'; /// en: 'Failed to verify PIN.' String get failedToVerifyPin => 'Failed to verify PIN.'; /// en: 'New profile' String get newProfile => 'New profile'; /// en: 'e.g. Guests, Kids, Family Room' String get profileNameHint => 'e.g. Guests, Kids, Family Room'; /// en: 'PIN protection (optional)' String get pinProtectionOptional => 'PIN protection (optional)'; /// en: '4-digit PIN required to switch profiles.' String get pinExplain => '4-digit PIN required to switch profiles.'; /// en: 'Continue' String get continueButton => 'Continue'; /// en: 'PINs don't match' String get pinsDontMatch => 'PINs don\'t match'; } // Path: connections class Translations$connections$en { Translations$connections$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Connections' String get sectionTitle => 'Connections'; /// en: 'Add connection' String get addConnection => 'Add connection'; /// en: 'Sign in with Plex or connect a Jellyfin server' String get addConnectionSubtitleNoProfile => 'Sign in with Plex or connect a Jellyfin server'; /// en: 'Add to ${displayName}: Plex, Jellyfin, or another profile connection' String addConnectionSubtitleScoped({required Object displayName}) => 'Add to ${displayName}: Plex, Jellyfin, or another profile connection'; /// en: 'Session expired for ${name}' String sessionExpiredOne({required Object name}) => 'Session expired for ${name}'; /// en: 'Session expired for ${count} servers' String sessionExpiredMany({required Object count}) => 'Session expired for ${count} servers'; /// en: 'Sign in again' String get signInAgain => 'Sign in again'; /// en: 'Edit Jellyfin connection' String get editJellyfinTitle => 'Edit Jellyfin connection'; /// en: 'Add or remove URLs for ${serverName}. Plezy will use the reachable URL with the lowest latency.' String editJellyfinIntro({required Object serverName}) => 'Add or remove URLs for ${serverName}. Plezy will use the reachable URL with the lowest latency.'; } // Path: discover class Translations$discover$en { Translations$discover$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Discover' String get title => 'Discover'; /// en: 'No content available' String get noContentAvailable => 'No content available'; /// en: 'Add some media to your libraries' String get addMediaToLibraries => 'Add some media to your libraries'; /// en: 'Continue Watching' String get continueWatching => 'Continue Watching'; /// en: 'Continue Watching in ${library}' String continueWatchingIn({required Object library}) => 'Continue Watching in ${library}'; /// en: 'Next Up' String get nextUp => 'Next Up'; /// en: 'Next Up in ${library}' String nextUpIn({required Object library}) => 'Next Up in ${library}'; /// en: 'Recently Added' String get recentlyAdded => 'Recently Added'; /// en: 'Recently Added in ${library}' String recentlyAddedIn({required Object library}) => 'Recently Added in ${library}'; /// en: 'Latest Albums in ${library}' String latestAlbumsIn({required Object library}) => 'Latest Albums in ${library}'; /// en: 'Recently Played in ${library}' String recentlyPlayedIn({required Object library}) => 'Recently Played in ${library}'; /// en: 'Most Played in ${library}' String mostPlayedIn({required Object library}) => 'Most Played in ${library}'; /// en: 'S${season}E${episode}' String playEpisode({required Object season, required Object episode}) => 'S${season}E${episode}'; /// en: 'Overview' String get overview => 'Overview'; /// en: 'Cast' String get cast => 'Cast'; /// en: 'Trailers & Extras' String get extras => 'Trailers & Extras'; /// en: 'Studio' String get studio => 'Studio'; /// en: 'Rating' String get rating => 'Rating'; /// en: 'Director' String get director => 'Director'; /// en: 'Directors' String get directors => 'Directors'; /// en: 'Movie' String get movie => 'Movie'; /// en: 'TV Show' String get tvShow => 'TV Show'; /// en: '${minutes} min left' String minutesLeft({required Object minutes}) => '${minutes} min left'; /// en: 'More Like This' String get moreLikeThis => 'More Like This'; } // Path: errors class Translations$errors$en { Translations$errors$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Search failed: ${error}' String searchFailed({required Object error}) => 'Search failed: ${error}'; /// en: 'Search could not reach any media server.' String get searchUnavailable => 'Search could not reach any media server.'; /// en: 'Connection timeout while loading ${context}' String connectionTimeout({required Object context}) => 'Connection timeout while loading ${context}'; /// en: 'Unable to connect to media server' String get connectionFailed => 'Unable to connect to media server'; /// en: 'Unable to load ${context}. Please try again.' String unableToLoad({required Object context}) => 'Unable to load ${context}. Please try again.'; /// en: 'No client available' String get noClientAvailable => 'No client available'; /// en: 'Please enter a token' String get pleaseEnterToken => 'Please enter a token'; /// en: 'Invalid token' String get invalidToken => 'Invalid token'; /// en: 'Failed to verify token: ${error}' String failedToVerifyToken({required Object error}) => 'Failed to verify token: ${error}'; /// en: 'Failed to switch to ${displayName}' String failedToSwitchProfile({required Object displayName}) => 'Failed to switch to ${displayName}'; /// en: 'Failed to delete ${displayName}' String failedToDeleteProfile({required Object displayName}) => 'Failed to delete ${displayName}'; /// en: 'Couldn't update rating' String get failedToRate => 'Couldn\'t update rating'; } // Path: libraries class Translations$libraries$en { Translations$libraries$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Libraries' String get title => 'Libraries'; /// en: 'Library' String get fallbackTitle => 'Library'; /// en: 'Scan Library Files' String get scanLibraryFiles => 'Scan Library Files'; /// en: 'Scan Library' String get scanLibrary => 'Scan Library'; /// en: 'Analyze' String get analyze => 'Analyze'; /// en: 'Analyze Library' String get analyzeLibrary => 'Analyze Library'; /// en: 'Refresh Metadata' String get refreshMetadata => 'Refresh Metadata'; /// en: 'Empty Trash' String get emptyTrash => 'Empty Trash'; /// en: 'Emptying trash for "${title}"...' String emptyingTrash({required Object title}) => 'Emptying trash for "${title}"...'; /// en: 'Trash emptied for "${title}"' String trashEmptied({required Object title}) => 'Trash emptied for "${title}"'; /// en: 'Failed to empty trash: ${error}' String failedToEmptyTrash({required Object error}) => 'Failed to empty trash: ${error}'; /// en: 'Analyzing "${title}"...' String analyzing({required Object title}) => 'Analyzing "${title}"...'; /// en: 'Analysis started for "${title}"' String analysisStarted({required Object title}) => 'Analysis started for "${title}"'; /// en: 'Failed to analyze library: ${error}' String failedToAnalyze({required Object error}) => 'Failed to analyze library: ${error}'; /// en: 'No libraries found' String get noLibrariesFound => 'No libraries found'; /// en: 'All libraries are hidden' String get allLibrariesHidden => 'All libraries are hidden'; /// en: 'Hidden libraries (${count})' String hiddenLibrariesCount({required Object count}) => 'Hidden libraries (${count})'; /// en: 'This library is empty' String get thisLibraryIsEmpty => 'This library is empty'; /// en: 'No items match the active filters' String get noItemsMatchFilters => 'No items match the active filters'; /// en: 'Reset filters' String get resetFilters => 'Reset filters'; /// en: 'All' String get all => 'All'; /// en: 'Clear All' String get clearAll => 'Clear All'; /// en: 'Are you sure you want to scan "${title}"?' String scanLibraryConfirm({required Object title}) => 'Are you sure you want to scan "${title}"?'; /// en: 'Are you sure you want to analyze "${title}"?' String analyzeLibraryConfirm({required Object title}) => 'Are you sure you want to analyze "${title}"?'; /// en: 'Are you sure you want to refresh metadata for "${title}"?' String refreshMetadataConfirm({required Object title}) => 'Are you sure you want to refresh metadata for "${title}"?'; /// en: 'Are you sure you want to empty trash for "${title}"?' String emptyTrashConfirm({required Object title}) => 'Are you sure you want to empty trash for "${title}"?'; /// en: 'Manage Libraries' String get manageLibraries => 'Manage Libraries'; /// en: 'Sort' String get sort => 'Sort'; /// en: 'Sort By' String get sortBy => 'Sort By'; /// en: 'Filters' String get filters => 'Filters'; /// en: 'Are you sure you want to perform this action?' String get confirmActionMessage => 'Are you sure you want to perform this action?'; /// en: 'Show library' String get showLibrary => 'Show library'; /// en: 'Hide library' String get hideLibrary => 'Hide library'; /// en: 'Library options' String get libraryOptions => 'Library options'; /// en: 'library content' String get content => 'library content'; /// en: 'Select library' String get selectLibrary => 'Select library'; /// en: 'Filters (${count})' String filtersWithCount({required Object count}) => 'Filters (${count})'; /// en: 'No recommendations available' String get noRecommendations => 'No recommendations available'; /// en: 'No collections in this library' String get noCollections => 'No collections in this library'; /// en: 'No folders found' String get noFoldersFound => 'No folders found'; /// en: 'folders' String get folders => 'folders'; late final Translations$libraries$tabs$en tabs = Translations$libraries$tabs$en.internal(_root); late final Translations$libraries$groupings$en groupings = Translations$libraries$groupings$en.internal(_root); late final Translations$libraries$filterCategories$en filterCategories = Translations$libraries$filterCategories$en.internal(_root); late final Translations$libraries$sortLabels$en sortLabels = Translations$libraries$sortLabels$en.internal(_root); } // Path: about class Translations$about$en { Translations$about$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'About' String get title => 'About'; /// en: 'Open Source Licenses' String get openSourceLicenses => 'Open Source Licenses'; /// en: 'Version ${version}' String versionLabel({required Object version}) => 'Version ${version}'; /// en: 'A beautiful Plex and Jellyfin client for Flutter' String get appDescription => 'A beautiful Plex and Jellyfin client for Flutter'; /// en: 'View licenses of third-party libraries' String get viewLicensesDescription => 'View licenses of third-party libraries'; } // Path: serverSelection class Translations$serverSelection$en { Translations$serverSelection$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'No servers found for ${username} (${email})' String noServersFoundForAccount({required Object username, required Object email}) => 'No servers found for ${username} (${email})'; /// en: 'Failed to load servers: ${error}' String failedToLoadServers({required Object error}) => 'Failed to load servers: ${error}'; } // Path: hubDetail class Translations$hubDetail$en { Translations$hubDetail$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Title' String get title => 'Title'; /// en: 'Release Year' String get releaseYear => 'Release Year'; /// en: 'Date Added' String get dateAdded => 'Date Added'; /// en: 'Rating' String get rating => 'Rating'; /// en: 'No items found' String get noItemsFound => 'No items found'; } // Path: logs class Translations$logs$en { Translations$logs$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Clear Logs' String get clearLogs => 'Clear Logs'; /// en: 'Copy Logs' String get copyLogs => 'Copy Logs'; /// en: 'Upload Logs' String get uploadLogs => 'Upload Logs'; } // Path: licenses class Translations$licenses$en { Translations$licenses$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Related Packages' String get relatedPackages => 'Related Packages'; /// en: 'License' String get license => 'License'; /// en: 'License ${number}' String licenseNumber({required Object number}) => 'License ${number}'; /// en: '${count} licenses' String licensesCount({required Object count}) => '${count} licenses'; } // Path: navigation class Translations$navigation$en { Translations$navigation$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Libraries' String get libraries => 'Libraries'; /// en: 'Downloads' String get downloads => 'Downloads'; /// en: 'Live TV' String get liveTv => 'Live TV'; /// en: 'Explore' String get explore => 'Explore'; } // Path: explore class Translations$explore$en { Translations$explore$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Explore' String get title => 'Explore'; /// en: 'Select source' String get selectSource => 'Select source'; late final Translations$explore$rows$en rows = Translations$explore$rows$en.internal(_root); late final Translations$explore$status$en status = Translations$explore$status$en.internal(_root); /// en: '(one) {${n} episode} (other) {${n} episodes}' String episodeCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} episode', other: '${n} episodes', ); /// en: 'Cast' String get cast => 'Cast'; /// en: 'Characters' String get characters => 'Characters'; /// en: 'Add to Watchlist' String get addToWatchlist => 'Add to Watchlist'; /// en: 'Remove from Watchlist' String get removeFromWatchlist => 'Remove from Watchlist'; /// en: 'Couldn't update watchlist' String get watchlistUpdateFailed => 'Couldn\'t update watchlist'; /// en: 'Not in your library' String get notInLibrary => 'Not in your library'; /// en: 'In these libraries' String get inTheseLibraries => 'In these libraries'; /// en: 'Checking your library...' String get checkingLibrary => 'Checking your library...'; /// en: 'Nothing here yet' String get emptyTitle => 'Nothing here yet'; /// en: 'Rows from ${source} will appear here once they have content.' String emptyMessage({required Object source}) => 'Rows from ${source} will appear here once they have content.'; /// en: 'Search ${source}' String searchHint({required Object source}) => 'Search ${source}'; /// en: 'No results for "${query}"' String searchEmpty({required Object query}) => 'No results for "${query}"'; /// en: 'Search for movies and shows on ${source}.' String searchPrompt({required Object source}) => 'Search for movies and shows on ${source}.'; /// en: 'Search failed. Check your connection and try again.' String get searchFailed => 'Search failed. Check your connection and try again.'; late final Translations$explore$badge$en badge = Translations$explore$badge$en.internal(_root); late final Translations$explore$stats$en stats = Translations$explore$stats$en.internal(_root); late final Translations$explore$season$en season = Translations$explore$season$en.internal(_root); late final Translations$explore$format$en format = Translations$explore$format$en.internal(_root); late final Translations$explore$sourceMaterial$en sourceMaterial = Translations$explore$sourceMaterial$en.internal(_root); late final Translations$explore$creditRole$en creditRole = Translations$explore$creditRole$en.internal(_root); late final Translations$explore$ratingSource$en ratingSource = Translations$explore$ratingSource$en.internal(_root); /// en: 'Airs ${day} at ${time}' String broadcast({required Object day, required Object time}) => 'Airs ${day} at ${time}'; /// en: 'Airs ${day} at ${time} ${timezone}' String broadcastWithZone({required Object day, required Object time, required Object timezone}) => 'Airs ${day} at ${time} ${timezone}'; late final Translations$explore$detail$en detail = Translations$explore$detail$en.internal(_root); /// en: '(one) {${n} result} (other) {${n} results}' String totalResults({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} result', other: '${n} results', ); late final Translations$explore$relation$en relation = Translations$explore$relation$en.internal(_root); } // Path: liveTv class Translations$liveTv$en { Translations$liveTv$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Live TV' String get title => 'Live TV'; /// en: 'Guide' String get guide => 'Guide'; /// en: 'No channels available' String get noChannels => 'No channels available'; /// en: 'No DVR configured on any server' String get noDvr => 'No DVR configured on any server'; /// en: 'Live TV server is not available.' String get serverUnavailable => 'Live TV server is not available.'; /// en: 'Live TV server is not connected.' String get serverNotConnected => 'Live TV server is not connected.'; /// en: 'No program data available' String get noPrograms => 'No program data available'; /// en: 'Live stream failed' String get liveStreamFailed => 'Live stream failed'; /// en: 'Unknown Program' String get unknownProgram => 'Unknown Program'; /// en: 'Unknown' String get unknownHub => 'Unknown'; /// en: 'Unknown error' String get unknownError => 'Unknown error'; /// en: 'Channel ${number}' String channelNumber({required Object number}) => 'Channel ${number}'; /// en: 'Unknown channel' String get unknownChannel => 'Unknown channel'; /// en: 'LIVE' String get live => 'LIVE'; /// en: 'Reload Guide' String get reloadGuide => 'Reload Guide'; /// en: 'Now' String get now => 'Now'; /// en: 'Today' String get today => 'Today'; /// en: 'Tomorrow' String get tomorrow => 'Tomorrow'; /// en: 'Midnight' String get midnight => 'Midnight'; /// en: 'Overnight' String get overnight => 'Overnight'; /// en: 'Morning' String get morning => 'Morning'; /// en: 'Daytime' String get daytime => 'Daytime'; /// en: 'Evening' String get evening => 'Evening'; /// en: 'Late Night' String get lateNight => 'Late Night'; /// en: 'What's On' String get whatsOn => 'What\'s On'; /// en: 'Watch Channel' String get watchChannel => 'Watch Channel'; /// en: 'Favorites' String get favorites => 'Favorites'; /// en: 'Reorder Favorites' String get reorderFavorites => 'Reorder Favorites'; /// en: 'Could not load favorites. Check your connection and try again.' String get favoritesLoadFailed => 'Could not load favorites. Check your connection and try again.'; /// en: 'Could not update favorites. Check your connection and try again.' String get favoritesUpdateFailed => 'Could not update favorites. Check your connection and try again.'; /// en: 'Join Session in Progress' String get joinSession => 'Join Session in Progress'; /// en: 'Watch from start (${minutes} min ago)' String watchFromStart({required Object minutes}) => 'Watch from start (${minutes} min ago)'; /// en: 'Watch Live' String get watchLive => 'Watch Live'; /// en: 'Go to Live' String get goToLive => 'Go to Live'; /// en: 'Record' String get record => 'Record'; /// en: 'Record Episode' String get recordEpisode => 'Record Episode'; /// en: 'Record Series' String get recordSeries => 'Record Series'; /// en: 'Record Options' String get recordOptions => 'Record Options'; /// en: 'Save to' String get saveTo => 'Save to'; /// en: 'Recordings' String get recordings => 'Recordings'; /// en: 'Scheduled' String get scheduledRecordings => 'Scheduled'; /// en: 'Recording Rules' String get recordingRules => 'Recording Rules'; /// en: 'Nothing scheduled to record' String get noScheduledRecordings => 'Nothing scheduled to record'; /// en: 'Manage recording' String get manageRecording => 'Manage recording'; /// en: 'Cancel recording' String get cancelRecording => 'Cancel recording'; /// en: 'Cancel this recording?' String get cancelRecordingTitle => 'Cancel this recording?'; /// en: '${title} will no longer be recorded.' String cancelRecordingMessage({required Object title}) => '${title} will no longer be recorded.'; /// en: 'Delete rule' String get deleteRule => 'Delete rule'; /// en: 'Delete recording rule?' String get deleteRuleTitle => 'Delete recording rule?'; /// en: 'Future episodes of ${title} will not be recorded.' String deleteRuleMessage({required Object title}) => 'Future episodes of ${title} will not be recorded.'; /// en: 'Recording scheduled' String get recordingScheduled => 'Recording scheduled'; /// en: 'This program is already scheduled' String get alreadyScheduled => 'This program is already scheduled'; /// en: 'DVR settings require an admin account' String get dvrAdminRequired => 'DVR settings require an admin account'; /// en: 'Couldn't schedule recording' String get recordingFailed => 'Couldn\'t schedule recording'; /// en: 'Couldn't determine recording library' String get recordingTargetMissing => 'Couldn\'t determine recording library'; /// en: 'Recording not available for this program' String get recordNotAvailable => 'Recording not available for this program'; /// en: 'Recording canceled' String get recordingCancelled => 'Recording canceled'; /// en: 'Recording rule deleted' String get recordingRuleDeleted => 'Recording rule deleted'; /// en: 'Re-evaluate rules' String get processRecordingRules => 'Re-evaluate rules'; /// en: 'Recording now' String get recordingInProgress => 'Recording now'; /// en: '${count} scheduled' String recordingsCount({required Object count}) => '${count} scheduled'; /// en: 'Edit rule' String get editRule => 'Edit rule'; /// en: 'Edit' String get editRuleAction => 'Edit'; /// en: 'Recording rule updated' String get recordingRuleUpdated => 'Recording rule updated'; /// en: 'Guide refresh requested' String get guideReloadRequested => 'Guide refresh requested'; /// en: 'Rule re-evaluation requested' String get rulesProcessRequested => 'Rule re-evaluation requested'; /// en: 'Record show' String get recordShow => 'Record show'; } // Path: collections class Translations$collections$en { Translations$collections$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Collections' String get title => 'Collections'; /// en: 'Collection' String get collection => 'Collection'; /// en: 'Collection is empty' String get empty => 'Collection is empty'; /// en: 'Delete Collection' String get deleteCollection => 'Delete Collection'; /// en: 'Delete "${title}"? This can't be undone.' String deleteConfirm({required Object title}) => 'Delete "${title}"? This can\'t be undone.'; /// en: 'Collection deleted' String get deleted => 'Collection deleted'; /// en: 'Failed to delete collection' String get deleteFailed => 'Failed to delete collection'; /// en: 'Failed to delete collection: ${error}' String deleteFailedWithError({required Object error}) => 'Failed to delete collection: ${error}'; /// en: 'Select Collection' String get selectCollection => 'Select Collection'; /// en: 'Collection Name' String get collectionName => 'Collection Name'; /// en: 'Enter collection name' String get enterCollectionName => 'Enter collection name'; /// en: 'Added to collection' String get addedToCollection => 'Added to collection'; /// en: 'Failed to add to collection' String get errorAddingToCollection => 'Failed to add to collection'; /// en: 'Collection created' String get created => 'Collection created'; /// en: 'Remove from collection' String get removeFromCollection => 'Remove from collection'; /// en: 'Remove "${title}" from this collection?' String removeFromCollectionConfirm({required Object title}) => 'Remove "${title}" from this collection?'; /// en: 'Removed from collection' String get removedFromCollection => 'Removed from collection'; /// en: 'Failed to remove from collection' String get removeFromCollectionFailed => 'Failed to remove from collection'; /// en: 'Error removing from collection: ${error}' String removeFromCollectionError({required Object error}) => 'Error removing from collection: ${error}'; /// en: 'Search collections...' String get searchCollections => 'Search collections...'; } // Path: playlists class Translations$playlists$en { Translations$playlists$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Playlists' String get title => 'Playlists'; /// en: 'Playlist' String get playlist => 'Playlist'; /// en: 'No playlists found' String get noPlaylists => 'No playlists found'; /// en: 'Create Playlist' String get create => 'Create Playlist'; /// en: 'Playlist Name' String get playlistName => 'Playlist Name'; /// en: 'Enter playlist name' String get enterPlaylistName => 'Enter playlist name'; /// en: 'Delete Playlist' String get delete => 'Delete Playlist'; /// en: 'Remove from Playlist' String get removeItem => 'Remove from Playlist'; /// en: 'Smart Playlist' String get smartPlaylist => 'Smart Playlist'; /// en: '${count} items' String itemCount({required Object count}) => '${count} items'; /// en: '1 item' String get oneItem => '1 item'; /// en: 'This playlist is empty' String get emptyPlaylist => 'This playlist is empty'; /// en: 'Delete Playlist?' String get deleteConfirm => 'Delete Playlist?'; /// en: 'Are you sure you want to delete "${name}"?' String deleteMessage({required Object name}) => 'Are you sure you want to delete "${name}"?'; /// en: 'Playlist created' String get created => 'Playlist created'; /// en: 'Playlist deleted' String get deleted => 'Playlist deleted'; /// en: 'Added to playlist' String get itemAdded => 'Added to playlist'; /// en: 'Removed from playlist' String get itemRemoved => 'Removed from playlist'; /// en: 'Select Playlist' String get selectPlaylist => 'Select Playlist'; /// en: 'Search playlists...' String get searchPlaylists => 'Search playlists...'; /// en: 'Failed to create playlist' String get errorCreating => 'Failed to create playlist'; /// en: 'Failed to delete playlist' String get errorDeleting => 'Failed to delete playlist'; /// en: 'Failed to load playlists' String get errorLoading => 'Failed to load playlists'; /// en: 'Failed to add to playlist' String get errorAdding => 'Failed to add to playlist'; /// en: 'Failed to reorder playlist item' String get errorReordering => 'Failed to reorder playlist item'; /// en: 'Failed to remove from playlist' String get errorRemoving => 'Failed to remove from playlist'; } // Path: music class Translations$music$en { Translations$music$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Go to album' String get goToAlbum => 'Go to album'; /// en: 'Go to artist' String get goToArtist => 'Go to artist'; /// en: 'Instant Mix' String get instantMix => 'Instant Mix'; /// en: 'Play next' String get playNext => 'Play next'; /// en: 'Add to queue' String get addToQueue => 'Add to queue'; /// en: 'Disc ${n}' String discNumber({required Object n}) => 'Disc ${n}'; /// en: '(one) {${n} track} (other) {${n} tracks}' String trackCount({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} track', other: '${n} tracks', ); /// en: 'Now Playing' String get nowPlaying => 'Now Playing'; /// en: 'Playing from ${title}' String playingFrom({required Object title}) => 'Playing from ${title}'; /// en: 'Queue' String get queue => 'Queue'; /// en: 'Clear queue' String get clearQueue => 'Clear queue'; /// en: 'Lyrics' String get lyrics => 'Lyrics'; /// en: 'No lyrics available' String get noLyrics => 'No lyrics available'; /// en: 'Sleep timer' String get sleepTimer => 'Sleep timer'; /// en: 'End of track' String get sleepTimerEndOfTrack => 'End of track'; /// en: '${n} minutes' String sleepTimerMinutes({required Object n}) => '${n} minutes'; /// en: 'Stop playback' String get stopPlayback => 'Stop playback'; /// en: 'Previous track' String get previousTrack => 'Previous track'; /// en: 'Next track' String get nextTrack => 'Next track'; /// en: 'Repeat' String get repeat => 'Repeat'; /// en: 'Repeat all' String get repeatAll => 'Repeat all'; /// en: 'Repeat one' String get repeatOne => 'Repeat one'; } // Path: watchTogether class Translations$watchTogether$en { Translations$watchTogether$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Watch Together' String get title => 'Watch Together'; /// en: 'Watch content in sync with friends and family' String get description => 'Watch content in sync with friends and family'; /// en: 'Create Session' String get createSession => 'Create Session'; /// en: 'Creating...' String get creating => 'Creating...'; /// en: 'Join Session' String get joinSession => 'Join Session'; /// en: 'Joining...' String get joining => 'Joining...'; /// en: 'Control Mode' String get controlMode => 'Control Mode'; /// en: 'Who can control playback?' String get controlModeQuestion => 'Who can control playback?'; /// en: 'Host Only' String get hostOnly => 'Host Only'; /// en: 'Anyone' String get anyone => 'Anyone'; /// en: 'Hosting Session' String get hostingSession => 'Hosting Session'; /// en: 'In Session' String get inSession => 'In Session'; /// en: 'Session Code' String get sessionCode => 'Session Code'; /// en: 'Open Watch Together session controls' String get openSessionControls => 'Open Watch Together session controls'; /// en: 'Copy session code' String get copySessionCode => 'Copy session code'; /// en: 'Host controls playback' String get hostControlsPlayback => 'Host controls playback'; /// en: 'Anyone can control playback' String get anyoneCanControl => 'Anyone can control playback'; /// en: 'Host controls' String get hostControls => 'Host controls'; /// en: 'Anyone controls' String get anyoneControls => 'Anyone controls'; /// en: 'Participants' String get participants => 'Participants'; /// en: 'Host' String get host => 'Host'; /// en: 'HOST' String get hostBadge => 'HOST'; /// en: 'You are the host' String get youAreHost => 'You are the host'; /// en: 'Watching with others' String get watchingWithOthers => 'Watching with others'; /// en: 'End Session' String get endSession => 'End Session'; /// en: 'Leave Session' String get leaveSession => 'Leave Session'; /// en: 'End Session?' String get endSessionQuestion => 'End Session?'; /// en: 'Leave Session?' String get leaveSessionQuestion => 'Leave Session?'; /// en: 'This will end the session for all participants.' String get endSessionConfirm => 'This will end the session for all participants.'; /// en: 'You will be removed from the session.' String get leaveSessionConfirm => 'You will be removed from the session.'; /// en: 'This will end the watch session for all participants.' String get endSessionConfirmOverlay => 'This will end the watch session for all participants.'; /// en: 'You will be disconnected from the watch session.' String get leaveSessionConfirmOverlay => 'You will be disconnected from the watch session.'; /// en: 'End' String get end => 'End'; /// en: 'Leave' String get leave => 'Leave'; /// en: 'Syncing...' String get syncing => 'Syncing...'; /// en: 'Join Watch Session' String get joinWatchSession => 'Join Watch Session'; /// en: 'Enter 5-character code' String get enterCodeHint => 'Enter 5-character code'; /// en: 'Paste from clipboard' String get pasteFromClipboard => 'Paste from clipboard'; /// en: 'Please enter a session code' String get pleaseEnterCode => 'Please enter a session code'; /// en: 'Session code must be 5 characters' String get codeMustBe5Chars => 'Session code must be 5 characters'; /// en: 'Enter the host's session code to join.' String get joinInstructions => 'Enter the host\'s session code to join.'; /// en: 'Failed to create session' String get failedToCreate => 'Failed to create session'; /// en: 'Failed to join session' String get failedToJoin => 'Failed to join session'; /// en: 'Session code copied to clipboard' String get sessionCodeCopied => 'Session code copied to clipboard'; /// en: 'Relay server unreachable. ISP blocking may prevent Watch Together.' String get relayUnreachable => 'Relay server unreachable. ISP blocking may prevent Watch Together.'; /// en: 'Reconnecting to host...' String get reconnectingToHost => 'Reconnecting to host...'; /// en: 'Current Playback' String get currentPlayback => 'Current Playback'; /// en: 'Join Current Playback' String get joinCurrentPlayback => 'Join Current Playback'; /// en: 'Jump back into what the host is currently watching' String get joinCurrentPlaybackDescription => 'Jump back into what the host is currently watching'; /// en: 'Failed to open current playback' String get failedToOpenCurrentPlayback => 'Failed to open current playback'; /// en: '${name} joined' String participantJoined({required Object name}) => '${name} joined'; /// en: '${name} left' String participantLeft({required Object name}) => '${name} left'; /// en: '${name} paused' String participantPaused({required Object name}) => '${name} paused'; /// en: '${name} resumed' String participantResumed({required Object name}) => '${name} resumed'; /// en: '${name} changed the playback position' String participantSeeked({required Object name}) => '${name} changed the playback position'; /// en: '${name} is buffering' String participantBuffering({required Object name}) => '${name} is buffering'; /// en: '${name} is on an older app version — sync unavailable' String participantNeedsUpdate({required Object name}) => '${name} is on an older app version — sync unavailable'; /// en: 'Resuming without ${name}' String resumingWithout({required Object name}) => 'Resuming without ${name}'; /// en: 'Waiting for others to load...' String get waitingForParticipants => 'Waiting for others to load...'; /// en: 'Waiting for ${name}...' String waitingForName({required Object name}) => 'Waiting for ${name}...'; /// en: 'Recent Rooms' String get recentRooms => 'Recent Rooms'; /// en: 'Rename Room' String get renameRoom => 'Rename Room'; /// en: 'Remove' String get removeRoom => 'Remove'; /// en: 'Couldn't switch — server unavailable for sync' String get guestSwitchUnavailable => 'Couldn\'t switch — server unavailable for sync'; /// en: 'Couldn't switch — content not found on this server' String get guestSwitchFailed => 'Couldn\'t switch — content not found on this server'; } // Path: downloads class Translations$downloads$en { Translations$downloads$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Downloads' String get title => 'Downloads'; /// en: 'Manage' String get manage => 'Manage'; /// en: 'TV Shows' String get tvShows => 'TV Shows'; /// en: 'Movies' String get movies => 'Movies'; /// en: 'Music' String get music => 'Music'; /// en: '${count} tracks queued for download' String tracksQueued({required Object count}) => '${count} tracks queued for download'; /// en: 'No downloads yet' String get noDownloads => 'No downloads yet'; /// en: 'Downloaded content will appear here for offline viewing' String get noDownloadsDescription => 'Downloaded content will appear here for offline viewing'; /// en: 'Download' String get downloadNow => 'Download'; /// en: 'Delete download' String get deleteDownload => 'Delete download'; /// en: 'Retry download' String get retryDownload => 'Retry download'; /// en: 'Download queued' String get downloadQueued => 'Download queued'; /// en: 'Download resumed' String get downloadResumed => 'Download resumed'; /// en: 'Server error: file may exceed the remote bitrate limit' String get serverErrorBitrate => 'Server error: file may exceed the remote bitrate limit'; /// en: 'Downloads stopped because device storage is full. Free some space, then retry.' String get storageFull => 'Downloads stopped because device storage is full. Free some space, then retry.'; /// en: '${count} episodes queued for download' String episodesQueued({required Object count}) => '${count} episodes queued for download'; /// en: 'Download deleted' String get downloadDeleted => 'Download deleted'; /// en: 'Delete "${title}" from this device?' String deleteConfirm({required Object title}) => 'Delete "${title}" from this device?'; /// en: 'Canceled Download' String get cancelledDownloadTitle => 'Canceled Download'; /// en: 'This download was canceled. What would you like to do?' String get cancelledDownloadMessage => 'This download was canceled. What would you like to do?'; /// en: 'All episodes already downloaded' String get allEpisodesAlreadyDownloaded => 'All episodes already downloaded'; /// en: 'Resume download' String get resumeDownload => 'Resume download'; /// en: 'Canceled download' String get cancelledDownload => 'Canceled download'; /// en: '${file} (syncing ${status})' String syncingFile({required Object file, required Object status}) => '${file} (syncing ${status})'; /// en: 'Downloaded ${file} - Click to complete' String downloadedFileClickToComplete({required Object file}) => 'Downloaded ${file} - Click to complete'; /// en: 'Partially downloaded - Click to complete' String get partialDownloadClickToComplete => 'Partially downloaded - Click to complete'; /// en: 'Deleting...' String get deleting => 'Deleting...'; /// en: 'Deleting ${title}... (${current} of ${total})' String deletingWithProgress({required Object title, required Object current, required Object total}) => 'Deleting ${title}... (${current} of ${total})'; /// en: 'Queued' String get queuedTooltip => 'Queued'; /// en: 'Queued ${files}' String queuedFilesTooltip({required Object files}) => 'Queued ${files}'; /// en: 'Downloading...' String get downloadingTooltip => 'Downloading...'; /// en: 'Downloading ${files}' String downloadingFilesTooltip({required Object files}) => 'Downloading ${files}'; /// en: 'No downloads' String get noDownloadsTree => 'No downloads'; /// en: 'Pause all' String get pauseAll => 'Pause all'; /// en: 'Resume all' String get resumeAll => 'Resume all'; /// en: 'Delete all' String get deleteAll => 'Delete all'; /// en: 'Select Version' String get selectVersion => 'Select Version'; /// en: 'All episodes' String get allEpisodes => 'All episodes'; /// en: 'Unwatched only' String get unwatchedOnly => 'Unwatched only'; /// en: 'Next ${count} unwatched' String nextNUnwatched({required Object count}) => 'Next ${count} unwatched'; /// en: 'Custom amount...' String get customAmount => 'Custom amount...'; /// en: 'Include Specials' String get includeSpecials => 'Include Specials'; /// en: 'How many episodes?' String get howManyEpisodes => 'How many episodes?'; /// en: 'Enter a valid episode count.' String get invalidEpisodeCount => 'Enter a valid episode count.'; /// en: 'Keep synced' String get keepSynced => 'Keep synced'; /// en: 'Download once' String get downloadOnce => 'Download once'; /// en: 'Keep ${count} unwatched' String keepNUnwatched({required Object count}) => 'Keep ${count} unwatched'; /// en: 'Edit sync rule' String get editSyncRule => 'Edit sync rule'; /// en: 'Remove sync rule' String get removeSyncRule => 'Remove sync rule'; /// en: 'Stop syncing "${title}"? Downloaded episodes will be kept.' String removeSyncRuleConfirm({required Object title}) => 'Stop syncing "${title}"? Downloaded episodes will be kept.'; /// en: 'Stop syncing "${title}"?' String removeListSyncRuleConfirm({required Object title}) => 'Stop syncing "${title}"?'; /// en: 'Also delete associated downloads' String get deleteSyncRuleDownloads => 'Also delete associated downloads'; /// en: 'Downloads used by another sync rule or profile will be kept.' String get deleteSyncRuleDownloadsDescription => 'Downloads used by another sync rule or profile will be kept.'; /// en: 'Sync rule created — keeping ${count} unwatched episodes' String syncRuleCreated({required Object count}) => 'Sync rule created — keeping ${count} unwatched episodes'; /// en: 'Sync rule updated' String get syncRuleUpdated => 'Sync rule updated'; /// en: 'Sync rule removed' String get syncRuleRemoved => 'Sync rule removed'; /// en: 'Sync rule and associated downloads removed' String get syncRuleAndDownloadsRemoved => 'Sync rule and associated downloads removed'; /// en: 'Sync rules are currently updating. Try again in a moment.' String get syncRuleCleanupBusy => 'Sync rules are currently updating. Try again in a moment.'; /// en: 'Associated downloads could not be identified safely. Reconnect the server and try again, or remove the rule without deleting downloads.' String get syncRuleCleanupUnavailable => 'Associated downloads could not be identified safely. Reconnect the server and try again, or remove the rule without deleting downloads.'; /// en: 'Synced ${count} new episodes for ${title}' String syncedNewEpisodes({required Object count, required Object title}) => 'Synced ${count} new episodes for ${title}'; /// en: 'Sync rules' String get activeSyncRules => 'Sync rules'; /// en: 'No sync rules' String get noSyncRules => 'No sync rules'; /// en: 'Manage sync' String get manageSyncRule => 'Manage sync'; /// en: 'Episode count' String get editEpisodeCount => 'Episode count'; /// en: 'Sync filter' String get editSyncFilter => 'Sync filter'; /// en: 'Syncing all items' String get syncAllItems => 'Syncing all items'; /// en: 'Syncing unwatched items' String get syncUnwatchedItems => 'Syncing unwatched items'; /// en: 'Server: ${server} • ${status}' String syncRuleServerContext({required Object server, required Object status}) => 'Server: ${server} • ${status}'; /// en: 'Available' String get syncRuleAvailable => 'Available'; /// en: 'Offline' String get syncRuleOffline => 'Offline'; /// en: 'Sign in required' String get syncRuleSignInRequired => 'Sign in required'; /// en: 'Not available for current profile' String get syncRuleNotAvailableForProfile => 'Not available for current profile'; /// en: 'Unknown server' String get syncRuleUnknownServer => 'Unknown server'; /// en: 'Sync rule created' String get syncRuleListCreated => 'Sync rule created'; late final Translations$downloads$backgroundWarning$en backgroundWarning = Translations$downloads$backgroundWarning$en.internal(_root); } // Path: shaders class Translations$shaders$en { Translations$shaders$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Shaders' String get title => 'Shaders'; /// en: 'No video enhancement' String get noShaderDescription => 'No video enhancement'; /// en: 'NVIDIA image scaling for sharper video' String get nvscalerDescription => 'NVIDIA image scaling for sharper video'; /// en: 'Neutral' String get artcnnVariantNeutral => 'Neutral'; /// en: 'Denoise' String get artcnnVariantDenoise => 'Denoise'; /// en: 'Denoise + Sharpen' String get artcnnVariantDenoiseSharpen => 'Denoise + Sharpen'; /// en: 'Fast' String get qualityFast => 'Fast'; /// en: 'High Quality' String get qualityHQ => 'High Quality'; /// en: 'Mode' String get mode => 'Mode'; /// en: 'Import Shader' String get importShader => 'Import Shader'; /// en: 'Custom GLSL shader' String get customShaderDescription => 'Custom GLSL shader'; /// en: 'Shader imported' String get shaderImported => 'Shader imported'; /// en: 'Failed to import shader' String get shaderImportFailed => 'Failed to import shader'; /// en: 'Delete Shader' String get deleteShader => 'Delete Shader'; /// en: 'Delete "${name}"?' String deleteShaderConfirm({required Object name}) => 'Delete "${name}"?'; } // Path: companionRemote class Translations$companionRemote$en { Translations$companionRemote$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Companion Remote' String get title => 'Companion Remote'; /// en: 'Connected to ${name}' String connectedTo({required Object name}) => 'Connected to ${name}'; /// en: 'Unknown Device' String get unknownDevice => 'Unknown Device'; late final Translations$companionRemote$session$en session = Translations$companionRemote$session$en.internal(_root); late final Translations$companionRemote$pairing$en pairing = Translations$companionRemote$pairing$en.internal(_root); late final Translations$companionRemote$remote$en remote = Translations$companionRemote$remote$en.internal(_root); late final Translations$companionRemote$errors$en errors = Translations$companionRemote$errors$en.internal(_root); } // Path: videoSettings class Translations$videoSettings$en { Translations$videoSettings$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Playback Speed' String get playbackSpeed => 'Playback Speed'; /// en: 'Normal' String get normalSpeed => 'Normal'; /// en: 'Active (${duration})' String sleepTimerActive({required Object duration}) => 'Active (${duration})'; /// en: 'Zoom' String get zoom => 'Zoom'; /// en: 'Sleep Timer' String get sleepTimer => 'Sleep Timer'; /// en: 'Audio Sync' String get audioSync => 'Audio Sync'; /// en: 'Subtitle Sync' String get subtitleSync => 'Subtitle Sync'; /// en: 'HDR' String get hdr => 'HDR'; /// en: 'Audio Output' String get audioOutput => 'Audio Output'; /// en: 'Performance Overlay' String get performanceOverlay => 'Performance Overlay'; /// en: 'Audio Passthrough' String get audioPassthrough => 'Audio Passthrough'; /// en: 'Dolby Atmos' String get audioOutputDolbyAtmos => 'Dolby Atmos'; /// en: 'Dolby Audio' String get audioOutputDolbyAudio => 'Dolby Audio'; /// en: 'Surround' String get audioOutputSurround => 'Surround'; /// en: 'Spatial Audio' String get audioOutputSpatial => 'Spatial Audio'; /// en: 'Stereo' String get audioOutputStereo => 'Stereo'; /// en: 'Normalize Loudness' String get audioNormalization => 'Normalize Loudness'; /// en: 'Downmix to Stereo' String get audioDownmix => 'Downmix to Stereo'; } // Path: performanceOverlay class Translations$performanceOverlay$en { Translations$performanceOverlay$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Color' String get color => 'Color'; /// en: 'Performance' String get performance => 'Performance'; /// en: 'Buffer' String get buffer => 'Buffer'; /// en: 'App' String get app => 'App'; /// en: 'Decoder' String get decoder => 'Decoder'; /// en: 'Raw Decoder' String get rawDecoder => 'Raw Decoder'; /// en: 'Tunneling' String get tunneling => 'Tunneling'; /// en: 'Aspect' String get aspect => 'Aspect'; /// en: 'Rotation' String get rotation => 'Rotation'; /// en: 'DV Source' String get dvSource => 'DV Source'; /// en: 'DV Path' String get dvPath => 'DV Path'; /// en: 'P7 Conv' String get p7Conversion => 'P7 Conv'; /// en: 'Sample Rate' String get sampleRate => 'Sample Rate'; /// en: 'Pixel Fmt' String get pixelFormat => 'Pixel Fmt'; /// en: 'HW Fmt' String get hwFormat => 'HW Fmt'; /// en: 'Matrix' String get matrix => 'Matrix'; /// en: 'Primaries' String get primaries => 'Primaries'; /// en: 'Transfer' String get transfer => 'Transfer'; /// en: 'Render FPS' String get renderFps => 'Render FPS'; /// en: 'Display FPS' String get displayFps => 'Display FPS'; /// en: 'A/V Sync' String get avSync => 'A/V Sync'; /// en: 'Dropped' String get dropped => 'Dropped'; /// en: 'DV RPUs' String get dvRpus => 'DV RPUs'; /// en: 'DV RPU Avg' String get dvRpuAverage => 'DV RPU Avg'; /// en: 'DV Sample Avg' String get dvSampleAverage => 'DV Sample Avg'; /// en: 'Max Luma' String get maxLuma => 'Max Luma'; /// en: 'Min Luma' String get minLuma => 'Min Luma'; /// en: 'MaxCLL' String get maxCll => 'MaxCLL'; /// en: 'MaxFALL' String get maxFall => 'MaxFALL'; /// en: 'Cache Used' String get cacheUsed => 'Cache Used'; /// en: 'Cache Limit' String get cacheLimit => 'Cache Limit'; /// en: 'Speed' String get speed => 'Speed'; /// en: 'Player' String get player => 'Player'; /// en: 'Memory' String get memory => 'Memory'; /// en: 'UI FPS' String get uiFps => 'UI FPS'; } // Path: externalPlayer class Translations$externalPlayer$en { Translations$externalPlayer$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'External Player' String get title => 'External Player'; /// en: 'Use External Player' String get useExternalPlayer => 'Use External Player'; /// en: 'Open videos in another app' String get useExternalPlayerDescription => 'Open videos in another app'; /// en: 'Select Player' String get selectPlayer => 'Select Player'; /// en: 'Custom Players' String get customPlayers => 'Custom Players'; /// en: 'System Default' String get systemDefault => 'System Default'; /// en: 'Add Custom Player' String get addCustomPlayer => 'Add Custom Player'; /// en: 'Player Name' String get playerName => 'Player Name'; /// en: 'My Player' String get playerNameHint => 'My Player'; /// en: 'Command' String get playerCommand => 'Command'; /// en: 'Package Name' String get playerPackage => 'Package Name'; /// en: 'URL Scheme' String get playerUrlScheme => 'URL Scheme'; /// en: 'Off' String get off => 'Off'; /// en: 'Failed to open external player' String get launchFailed => 'Failed to open external player'; /// en: '${name} is not installed' String appNotInstalled({required Object name}) => '${name} is not installed'; /// en: 'Play in External Player' String get playInExternalPlayer => 'Play in External Player'; } // Path: metadataEdit class Translations$metadataEdit$en { Translations$metadataEdit$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Edit...' String get editMetadata => 'Edit...'; /// en: 'Edit Metadata' String get screenTitle => 'Edit Metadata'; /// en: 'Basic Info' String get basicInfo => 'Basic Info'; /// en: 'Artwork' String get artwork => 'Artwork'; /// en: 'Advanced Settings' String get advancedSettings => 'Advanced Settings'; /// en: 'Title' String get title => 'Title'; /// en: 'Sort Title' String get sortTitle => 'Sort Title'; /// en: 'Original Title' String get originalTitle => 'Original Title'; /// en: 'Release Date' String get releaseDate => 'Release Date'; /// en: 'Content Rating' String get contentRating => 'Content Rating'; /// en: 'Studio' String get studio => 'Studio'; /// en: 'Tagline' String get tagline => 'Tagline'; /// en: 'Summary' String get summary => 'Summary'; /// en: 'Poster' String get poster => 'Poster'; /// en: 'Background' String get background => 'Background'; /// en: 'Logo' String get logo => 'Logo'; /// en: 'Square Art' String get squareArt => 'Square Art'; /// en: 'Select Poster' String get selectPoster => 'Select Poster'; /// en: 'Select Background' String get selectBackground => 'Select Background'; /// en: 'Select Logo' String get selectLogo => 'Select Logo'; /// en: 'Select Square Art' String get selectSquareArt => 'Select Square Art'; /// en: 'From URL' String get fromUrl => 'From URL'; /// en: 'Upload File' String get uploadFile => 'Upload File'; /// en: 'Enter image URL' String get enterImageUrl => 'Enter image URL'; /// en: 'Image URL' String get imageUrl => 'Image URL'; /// en: 'Metadata updated' String get metadataUpdated => 'Metadata updated'; /// en: 'Failed to update metadata' String get metadataUpdateFailed => 'Failed to update metadata'; /// en: 'Artwork updated' String get artworkUpdated => 'Artwork updated'; /// en: 'Failed to update artwork' String get artworkUpdateFailed => 'Failed to update artwork'; /// en: 'No artwork available' String get noArtworkAvailable => 'No artwork available'; /// en: 'Artwork option ${index}' String artworkOption({required Object index}) => 'Artwork option ${index}'; /// en: 'Artwork option ${index}, selected' String selectedArtworkOption({required Object index}) => 'Artwork option ${index}, selected'; /// en: 'Not set' String get notSet => 'Not set'; /// en: 'Library default' String get libraryDefault => 'Library default'; /// en: 'Account default' String get accountDefault => 'Account default'; /// en: 'Series default' String get seriesDefault => 'Series default'; /// en: 'Episode Sorting' String get episodeSorting => 'Episode Sorting'; /// en: 'Oldest first' String get oldestFirst => 'Oldest first'; /// en: 'Newest first' String get newestFirst => 'Newest first'; /// en: 'Keep' String get keep => 'Keep'; /// en: 'All episodes' String get allEpisodes => 'All episodes'; /// en: '${count} latest episodes' String latestEpisodes({required Object count}) => '${count} latest episodes'; /// en: 'Latest episode' String get latestEpisode => 'Latest episode'; /// en: 'Episodes added in the past ${count} days' String episodesAddedPastDays({required Object count}) => 'Episodes added in the past ${count} days'; /// en: 'Delete Episodes After Playing' String get deleteAfterPlaying => 'Delete Episodes After Playing'; /// en: 'Never' String get never => 'Never'; /// en: 'After a day' String get afterADay => 'After a day'; /// en: 'After a week' String get afterAWeek => 'After a week'; /// en: 'After a month' String get afterAMonth => 'After a month'; /// en: 'On next refresh' String get onNextRefresh => 'On next refresh'; /// en: 'Seasons' String get seasons => 'Seasons'; /// en: 'Show' String get show => 'Show'; /// en: 'Hide' String get hide => 'Hide'; /// en: 'Episode Ordering' String get episodeOrdering => 'Episode Ordering'; /// en: 'The Movie Database (Aired)' String get tmdbAiring => 'The Movie Database (Aired)'; /// en: 'TheTVDB (Aired)' String get tvdbAiring => 'TheTVDB (Aired)'; /// en: 'TheTVDB (Absolute)' String get tvdbAbsolute => 'TheTVDB (Absolute)'; /// en: 'Metadata Language' String get metadataLanguage => 'Metadata Language'; /// en: 'Use Original Title' String get useOriginalTitle => 'Use Original Title'; /// en: 'Preferred Audio Language' String get preferredAudioLanguage => 'Preferred Audio Language'; /// en: 'Preferred Subtitle Language' String get preferredSubtitleLanguage => 'Preferred Subtitle Language'; /// en: 'Auto-Select Subtitle Mode' String get subtitleMode => 'Auto-Select Subtitle Mode'; /// en: 'Manually selected' String get manuallySelected => 'Manually selected'; /// en: 'Shown with foreign audio' String get shownWithForeignAudio => 'Shown with foreign audio'; /// en: 'Always enabled' String get alwaysEnabled => 'Always enabled'; /// en: 'Tags' String get tags => 'Tags'; /// en: 'Add tag' String get addTag => 'Add tag'; /// en: 'Genre' String get genre => 'Genre'; /// en: 'Director' String get director => 'Director'; /// en: 'Writer' String get writer => 'Writer'; /// en: 'Producer' String get producer => 'Producer'; /// en: 'Country' String get country => 'Country'; /// en: 'Collection' String get collection => 'Collection'; /// en: 'Label' String get label => 'Label'; /// en: 'Style' String get style => 'Style'; /// en: 'Mood' String get mood => 'Mood'; } // Path: matchScreen class Translations$matchScreen$en { Translations$matchScreen$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Match...' String get match => 'Match...'; /// en: 'Fix Match...' String get fixMatch => 'Fix Match...'; /// en: 'Unmatch' String get unmatch => 'Unmatch'; /// en: 'Clear this match? Plex treats it as unmatched until rematched.' String get unmatchConfirm => 'Clear this match? Plex treats it as unmatched until rematched.'; /// en: 'Item unmatched' String get unmatchSuccess => 'Item unmatched'; /// en: 'Failed to unmatch item' String get unmatchFailed => 'Failed to unmatch item'; /// en: 'Match applied' String get matchApplied => 'Match applied'; /// en: 'Failed to apply match' String get matchFailed => 'Failed to apply match'; /// en: 'Title' String get titleHint => 'Title'; /// en: 'Year' String get yearHint => 'Year'; /// en: 'Search' String get search => 'Search'; /// en: 'No matches found' String get noMatchesFound => 'No matches found'; } // Path: serverTasks class Translations$serverTasks$en { Translations$serverTasks$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Server Tasks' String get title => 'Server Tasks'; /// en: 'Failed to load tasks' String get failedToLoad => 'Failed to load tasks'; /// en: 'No tasks running' String get noTasks => 'No tasks running'; } // Path: trakt class Translations$trakt$en { Translations$trakt$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Trakt' String get title => 'Trakt'; /// en: 'Connected' String get connected => 'Connected'; /// en: 'Connected as @${username}' String connectedAs({required Object username}) => 'Connected as @${username}'; /// en: 'Disconnect Trakt account?' String get disconnectConfirm => 'Disconnect Trakt account?'; /// en: 'Plezy will stop sending events to Trakt. You can reconnect any time.' String get disconnectConfirmBody => 'Plezy will stop sending events to Trakt. You can reconnect any time.'; /// en: 'Real-time scrobbling' String get scrobble => 'Real-time scrobbling'; /// en: 'Send play, pause, and stop events to Trakt during playback.' String get scrobbleDescription => 'Send play, pause, and stop events to Trakt during playback.'; /// en: 'Sync watched status' String get watchedSync => 'Sync watched status'; /// en: 'When you mark items as watched in Plezy, they are also marked as watched on Trakt.' String get watchedSyncDescription => 'When you mark items as watched in Plezy, they are also marked as watched on Trakt.'; } // Path: seerr class Translations$seerr$en { Translations$seerr$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Seerr' String get title => 'Seerr'; /// en: 'Connect Seerr' String get connectTitle => 'Connect Seerr'; /// en: 'Server URL' String get serverUrl => 'Server URL'; /// en: 'The address of your Seerr instance' String get serverUrlHelper => 'The address of your Seerr instance'; /// en: 'Continue' String get checkServer => 'Continue'; /// en: 'Sign in with Jellyfin' String get signInWithJellyfin => 'Sign in with Jellyfin'; /// en: 'Sign in with Emby' String get signInWithEmby => 'Sign in with Emby'; /// en: 'Use a local account' String get signInWithLocal => 'Use a local account'; /// en: 'Email' String get email => 'Email'; /// en: 'This Seerr instance offers no sign-in method Plezy supports.' String get noSignInMethods => 'This Seerr instance offers no sign-in method Plezy supports.'; /// en: 'Instance' String get instance => 'Instance'; /// en: 'Disconnect Seerr?' String get disconnectConfirm => 'Disconnect Seerr?'; /// en: 'Plezy will forget this Seerr instance. Reconnect any time.' String get disconnectConfirmBody => 'Plezy will forget this Seerr instance. Reconnect any time.'; /// en: 'Request' String get request => 'Request'; /// en: 'Request in 4K' String get request4k => 'Request in 4K'; /// en: 'Seasons' String get seasons => 'Seasons'; /// en: 'All seasons' String get allSeasons => 'All seasons'; /// en: 'Advanced' String get advancedOptions => 'Advanced'; /// en: 'Destination server' String get destinationServer => 'Destination server'; /// en: 'Quality profile' String get qualityProfile => 'Quality profile'; /// en: 'Root folder' String get rootFolder => 'Root folder'; /// en: 'Language profile' String get languageProfile => 'Language profile'; /// en: 'Request submitted' String get requestSubmitted => 'Request submitted'; /// en: 'Request failed: ${error}' String requestFailed({required Object error}) => 'Request failed: ${error}'; /// en: 'Couldn't load request options' String get requestsLoadFailed => 'Couldn\'t load request options'; /// en: 'Everything is already available or requested.' String get nothingToRequest => 'Everything is already available or requested.'; /// en: 'Available' String get statusAvailable => 'Available'; /// en: 'Partially available' String get statusPartiallyAvailable => 'Partially available'; /// en: 'Requested' String get statusRequested => 'Requested'; /// en: 'Processing' String get statusProcessing => 'Processing'; } // Path: services class Translations$services$en { Translations$services$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Services' String get title => 'Services'; /// en: 'Sync watch progress and request new titles.' String get hubSubtitle => 'Sync watch progress and request new titles.'; /// en: 'Not connected' String get notConnected => 'Not connected'; /// en: 'Connected as @${username}' String connectedAs({required Object username}) => 'Connected as @${username}'; /// en: 'Track progress automatically' String get scrobble => 'Track progress automatically'; /// en: 'Update your list when you finish an episode or movie.' String get scrobbleDescription => 'Update your list when you finish an episode or movie.'; /// en: 'Disconnect ${service}?' String disconnectConfirm({required Object service}) => 'Disconnect ${service}?'; /// en: 'Plezy will stop updating ${service}. Reconnect any time.' String disconnectConfirmBody({required Object service}) => 'Plezy will stop updating ${service}. Reconnect any time.'; /// en: 'Couldn't connect to ${service}. Try again.' String connectFailed({required Object service}) => 'Couldn\'t connect to ${service}. Try again.'; late final Translations$services$names$en names = Translations$services$names$en.internal(_root); late final Translations$services$deviceCode$en deviceCode = Translations$services$deviceCode$en.internal(_root); late final Translations$services$oauthProxy$en oauthProxy = Translations$services$oauthProxy$en.internal(_root); late final Translations$services$libraryFilter$en libraryFilter = Translations$services$libraryFilter$en.internal(_root); } // Path: addServer class Translations$addServer$en { Translations$addServer$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Add Jellyfin server' String get addJellyfinTitle => 'Add Jellyfin server'; /// en: 'Server URLs' String get serverUrls => 'Server URLs'; /// en: 'Multiple URLs allowed, separated by commas.' String get serverUrlsHelper => 'Multiple URLs allowed, separated by commas.'; /// en: 'Find server' String get findServer => 'Find server'; /// en: 'Looking for local Jellyfin servers...' String get searchingLocalServers => 'Looking for local Jellyfin servers...'; /// en: 'Local Jellyfin servers' String get localServers => 'Local Jellyfin servers'; /// en: 'Username' String get username => 'Username'; /// en: 'Password' String get password => 'Password'; /// en: 'Sign in' String get signIn => 'Sign in'; /// en: 'Change' String get change => 'Change'; /// en: 'Required' String get required => 'Required'; /// en: 'Could not reach the server: ${error}' String couldNotReachServer({required Object error}) => 'Could not reach the server: ${error}'; /// en: 'Sign-in failed: ${error}' String signInFailed({required Object error}) => 'Sign-in failed: ${error}'; /// en: 'Quick Connect failed: ${error}' String quickConnectFailed({required Object error}) => 'Quick Connect failed: ${error}'; /// en: 'Sign in with Plex' String get addPlexTitle => 'Sign in with Plex'; /// en: 'PIN expired before sign-in. Please try again.' String get pinExpired => 'PIN expired before sign-in. Please try again.'; /// en: 'Failed to register account: ${error}' String failedToRegisterAccount({required Object error}) => 'Failed to register account: ${error}'; /// en: 'Enter your Jellyfin server URL' String get enterJellyfinUrlError => 'Enter your Jellyfin server URL'; /// en: 'Add connection' String get addConnectionTitle => 'Add connection'; /// en: 'Add to ${name}' String addConnectionTitleScoped({required Object name}) => 'Add to ${name}'; /// en: 'Sign in with Plex' String get signInWithPlexCard => 'Sign in with Plex'; /// en: 'Authorize this device. Shared servers are added.' String get signInWithPlexCardSubtitle => 'Authorize this device. Shared servers are added.'; /// en: 'Authorize a Plex account. Home users become profiles.' String get signInWithPlexCardSubtitleScoped => 'Authorize a Plex account. Home users become profiles.'; /// en: 'Connect to Jellyfin' String get connectToJellyfinCard => 'Connect to Jellyfin'; /// en: 'Enter your server URL, username, and password.' String get connectToJellyfinCardSubtitle => 'Enter your server URL, username, and password.'; /// en: 'Sign in to a Jellyfin server. Binds to ${name}.' String connectToJellyfinCardSubtitleScoped({required Object name}) => 'Sign in to a Jellyfin server. Binds to ${name}.'; /// en: 'Borrow from another profile' String get borrowFromAnotherProfile => 'Borrow from another profile'; /// en: 'Reuse another profile's connection. PIN-protected profiles require a PIN.' String get borrowFromAnotherProfileSubtitle => 'Reuse another profile\'s connection. PIN-protected profiles require a PIN.'; } // Path: hotkeys.actions class Translations$hotkeys$actions$en { Translations$hotkeys$actions$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Play/Pause' String get playPause => 'Play/Pause'; /// en: 'Volume Up' String get volumeUp => 'Volume Up'; /// en: 'Volume Down' String get volumeDown => 'Volume Down'; /// en: 'Seek Forward (${seconds}s)' String seekForward({required Object seconds}) => 'Seek Forward (${seconds}s)'; /// en: 'Seek Backward (${seconds}s)' String seekBackward({required Object seconds}) => 'Seek Backward (${seconds}s)'; /// en: 'Toggle Fullscreen' String get fullscreenToggle => 'Toggle Fullscreen'; /// en: 'Toggle Mute' String get muteToggle => 'Toggle Mute'; /// en: 'Toggle Subtitles' String get subtitleToggle => 'Toggle Subtitles'; /// en: 'Next Audio Track' String get audioTrackNext => 'Next Audio Track'; /// en: 'Next Subtitle Track' String get subtitleTrackNext => 'Next Subtitle Track'; /// en: 'Next Chapter' String get chapterNext => 'Next Chapter'; /// en: 'Previous Chapter' String get chapterPrevious => 'Previous Chapter'; /// en: 'Next Episode' String get episodeNext => 'Next Episode'; /// en: 'Previous Episode' String get episodePrevious => 'Previous Episode'; /// en: 'Increase Speed' String get speedIncrease => 'Increase Speed'; /// en: 'Decrease Speed' String get speedDecrease => 'Decrease Speed'; /// en: 'Reset Speed' String get speedReset => 'Reset Speed'; /// en: 'Zoom In' String get zoomIn => 'Zoom In'; /// en: 'Zoom Out' String get zoomOut => 'Zoom Out'; /// en: 'Reset Zoom' String get zoomReset => 'Reset Zoom'; /// en: 'Seek to Next Subtitle' String get subSeekNext => 'Seek to Next Subtitle'; /// en: 'Seek to Previous Subtitle' String get subSeekPrev => 'Seek to Previous Subtitle'; /// en: 'Toggle Shaders' String get shaderToggle => 'Toggle Shaders'; /// en: 'Skip Intro/Credits' String get skipMarker => 'Skip Intro/Credits'; /// en: 'Take Screenshot' String get screenshot => 'Take Screenshot'; } // Path: videoControls.pipErrors class Translations$videoControls$pipErrors$en { Translations$videoControls$pipErrors$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Requires Android 8.0 or newer' String get androidVersion => 'Requires Android 8.0 or newer'; /// en: 'Requires iOS 15.0 or newer' String get iosVersion => 'Requires iOS 15.0 or newer'; /// en: 'Picture-in-picture is disabled. Enable it in system settings.' String get permissionDisabled => 'Picture-in-picture is disabled. Enable it in system settings.'; /// en: 'Device doesn't support picture-in-picture mode' String get notSupported => 'Device doesn\'t support picture-in-picture mode'; /// en: 'Failed to switch video output for picture-in-picture' String get voSwitchFailed => 'Failed to switch video output for picture-in-picture'; /// en: 'Picture-in-picture failed to start' String get failed => 'Picture-in-picture failed to start'; /// en: 'An error occurred: ${error}' String unknown({required Object error}) => 'An error occurred: ${error}'; } // Path: libraries.tabs class Translations$libraries$tabs$en { Translations$libraries$tabs$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Recommended' String get recommended => 'Recommended'; /// en: 'Browse' String get browse => 'Browse'; /// en: 'Collections' String get collections => 'Collections'; /// en: 'Playlists' String get playlists => 'Playlists'; } // Path: libraries.groupings class Translations$libraries$groupings$en { Translations$libraries$groupings$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Grouping' String get title => 'Grouping'; /// en: 'All' String get all => 'All'; /// en: 'Movies' String get movies => 'Movies'; /// en: 'TV Shows' String get shows => 'TV Shows'; /// en: 'Seasons' String get seasons => 'Seasons'; /// en: 'Episodes' String get episodes => 'Episodes'; /// en: 'Artists' String get artists => 'Artists'; /// en: 'Albums' String get albums => 'Albums'; /// en: 'Tracks' String get tracks => 'Tracks'; /// en: 'Folders' String get folders => 'Folders'; } // Path: libraries.filterCategories class Translations$libraries$filterCategories$en { Translations$libraries$filterCategories$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Genre' String get genre => 'Genre'; /// en: 'Year' String get year => 'Year'; /// en: 'Content Rating' String get contentRating => 'Content Rating'; /// en: 'Tag' String get tag => 'Tag'; /// en: 'Unwatched' String get unwatched => 'Unwatched'; /// en: 'Unplayed' String get unplayed => 'Unplayed'; /// en: 'Favorites' String get favorites => 'Favorites'; } // Path: libraries.sortLabels class Translations$libraries$sortLabels$en { Translations$libraries$sortLabels$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Title' String get title => 'Title'; /// en: 'Date Added' String get dateAdded => 'Date Added'; /// en: 'Release Date' String get releaseDate => 'Release Date'; /// en: 'Rating' String get rating => 'Rating'; /// en: 'Community Rating' String get communityRating => 'Community Rating'; /// en: 'Critic Rating' String get criticRating => 'Critic Rating'; /// en: 'User Rating' String get userRating => 'User Rating'; /// en: 'Date Played' String get datePlayed => 'Date Played'; /// en: 'Play Count' String get playCount => 'Play Count'; /// en: 'Production Year' String get productionYear => 'Production Year'; /// en: 'Runtime' String get runtime => 'Runtime'; /// en: 'Official Rating' String get officialRating => 'Official Rating'; /// en: 'Premiere Date' String get premiereDate => 'Premiere Date'; /// en: 'Start Date' String get startDate => 'Start Date'; /// en: 'Air Time' String get airTime => 'Air Time'; /// en: 'Studio' String get studio => 'Studio'; /// en: 'Random' String get random => 'Random'; /// en: 'Date Shared' String get dateShared => 'Date Shared'; /// en: 'Latest Episode Air Date' String get latestEpisodeAirDate => 'Latest Episode Air Date'; /// en: 'Last Episode Date Added' String get lastEpisodeDateAdded => 'Last Episode Date Added'; } // Path: explore.rows class Translations$explore$rows$en { Translations$explore$rows$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Watchlist' String get watchlist => 'Watchlist'; /// en: 'Recommended Movies' String get recommendedMovies => 'Recommended Movies'; /// en: 'Recommended Shows' String get recommendedShows => 'Recommended Shows'; /// en: 'Trending Movies' String get trendingMovies => 'Trending Movies'; /// en: 'Trending Shows' String get trendingShows => 'Trending Shows'; /// en: 'Popular Movies' String get popularMovies => 'Popular Movies'; /// en: 'Popular Shows' String get popularShows => 'Popular Shows'; /// en: 'Trending Anime' String get trendingAnime => 'Trending Anime'; /// en: 'Suggested Anime' String get suggestedAnime => 'Suggested Anime'; /// en: 'Top Airing Anime' String get airingAnime => 'Top Airing Anime'; /// en: 'Most Popular Anime' String get popularAnime => 'Most Popular Anime'; /// en: 'Trending' String get trending => 'Trending'; /// en: 'Upcoming Movies' String get upcomingMovies => 'Upcoming Movies'; /// en: 'Upcoming Shows' String get upcomingShows => 'Upcoming Shows'; } // Path: explore.status class Translations$explore$status$en { Translations$explore$status$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Airing' String get airing => 'Airing'; /// en: 'Ended' String get ended => 'Ended'; /// en: 'Canceled' String get canceled => 'Canceled'; /// en: 'Upcoming' String get upcoming => 'Upcoming'; } // Path: explore.badge class Translations$explore$badge$en { Translations$explore$badge$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: '#${n} popular' String rankPopular({required Object n}) => '#${n} popular'; /// en: '#${n} airing' String rankAiring({required Object n}) => '#${n} airing'; /// en: '#${n} rated' String rankRated({required Object n}) => '#${n} rated'; /// en: '#${n} favorited' String rankFavorited({required Object n}) => '#${n} favorited'; /// en: '#${n} trending' String rankTrending({required Object n}) => '#${n} trending'; /// en: '#${n} in ${season}' String rankSeasonal({required Object n, required Object season}) => '#${n} in ${season}'; /// en: '${n} watching' String watchingNow({required Object n}) => '${n} watching'; /// en: 'Available' String get available => 'Available'; /// en: 'Partly available' String get partiallyAvailable => 'Partly available'; /// en: '4K available' String get availableIn4k => '4K available'; /// en: 'Requested' String get requested => 'Requested'; /// en: 'Pending approval' String get pendingApproval => 'Pending approval'; /// en: 'Processing' String get processing => 'Processing'; /// en: 'Declined' String get declined => 'Declined'; /// en: 'Request failed' String get requestFailed => 'Request failed'; /// en: '4K requested' String get requested4k => '4K requested'; /// en: '${available}/${total} seasons' String seasonsAvailable({required Object available, required Object total}) => '${available}/${total} seasons'; /// en: 'Ep ${episode} in ${duration}' String nextEpisodeIn({required Object episode, required Object duration}) => 'Ep ${episode} in ${duration}'; /// en: 'Next in ${duration}' String nextAiringIn({required Object duration}) => 'Next in ${duration}'; /// en: '${n} eps' String episodesShort({required Object n}) => '${n} eps'; /// en: '${n} min/ep' String minutesPerEpisode({required Object n}) => '${n} min/ep'; /// en: '18+' String get adult => '18+'; } // Path: explore.stats class Translations$explore$stats$en { Translations$explore$stats$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: '${n} listed' String listed({required Object n}) => '${n} listed'; /// en: '${n} watched today' String viewersDay({required Object n}) => '${n} watched today'; /// en: '${n} watched this week' String viewersWeek({required Object n}) => '${n} watched this week'; /// en: '${n} watched this month' String viewersMonth({required Object n}) => '${n} watched this month'; /// en: '${n} watched this year' String viewersYear({required Object n}) => '${n} watched this year'; /// en: '${n} viewers' String viewersAllTime({required Object n}) => '${n} viewers'; /// en: '${n} planning to watch' String planning({required Object n}) => '${n} planning to watch'; /// en: '${n} favorites' String favorited({required Object n}) => '${n} favorites'; /// en: '${percent} dropped it' String dropRate({required Object percent}) => '${percent} dropped it'; /// en: '(one) {${n} comment} (other) {${n} comments}' String comments({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} comment', other: '${n} comments', ); /// en: '${n} votes' String votes({required Object n}) => '${n} votes'; /// en: '${n} watching it' String watching({required Object n}) => '${n} watching it'; /// en: '${n} completed' String completed({required Object n}) => '${n} completed'; /// en: '${n} on hold' String onHold({required Object n}) => '${n} on hold'; /// en: '${n} dropped' String dropped({required Object n}) => '${n} dropped'; } // Path: explore.season class Translations$explore$season$en { Translations$explore$season$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Winter' String get winter => 'Winter'; /// en: 'Spring' String get spring => 'Spring'; /// en: 'Summer' String get summer => 'Summer'; /// en: 'Fall' String get fall => 'Fall'; /// en: '${season} ${year}' String withYear({required Object season, required Object year}) => '${season} ${year}'; } // Path: explore.format class Translations$explore$format$en { Translations$explore$format$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'TV' String get tv => 'TV'; /// en: 'TV Short' String get tvShort => 'TV Short'; /// en: 'Movie' String get movie => 'Movie'; /// en: 'Special' String get special => 'Special'; /// en: 'OVA' String get ova => 'OVA'; /// en: 'ONA' String get ona => 'ONA'; /// en: 'Music' String get music => 'Music'; /// en: 'Other' String get other => 'Other'; } // Path: explore.sourceMaterial class Translations$explore$sourceMaterial$en { Translations$explore$sourceMaterial$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Original' String get original => 'Original'; /// en: 'Manga' String get manga => 'Manga'; /// en: 'Light novel' String get lightNovel => 'Light novel'; /// en: 'Novel' String get novel => 'Novel'; /// en: 'Visual novel' String get visualNovel => 'Visual novel'; /// en: 'Game' String get game => 'Game'; /// en: 'Web comic' String get webComic => 'Web comic'; /// en: 'Music' String get musicRelease => 'Music'; /// en: 'Other' String get otherMedia => 'Other'; } // Path: explore.creditRole class Translations$explore$creditRole$en { Translations$explore$creditRole$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Director' String get director => 'Director'; /// en: 'Writer' String get writer => 'Writer'; /// en: 'Producer' String get producer => 'Producer'; /// en: 'Creator' String get creator => 'Creator'; /// en: 'Composer' String get composer => 'Composer'; } // Path: explore.ratingSource class Translations$explore$ratingSource$en { Translations$explore$ratingSource$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Critics' String get critic => 'Critics'; /// en: 'Audience' String get audience => 'Audience'; /// en: 'IMDb' String get imdb => 'IMDb'; /// en: 'TMDB' String get tmdb => 'TMDB'; /// en: 'Rotten Tomatoes' String get rottenTomatoes => 'Rotten Tomatoes'; /// en: 'Simkl' String get simkl => 'Simkl'; /// en: 'MyAnimeList' String get mal => 'MyAnimeList'; /// en: 'AniList' String get anilist => 'AniList'; /// en: 'Trakt' String get trakt => 'Trakt'; /// en: 'Rotten Tomatoes critics' String get rottenTomatoesCritic => 'Rotten Tomatoes critics'; /// en: 'Rotten Tomatoes audience' String get rottenTomatoesAudience => 'Rotten Tomatoes audience'; } // Path: explore.detail class Translations$explore$detail$en { Translations$explore$detail$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Original title' String get originalTitle => 'Original title'; /// en: 'Also known as' String get alsoKnownAs => 'Also known as'; /// en: 'Studios' String get studios => 'Studios'; /// en: 'Country' String get country => 'Country'; /// en: 'Language' String get language => 'Language'; /// en: 'Released' String get released => 'Released'; /// en: 'On disc' String get physicalRelease => 'On disc'; /// en: 'Ended' String get ended => 'Ended'; /// en: 'Added ${date}' String addedOn({required Object date}) => 'Added ${date}'; /// en: 'Your rating' String get yourRating => 'Your rating'; /// en: 'Budget' String get budget => 'Budget'; /// en: 'Box office' String get revenue => 'Box office'; /// en: 'Age guidance' String get contentAdvisory => 'Age guidance'; /// en: 'Tags' String get tags => 'Tags'; /// en: 'Show spoiler tags' String get revealSpoilerTags => 'Show spoiler tags'; /// en: 'Links' String get links => 'Links'; /// en: 'Watch on' String get watchOn => 'Watch on'; /// en: 'Watch trailer' String get watchTrailer => 'Watch trailer'; /// en: 'Open on ${site}' String openOn({required Object site}) => 'Open on ${site}'; /// en: 'Crew' String get crew => 'Crew'; /// en: 'Ratings' String get ratings => 'Ratings'; /// en: 'Schedule' String get schedule => 'Schedule'; /// en: '(one) {Recommended by ${n} user} (other) {Recommended by ${n} users}' String recommendedByUsers({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: 'Recommended by ${n} user', other: 'Recommended by ${n} users', ); /// en: 'Recommended by ${who}' String recommendedBy({required Object who}) => 'Recommended by ${who}'; /// en: 'Favorited by ${who}' String favoritedBy({required Object who}) => 'Favorited by ${who}'; /// en: '${n} not aired yet' String unairedEpisodes({required Object n}) => '${n} not aired yet'; /// en: 'Recommended by ${percent} of viewers' String recommendedByPercent({required Object percent}) => 'Recommended by ${percent} of viewers'; /// en: 'Related titles' String get relatedTitles => 'Related titles'; /// en: 'Background' String get background => 'Background'; } // Path: explore.relation class Translations$explore$relation$en { Translations$explore$relation$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Prequel' String get prequel => 'Prequel'; /// en: 'Sequel' String get sequel => 'Sequel'; /// en: 'Side story' String get sideStory => 'Side story'; /// en: 'Spin-off' String get spinOff => 'Spin-off'; /// en: 'Alternative version' String get alternativeVersion => 'Alternative version'; /// en: 'Summary' String get summary => 'Summary'; /// en: 'Parent story' String get parentStory => 'Parent story'; /// en: 'Adaptation' String get adaptation => 'Adaptation'; /// en: 'Related' String get other => 'Related'; } // Path: downloads.backgroundWarning class Translations$downloads$backgroundWarning$en { Translations$downloads$backgroundWarning$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Downloads will stop when you leave the app' String get bannerBlocked => 'Downloads will stop when you leave the app'; /// en: 'Background downloads may be limited' String get bannerDegraded => 'Background downloads may be limited'; /// en: 'Details' String get bannerAction => 'Details'; /// en: 'Background downloads are blocked' String get sheetTitle => 'Background downloads are blocked'; /// en: 'Background downloads may be limited' String get sheetTitleDegraded => 'Background downloads may be limited'; /// en: 'Android is preventing Plezy from downloading reliably in the background.' String get sheetIntro => 'Android is preventing Plezy from downloading reliably in the background.'; /// en: 'Your device is limiting when Plezy can download in the background.' String get sheetIntroDegraded => 'Your device is limiting when Plezy can download in the background.'; /// en: 'Plezy's background usage is restricted. Set its battery or background usage to "Unrestricted".' String get reasonBackgroundRestricted => 'Plezy\'s background usage is restricted. Set its battery or background usage to "Unrestricted".'; /// en: 'Android has put Plezy in a restricted standby state. Set its battery usage to "Unrestricted".' String get reasonStandbyRestricted => 'Android has put Plezy in a restricted standby state. Set its battery usage to "Unrestricted".'; /// en: 'Download notifications are turned off, so progress and controls may be unavailable.' String get reasonDownloadChannelBlocked => 'Download notifications are turned off, so progress and controls may be unavailable.'; /// en: 'Notifications are turned off. On Android 13 or newer, they are required for long background downloads.' String get reasonNotificationsDisabled => 'Notifications are turned off. On Android 13 or newer, they are required for long background downloads.'; /// en: 'Data Saver is on, which blocks background downloads on mobile data. Downloads should still run on Wi-Fi.' String get reasonDataSaver => 'Data Saver is on, which blocks background downloads on mobile data. Downloads should still run on Wi-Fi.'; /// en: 'Downloads repeatedly stopped while Plezy was in the background. Check Plezy's battery or background usage settings.' String get reasonOemUnknown => 'Downloads repeatedly stopped while Plezy was in the background. Check Plezy\'s battery or background usage settings.'; /// en: 'Open settings' String get openSettings => 'Open settings'; /// en: 'Device-specific help' String get stillNotWorking => 'Device-specific help'; /// en: 'See steps for your device, or send a log from Settings › View Logs if the issue continues.' String get stillNotWorkingDescription => 'See steps for your device, or send a log from Settings › View Logs if the issue continues.'; /// en: 'Downloads may not finish' String get dialogTitle => 'Downloads may not finish'; /// en: 'Download anyway' String get dialogDownloadAnyway => 'Download anyway'; /// en: 'Fix this first' String get dialogFixFirst => 'Fix this first'; /// en: 'Background downloads' String get statusTile => 'Background downloads'; /// en: 'Allowed to run in the background' String get statusOk => 'Allowed to run in the background'; /// en: 'Blocked by system settings' String get statusBlocked => 'Blocked by system settings'; /// en: 'Limited by system settings' String get statusDegraded => 'Limited by system settings'; /// en: 'Not checked yet' String get statusUnknown => 'Not checked yet'; /// en: 'Couldn't open system settings on this device' String get settingsUnavailable => 'Couldn\'t open system settings on this device'; /// en: 'Couldn't open dontkillmyapp.com on this device' String get linkUnavailable => 'Couldn\'t open dontkillmyapp.com on this device'; } // Path: companionRemote.session class Translations$companionRemote$session$en { Translations$companionRemote$session$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Starting remote server...' String get startingServer => 'Starting remote server...'; /// en: 'Host Address' String get hostAddress => 'Host Address'; /// en: 'Connected' String get connected => 'Connected'; /// en: 'Remote server active' String get serverRunning => 'Remote server active'; /// en: 'Remote server stopped' String get serverStopped => 'Remote server stopped'; /// en: 'Mobile devices on your network can connect to this app' String get serverRunningDescription => 'Mobile devices on your network can connect to this app'; /// en: 'Start the server to allow mobile devices to connect' String get serverStoppedDescription => 'Start the server to allow mobile devices to connect'; /// en: 'Use your mobile device to control this app' String get usePhoneToControl => 'Use your mobile device to control this app'; /// en: 'Start Server' String get startServer => 'Start Server'; /// en: 'Stop Server' String get stopServer => 'Stop Server'; /// en: 'Minimize' String get minimize => 'Minimize'; } // Path: companionRemote.pairing class Translations$companionRemote$pairing$en { Translations$companionRemote$pairing$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Plezy devices with the same Plex account appear here' String get discoveryDescription => 'Plezy devices with the same Plex account appear here'; /// en: '192.168.1.100:48632' String get hostAddressHint => '192.168.1.100:48632'; /// en: 'Connecting...' String get connecting => 'Connecting...'; /// en: 'Looking for devices...' String get searchingForDevices => 'Looking for devices...'; /// en: 'No devices found on your network' String get noDevicesFound => 'No devices found on your network'; /// en: 'Open Plezy on desktop and use the same Wi-Fi' String get noDevicesHint => 'Open Plezy on desktop and use the same Wi-Fi'; /// en: 'Available Devices' String get availableDevices => 'Available Devices'; /// en: 'Manual Connection' String get manualConnection => 'Manual Connection'; /// en: 'Couldn't start secure connection. Sign in to Plex first.' String get cryptoInitFailed => 'Couldn\'t start secure connection. Sign in to Plex first.'; /// en: 'Please enter host address' String get validationHostRequired => 'Please enter host address'; /// en: 'Format must be IP:port (e.g., 192.168.1.100:48632)' String get validationHostFormat => 'Format must be IP:port (e.g., 192.168.1.100:48632)'; /// en: 'Connection timed out. Use the same network on both devices.' String get connectionTimedOut => 'Connection timed out. Use the same network on both devices.'; /// en: 'Device not found. Make sure Plezy is running on the host.' String get sessionNotFound => 'Device not found. Make sure Plezy is running on the host.'; /// en: 'Authentication failed. Both devices need the same Plex account.' String get authFailed => 'Authentication failed. Both devices need the same Plex account.'; /// en: 'Failed to connect: ${error}' String failedToConnect({required Object error}) => 'Failed to connect: ${error}'; } // Path: companionRemote.remote class Translations$companionRemote$remote$en { Translations$companionRemote$remote$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Do you want to disconnect from the remote session?' String get disconnectConfirm => 'Do you want to disconnect from the remote session?'; /// en: 'Reconnecting...' String get reconnecting => 'Reconnecting...'; /// en: 'Attempt ${current} of 5' String attemptOf({required Object current}) => 'Attempt ${current} of 5'; /// en: 'Retry Now' String get retryNow => 'Retry Now'; /// en: 'Remote' String get tabRemote => 'Remote'; /// en: 'Play' String get tabPlay => 'Play'; /// en: 'More' String get tabMore => 'More'; /// en: 'Menu' String get menu => 'Menu'; /// en: 'Tab Navigation' String get tabNavigation => 'Tab Navigation'; /// en: 'Discover' String get tabDiscover => 'Discover'; /// en: 'Libraries' String get tabLibraries => 'Libraries'; /// en: 'Search' String get tabSearch => 'Search'; /// en: 'Downloads' String get tabDownloads => 'Downloads'; /// en: 'Settings' String get tabSettings => 'Settings'; /// en: 'Previous' String get previous => 'Previous'; /// en: 'Play/Pause' String get playPause => 'Play/Pause'; /// en: 'Next' String get next => 'Next'; /// en: 'Seek Back' String get seekBack => 'Seek Back'; /// en: 'Stop' String get stop => 'Stop'; /// en: 'Seek Fwd' String get seekForward => 'Seek Fwd'; /// en: 'Volume' String get volume => 'Volume'; /// en: 'Down' String get volumeDown => 'Down'; /// en: 'Up' String get volumeUp => 'Up'; /// en: 'Fullscreen' String get fullscreen => 'Fullscreen'; /// en: 'Subtitles' String get subtitles => 'Subtitles'; /// en: 'Audio' String get audio => 'Audio'; /// en: 'Search on desktop...' String get searchHint => 'Search on desktop...'; } // Path: companionRemote.errors class Translations$companionRemote$errors$en { Translations$companionRemote$errors$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'No network interface found' String get noNetworkInterface => 'No network interface found'; /// en: 'Authentication failed' String get authenticationFailed => 'Authentication failed'; /// en: 'Failed to start remote server: ${error}' String serverStartFailed({required Object error}) => 'Failed to start remote server: ${error}'; /// en: 'Failed to send remote command: ${error}' String commandFailed({required Object error}) => 'Failed to send remote command: ${error}'; /// en: 'Timed out joining session' String get joinTimedOut => 'Timed out joining session'; /// en: 'Failed to connect to any address' String get failedToConnectAnyAddress => 'Failed to connect to any address'; /// en: 'Connection lost after ${attempts} attempts' String connectionLostAfterAttempts({required Object attempts}) => 'Connection lost after ${attempts} attempts'; /// en: 'Connection lost' String get connectionLost => 'Connection lost'; } // Path: services.names class Translations$services$names$en { Translations$services$names$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'MyAnimeList' String get mal => 'MyAnimeList'; /// en: 'AniList' String get anilist => 'AniList'; /// en: 'Simkl' String get simkl => 'Simkl'; /// en: 'Seerr' String get seerr => 'Seerr'; } // Path: services.deviceCode class Translations$services$deviceCode$en { Translations$services$deviceCode$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Activate Plezy on ${service}' String title({required Object service}) => 'Activate Plezy on ${service}'; /// en: 'Visit ${url} and enter this code:' String body({required Object url}) => 'Visit ${url} and enter this code:'; /// en: 'Open ${service} to activate' String openToActivate({required Object service}) => 'Open ${service} to activate'; /// en: 'Copy activation code' String get copyCode => 'Copy activation code'; /// en: 'Waiting for authorization…' String get waitingForAuthorization => 'Waiting for authorization…'; /// en: 'Code copied' String get codeCopied => 'Code copied'; } // Path: services.oauthProxy class Translations$services$oauthProxy$en { Translations$services$oauthProxy$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Sign in to ${service}' String title({required Object service}) => 'Sign in to ${service}'; /// en: 'Scan this QR code or open the URL on any device.' String get body => 'Scan this QR code or open the URL on any device.'; /// en: 'Open ${service} to sign in' String openToSignIn({required Object service}) => 'Open ${service} to sign in'; /// en: 'Copy sign-in URL' String get copyUrl => 'Copy sign-in URL'; /// en: 'URL copied' String get urlCopied => 'URL copied'; } // Path: services.libraryFilter class Translations$services$libraryFilter$en { Translations$services$libraryFilter$en.internal(this._root); final Translations _root; // ignore: unused_field // Translations /// en: 'Library filter' String get title => 'Library filter'; /// en: 'Syncing all libraries' String get subtitleAllSyncing => 'Syncing all libraries'; /// en: 'Nothing syncing' String get subtitleNoneSyncing => 'Nothing syncing'; /// en: '${count} blocked' String subtitleBlocked({required Object count}) => '${count} blocked'; /// en: '${count} allowed' String subtitleAllowed({required Object count}) => '${count} allowed'; /// en: 'Filter mode' String get mode => 'Filter mode'; /// en: 'Blacklist' String get modeBlacklist => 'Blacklist'; /// en: 'Whitelist' String get modeWhitelist => 'Whitelist'; /// en: 'Sync every library except the ones checked below.' String get modeHintBlacklist => 'Sync every library except the ones checked below.'; /// en: 'Sync only the libraries checked below.' String get modeHintWhitelist => 'Sync only the libraries checked below.'; /// en: 'Libraries' String get libraries => 'Libraries'; /// en: 'No libraries available' String get noLibraries => 'No libraries available'; } /// The flat map containing all translations for locale . /// Only for edge cases! For simple maps, use the map function of this library. /// /// The Dart AOT compiler has issues with very large switch statements, /// so the map is split into smaller functions (512 entries each). extension on Translations { dynamic _flatMapFunction(String path) { return switch (path) { 'app.title' => 'Plezy', 'auth.signInWithPlex' => 'Sign in with Plex', 'auth.showQRCode' => 'Show QR Code', 'auth.authenticate' => 'Authenticate', 'auth.authenticationTimeout' => 'Authentication timed out. Please try again.', 'auth.scanQRToSignIn' => 'Scan this QR code to sign in', 'auth.waitingForAuth' => 'Waiting for authentication...\nSign in from your browser.', 'auth.useBrowser' => 'Use browser', 'auth.or' => 'or', 'auth.connectToJellyfin' => 'Connect to Jellyfin', 'auth.useQuickConnect' => 'Use Quick Connect', 'auth.quickConnectInstructions' => 'Open Quick Connect in Jellyfin and enter this code.', 'auth.quickConnectWaiting' => 'Waiting for approval…', 'auth.quickConnectCancel' => 'Cancel', 'auth.quickConnectExpired' => 'Quick Connect expired. Try again.', 'auth.localDataRecoveryRequired' => 'Plezy could not safely recover local sign-in and pending playback data. Please sign in again.', 'common.cancel' => 'Cancel', 'common.save' => 'Save', 'common.close' => 'Close', 'common.clear' => 'Clear', 'common.reset' => 'Reset', 'common.later' => 'Later', 'common.submit' => 'Submit', 'common.confirm' => 'Confirm', 'common.retry' => 'Retry', 'common.logout' => 'Log out', 'common.unknown' => 'Unknown', 'common.refresh' => 'Refresh', 'common.yes' => 'Yes', 'common.no' => 'No', 'common.delete' => 'Delete', 'common.edit' => 'Edit', 'common.shuffle' => 'Shuffle', 'common.addTo' => 'Add to...', 'common.createNew' => 'Create new', 'common.connect' => 'Connect', 'common.disconnect' => 'Disconnect', 'common.play' => 'Play', 'common.pause' => 'Pause', 'common.resume' => 'Resume', 'common.error' => 'Error', 'common.search' => 'Search', 'common.home' => 'Home', 'common.back' => 'Back', 'common.settings' => 'Settings', 'common.mute' => 'Mute', 'common.ok' => 'OK', 'common.off' => 'Off', 'common.seasonNumber' => ({required Object number}) => 'Season ${number}', 'common.episodeNumberTitle' => ({required Object number, required Object title}) => 'Episode ${number} - ${title}', 'common.chapterNumber' => ({required Object number}) => 'Chapter ${number}', 'common.reconnect' => 'Reconnect', 'common.viewAll' => 'View All', 'common.checkingNetwork' => 'Checking network...', 'common.loadingServers' => 'Loading servers...', 'common.connectingToServers' => 'Connecting to servers...', 'common.startingOfflineMode' => 'Starting offline mode...', 'common.loading' => 'Loading...', 'common.fullscreen' => 'Fullscreen', 'common.exitFullscreen' => 'Exit fullscreen', 'common.pressBackAgainToExit' => 'Press back again to exit', 'screens.licenses' => 'Licenses', 'screens.switchProfile' => 'Switch Profile', 'screens.subtitleStyling' => 'Subtitle Styling', 'screens.mpvConfig' => 'mpv.conf', 'screens.logs' => 'Logs', 'update.available' => 'Update Available', 'update.versionAvailable' => ({required Object version}) => 'Version ${version} is available', 'update.currentVersion' => ({required Object version}) => 'Current: ${version}', 'update.skipVersion' => 'Skip This Version', 'update.viewRelease' => 'View Release', 'update.latestVersion' => 'You are on the latest version', 'update.checkFailed' => 'Failed to check for updates', 'settings.title' => 'Settings', 'settings.supportDeveloper' => 'Support Plezy', 'settings.supportDeveloperDescription' => 'Donate via Liberapay to fund development', 'settings.language' => 'Language', 'settings.theme' => 'Theme', 'settings.appearance' => 'Appearance', 'settings.videoPlayback' => 'Video Playback', 'settings.videoPlaybackDescription' => 'Configure playback behavior', 'settings.advanced' => 'Advanced', 'settings.episodePosterMode' => 'Episode Poster Style', 'settings.seriesPoster' => 'Series Poster', 'settings.seasonPoster' => 'Season Poster', 'settings.episodeThumbnail' => 'Thumbnail', 'settings.showHeroSectionDescription' => 'Display featured content carousel on home screen', 'settings.secondsLabel' => 'Seconds', 'settings.minutesLabel' => 'Minutes', 'settings.secondsShort' => 's', 'settings.minutesShort' => 'm', 'settings.durationHint' => ({required Object min, required Object max}) => 'Enter duration (${min}-${max})', 'settings.systemTheme' => 'System', 'settings.lightTheme' => 'Light', 'settings.darkTheme' => 'Dark', 'settings.oledTheme' => 'OLED', 'settings.libraryDensity' => 'Library Density', 'settings.compact' => 'Compact', 'settings.comfortable' => 'Comfortable', 'settings.tvCornerSpotlightBackdrop' => 'Corner Spotlight Backdrop', 'settings.tvCornerSpotlightBackdropDescription' => 'Show spotlight artwork in the top-right corner instead of filling the screen', 'settings.viewMode' => 'View Mode', 'settings.gridView' => 'Grid', 'settings.listView' => 'List', 'settings.showHeroSection' => 'Show Hero Section', 'settings.continueWatchingAction' => 'Continue Watching Action', 'settings.continueWatchingPlay' => 'Play', 'settings.continueWatchingDetails' => 'Open Details', 'settings.episodeAction' => 'Episode Action', 'settings.episodePlay' => 'Play', 'settings.episodeDetails' => 'Open Details', 'settings.useGlobalHubs' => 'Use Home Layout', 'settings.useGlobalHubsDescription' => 'Show unified home hubs. Otherwise use library recommendations.', 'settings.showServerNameOnHubs' => 'Show Server Name on Hubs', 'settings.showServerNameOnHubsDescription' => 'Always show server names in hub titles.', 'settings.groupLibrariesByServer' => 'Group Libraries by Server', 'settings.groupLibrariesByServerDescription' => 'Group sidebar libraries under each media server.', 'settings.alwaysKeepSidebarOpen' => 'Always Keep Sidebar Open', 'settings.alwaysKeepSidebarOpenDescription' => 'Sidebar stays expanded and content area adjusts to fit', 'settings.showUnwatchedCount' => 'Show Unwatched Count', 'settings.showUnwatchedCountDescription' => 'Display unwatched episode count on shows and seasons', 'settings.showEpisodeNumberOnCards' => 'Show Episode Number on Cards', 'settings.showEpisodeNumberOnCardsDescription' => 'Show season and episode number on episode cards', 'settings.showSeasonPostersOnTabs' => 'Show Season Posters on Tabs', 'settings.showSeasonPostersOnTabsDescription' => 'Show each season\'s poster above its tab', 'settings.tvFullCardLayout' => 'Full TV Cards', 'settings.tvFullCardLayoutDescription' => 'Use image-only TV cards with actor names overlaid', 'settings.focusGlow' => 'Focus Glow', 'settings.focusGlowDescription' => 'Draw a soft glow around the focused card', 'settings.visualEffects' => 'Visual Effects', 'settings.visualEffectsAuto' => 'Auto', 'settings.visualEffectsAutoDescription' => 'Reduce effects automatically on low-power devices', 'settings.visualEffectsFull' => 'Full', 'settings.visualEffectsReduced' => 'Reduced', 'settings.visualEffectsReducedDescription' => 'Fewer animations and lower-resolution artwork', 'settings.hideSpoilers' => 'Hide Spoilers for Unwatched Episodes', 'settings.hideSpoilersDescription' => 'Blur thumbnails and descriptions for unwatched episodes', 'settings.playerBackend' => 'Player Backend', 'settings.exoPlayer' => 'ExoPlayer', 'settings.mpv' => 'mpv', 'settings.hardwareDecoding' => 'Hardware Decoding', 'settings.hardwareDecodingDescription' => 'Use hardware acceleration when available', 'settings.bufferSize' => 'Buffer Size', 'settings.bufferSizeMB' => ({required Object size}) => '${size}MB', 'settings.bufferSizeAuto' => 'Auto (Recommended)', 'settings.bufferSizeWarning' => ({required Object heap, required Object size}) => '${heap}MB memory available. A ${size}MB buffer may affect playback.', 'settings.defaultQualityTitle' => 'Default Quality', 'settings.musicQualityTitle' => 'Music Quality', 'settings.subtitleStyling' => 'Subtitle Styling', 'settings.subtitleStylingDescription' => 'Customize subtitle appearance', 'settings.smallSkipDuration' => 'Small Skip Duration', 'settings.largeSkipDuration' => 'Large Skip Duration', 'settings.rewindOnResume' => 'Rewind on Resume', 'settings.secondsUnit' => ({required Object seconds}) => '${seconds} seconds', 'settings.defaultSleepTimer' => 'Default Sleep Timer', 'settings.minutesUnit' => ({required Object minutes}) => '${minutes} minutes', 'settings.rememberTrackSelections' => 'Remember track selections per show/movie', 'settings.rememberTrackSelectionsDescription' => 'Remember audio and subtitle choices per title', 'settings.showChapterMarkersOnTimeline' => 'Show chapter markers on seek bar', 'settings.showChapterMarkersOnTimelineDescription' => 'Segment the seek bar at chapter boundaries', 'settings.clickVideoTogglesPlayback' => 'Click on video to toggle play/pause', 'settings.clickVideoTogglesPlaybackDescription' => 'Click video to play/pause instead of showing controls.', 'settings.videoPlayerControls' => 'Video Player Controls', 'settings.keyboardShortcuts' => 'Keyboard Shortcuts', 'settings.keyboardShortcutsDescription' => 'Customize keyboard shortcuts', 'settings.videoPlayerNavigation' => 'Video Player Navigation', 'settings.videoPlayerNavigationDescription' => 'Use arrow keys to navigate video player controls', 'settings.watchTogetherRelay' => 'Watch Together Relay', 'settings.watchTogetherRelayDescription' => 'Set a custom relay. Everyone must use the same server.', 'settings.watchTogetherRelayHint' => 'https://my-relay.example.com', 'settings.watchTogetherRelayInvalid' => 'Enter a valid HTTP or HTTPS relay base URL.', 'settings.crashReporting' => 'Crash Reporting', 'settings.crashReportingDescription' => 'Send crash reports to help improve the app', 'settings.debugLogging' => 'Debug Logging', 'settings.debugLoggingDescription' => 'Enable detailed logging for troubleshooting', 'settings.viewLogs' => 'View Logs', 'settings.viewLogsDescription' => 'View application logs', 'settings.clearImageCache' => 'Clear Image Cache', 'settings.clearImageCacheDescription' => 'Clear cached artwork and thumbnails. Images may load slower until downloaded again.', 'settings.clearImageCacheSuccess' => 'Image cache cleared successfully', 'settings.resetSettings' => 'Reset Settings', 'settings.resetSettingsDescription' => 'Restore default settings. This can\'t be undone.', 'settings.resetSettingsSuccess' => 'Settings reset successfully', 'settings.backup' => 'Backup', 'settings.exportSettings' => 'Export Settings', 'settings.exportSettingsDescription' => 'Save your preferences to a file', 'settings.exportSettingsSuccess' => 'Settings exported', 'settings.importSettings' => 'Import Settings', 'settings.importSettingsDescription' => 'Restore preferences from a file', 'settings.importSettingsConfirm' => 'This will replace your current settings. Continue?', 'settings.importSettingsSuccess' => 'Settings imported', 'settings.importSettingsInvalidFile' => 'This file isn\'t a valid Plezy settings export', 'settings.importSettingsNoUser' => 'Sign in before importing settings', 'settings.shortcutsReset' => 'Shortcuts reset to defaults', 'settings.about' => 'About', 'settings.aboutDescription' => 'App information and licenses', 'settings.updates' => 'Updates', 'settings.updateAvailable' => 'Update Available', 'settings.checkForUpdates' => 'Check for Updates', 'settings.autoCheckUpdatesOnStartup' => 'Automatically check for updates on startup', 'settings.autoCheckUpdatesOnStartupDescription' => 'Notify when an update is available at launch', 'settings.validationErrorEnterNumber' => 'Please enter a valid number', 'settings.validationErrorDuration' => ({required Object min, required Object max, required Object unit}) => 'Duration must be between ${min} and ${max} ${unit}', 'settings.shortcutAlreadyAssigned' => ({required Object action}) => 'Shortcut already assigned to ${action}', 'settings.shortcutUpdated' => ({required Object action}) => 'Shortcut updated for ${action}', 'settings.saveFailed' => 'Could not save changes. Try again.', 'settings.autoSkip' => 'Auto Skip', 'settings.autoSkipIntro' => 'Auto Skip Intro', 'settings.autoSkipIntroDescription' => 'Automatically skip intro markers after a few seconds', 'settings.autoSkipCredits' => 'Auto Skip Credits', 'settings.autoSkipCreditsDescription' => 'Automatically skip credits and play next episode', 'settings.forceSkipMarkerFallback' => 'Force Fallback Markers', 'settings.forceSkipMarkerFallbackDescription' => 'Use chapter title patterns even when Plex has markers', 'settings.autoSkipDelay' => 'Auto Skip Delay', 'settings.autoSkipDelayDescription' => ({required Object seconds}) => 'Wait ${seconds} seconds before auto-skipping', 'settings.introPattern' => 'Intro Marker Pattern', 'settings.introPatternDescription' => 'Regex pattern to match intro markers in chapter titles', 'settings.creditsPattern' => 'Credits Marker Pattern', 'settings.creditsPatternDescription' => 'Regex pattern to match credits markers in chapter titles', 'settings.invalidRegex' => 'Invalid regular expression', 'settings.regex' => 'Regular expression', 'settings.downloads' => 'Downloads', 'settings.downloadLocationDescription' => 'Choose where to store downloaded content', 'settings.downloadLocationDefault' => 'Default (App Storage)', 'settings.downloadLocationCustom' => 'Custom Location', 'settings.selectFolder' => 'Select Folder', 'settings.resetToDefault' => 'Reset to Default', 'settings.currentPath' => ({required Object path}) => 'Current: ${path}', 'settings.downloadLocationChanged' => 'Download location changed', 'settings.downloadLocationReset' => 'Download location reset to default', 'settings.downloadLocationInvalid' => 'Selected folder is not writable', 'settings.downloadLocationPickerUnavailable' => 'Folder selection is not available on this device', 'settings.downloadOnWifiOnly' => 'Download on Wi-Fi only', 'settings.downloadOnWifiOnlyDescription' => 'Prevent downloads when on cellular data', 'settings.autoRemoveWatchedDownloads' => 'Auto-remove watched downloads', 'settings.autoRemoveWatchedDownloadsDescription' => 'Delete watched downloads automatically', 'settings.cellularDownloadBlocked' => 'Downloads are blocked on cellular. Use Wi-Fi or change the setting.', 'settings.maxVolume' => 'Maximum Volume', 'settings.maxVolumeDescription' => 'Allow volume boost above 100% for quiet media', 'settings.maxVolumePercent' => ({required Object percent}) => '${percent}%', 'settings.discordRichPresence' => 'Discord Rich Presence', 'settings.discordRichPresenceDescription' => 'Show what you\'re watching on Discord', 'settings.services' => 'Services', 'settings.servicesDescription' => 'Connect Trakt, MyAnimeList, Seerr, and more', 'settings.manageLibrariesDescription' => 'Reorder and hide libraries', 'settings.companionRemoteServer' => 'Companion Remote Server', 'settings.companionRemoteServerDescription' => 'Allow mobile devices on your network to control this app', 'settings.autoPip' => 'Auto Picture-in-Picture', 'settings.autoPipDescription' => 'Automatically enter picture-in-picture when you leave the app during playback', 'settings.matchContentFrameRate' => 'Match Content Frame Rate', 'settings.matchContentFrameRateDescription' => 'Match display refresh rate to video content', 'settings.matchRefreshRate' => 'Match Refresh Rate', 'settings.matchRefreshRateDescription' => 'Match display refresh rate in fullscreen', 'settings.matchDynamicRange' => 'Match Dynamic Range', 'settings.matchDynamicRangeDescription' => 'Switch HDR on for HDR content, then back to SDR', 'settings.displaySwitchDelay' => 'Display Switch Delay', 'settings.tunneledPlayback' => 'Tunneled Playback', 'settings.tunneledPlaybackDescription' => 'Use video tunneling. Disable if HDR playback shows black video.', 'settings.audioPassthrough' => 'Audio Passthrough', 'settings.audioPassthroughDescription' => 'Send Dolby/DTS audio to your receiver or TV without re-encoding, preserving surround sound. Turn off if you have no sound.', 'settings.audioPassthroughDescriptionAppleTv' => 'Use Apple\'s native Dolby decoder for Dolby Digital Plus, including Atmos. DTS and TrueHD still play as multichannel PCM. Turn off if you have no sound.', 'settings.audioDownmix' => 'Downmix to Stereo', 'settings.audioDownmixDescription' => 'Mix surround audio down to two channels for stereo speakers or headphones', 'settings.downmixCenterBoost' => 'Center Channel Boost', 'settings.downmixCenterBoostValue' => ({required Object db}) => '${db} dB', 'settings.downmixCenterBoostLabel' => 'Boost (dB)', 'settings.downmixCenterBoostShort' => 'dB', 'settings.audioDownmixNormalize' => 'Normalize Volume on Downmix', 'settings.audioDownmixNormalizeDescription' => 'Lower the mix to prevent clipping. Turn off to keep the original volume (may distort loud scenes).', 'settings.atmosDiagnostics' => 'Atmos Output Test', 'settings.atmosDiagnosticsDescription' => 'Diagnose Dolby Atmos output by playing test signals through the system player', 'settings.atmosTestHlsAtmos' => 'Apple Atmos stream', 'settings.atmosTestHlsAtmosDescription' => 'Known-good Dolby Atmos stream. The receiver should show Dolby Atmos.', 'settings.atmosTestHlsControl' => 'Apple surround stream', 'settings.atmosTestHlsControlDescription' => 'Non-Atmos control stream. The receiver should show surround without Atmos.', 'settings.atmosTestRawStream' => 'Raw EAC3 stream', 'settings.atmosTestRawStreamDescription' => 'Streams the test file exactly like in-player Atmos playback. Needs the test file URL.', 'settings.atmosTestRawFile' => 'Raw EAC3 file', 'settings.atmosTestRawFileDescription' => 'Plays the test file with a known length. Needs the test file URL.', 'settings.atmosTestAsbarNative' => 'Sample-buffer renderer (native)', 'settings.atmosTestAsbarNativeDescription' => 'Feeds the file\'s untouched compressed audio straight to the system renderer. Needs the test file URL.', 'settings.atmosTestAsbarGenerated' => 'Sample-buffer renderer (rebuilt)', 'settings.atmosTestAsbarGeneratedDescription' => 'Same, but with the audio description rebuilt the way playback builds it. Needs the test file URL.', 'settings.atmosTestSessionMode' => 'Use movie playback session mode', 'settings.atmosTestSessionModeDescription' => 'Off uses the mode Dolby documents. On uses the mode playback used previously.', 'settings.atmosTestShowRoutePicker' => 'Choose AirPlay output', 'settings.atmosTestHideRoutePicker' => 'Hide AirPlay output picker', 'settings.atmosTestRoutePickerDescription' => 'Send the test to an AirPlay receiver. Only AirPlay reports the resolved audio mode.', 'settings.atmosTestStop' => 'Stop test', 'settings.atmosTestUrl' => 'Test file URL', 'settings.atmosTestUrlDescription' => 'HTTP URL of a raw .ec3 Dolby Atmos file (e.g. extracted with ffmpeg)', 'settings.atmosTestUrlMissing' => 'Set the test file URL first', 'settings.atmosTestStatus' => 'Status', 'settings.dvConversionMode' => 'Dolby Vision Conversion', 'settings.dvConversionModeDescription' => 'Choose how ExoPlayer handles Dolby Vision Profile 7 files.', 'settings.dvConversionAuto' => 'Auto', 'settings.dvConversionNative' => 'Native / Disabled', 'settings.dvConversionDv81' => 'P7 → P8.1', 'settings.dvConversionHevcStrip' => 'P7 → HEVC', 'settings.dvConversionAutoDescription' => 'Use device capability detection and normal fallback behavior', 'settings.dvConversionNativeDescription' => 'Force native DV7 and suppress DV conversion retry', 'settings.dvConversionDv81Description' => 'Force inline RPU conversion to Dolby Vision profile 8.1', 'settings.dvConversionHevcStripDescription' => 'Strip Dolby Vision RPU/EL layers and present plain HEVC', 'settings.requireProfileSelectionOnOpen' => 'Ask for profile on app open', 'settings.requireProfileSelectionOnOpenDescription' => 'Show profile selection every time the app is opened', 'settings.forceTvMode' => 'Force TV mode', 'settings.forceTvModeDescription' => 'Force TV layout. For devices that don\'t auto-detect. Requires restart.', 'settings.startInFullscreen' => 'Start in fullscreen', 'settings.startInFullscreenDescription' => 'Open Plezy in fullscreen mode at launch', 'settings.exitFullscreenOnPlayerClose' => 'Exit fullscreen on player close', 'settings.exitFullscreenOnPlayerCloseDescription' => 'Automatically exit fullscreen when closing the video player', 'settings.autoHidePerformanceOverlay' => 'Auto-Hide Performance Overlay', 'settings.autoHidePerformanceOverlayDescription' => 'Fade the performance overlay with the playback controls', 'settings.showNavBarLabels' => 'Show Navigation Bar Labels', 'settings.showNavBarLabelsDescription' => 'Display text labels under navigation bar icons', 'settings.startupSection' => 'Startup Section', 'settings.liveTvDefaultFavorites' => 'Default to Favorite Channels', 'settings.liveTvDefaultFavoritesDescription' => 'Show only favorite channels when opening Live TV', 'settings.display' => 'Display', 'settings.homeScreen' => 'Home Screen', 'settings.navigation' => 'Navigation', 'settings.window' => 'Window', 'settings.content' => 'Content', 'settings.player' => 'Player', 'settings.subtitlesAndConfig' => 'Subtitles & Configuration', 'settings.seekAndTiming' => 'Seek & Timing', 'settings.behavior' => 'Behavior', 'search.hint' => 'Search movies, shows, music...', 'search.tryDifferentTerm' => 'Try a different search term', 'search.searchYourMedia' => 'Search your media', 'search.enterTitleActorOrKeyword' => 'Enter a title, actor, or keyword', 'hotkeys.setShortcutFor' => ({required Object actionName}) => 'Set Shortcut for ${actionName}', 'hotkeys.clearShortcut' => 'Clear shortcut', 'hotkeys.noShortcutSet' => 'No shortcut set', 'hotkeys.currentShortcut' => 'Current shortcut:', 'hotkeys.pressToRecord' => 'Select to record a shortcut', 'hotkeys.recordingShortcut' => 'Press the shortcut now', 'hotkeys.actions.playPause' => 'Play/Pause', 'hotkeys.actions.volumeUp' => 'Volume Up', 'hotkeys.actions.volumeDown' => 'Volume Down', 'hotkeys.actions.seekForward' => ({required Object seconds}) => 'Seek Forward (${seconds}s)', 'hotkeys.actions.seekBackward' => ({required Object seconds}) => 'Seek Backward (${seconds}s)', 'hotkeys.actions.fullscreenToggle' => 'Toggle Fullscreen', 'hotkeys.actions.muteToggle' => 'Toggle Mute', 'hotkeys.actions.subtitleToggle' => 'Toggle Subtitles', 'hotkeys.actions.audioTrackNext' => 'Next Audio Track', 'hotkeys.actions.subtitleTrackNext' => 'Next Subtitle Track', 'hotkeys.actions.chapterNext' => 'Next Chapter', 'hotkeys.actions.chapterPrevious' => 'Previous Chapter', 'hotkeys.actions.episodeNext' => 'Next Episode', 'hotkeys.actions.episodePrevious' => 'Previous Episode', 'hotkeys.actions.speedIncrease' => 'Increase Speed', 'hotkeys.actions.speedDecrease' => 'Decrease Speed', 'hotkeys.actions.speedReset' => 'Reset Speed', 'hotkeys.actions.zoomIn' => 'Zoom In', 'hotkeys.actions.zoomOut' => 'Zoom Out', 'hotkeys.actions.zoomReset' => 'Reset Zoom', 'hotkeys.actions.subSeekNext' => 'Seek to Next Subtitle', 'hotkeys.actions.subSeekPrev' => 'Seek to Previous Subtitle', 'hotkeys.actions.shaderToggle' => 'Toggle Shaders', 'hotkeys.actions.skipMarker' => 'Skip Intro/Credits', 'hotkeys.actions.screenshot' => 'Take Screenshot', 'fileInfo.title' => 'File Info', 'fileInfo.overview' => 'Overview', 'fileInfo.video' => 'Video', 'fileInfo.audio' => 'Audio', 'fileInfo.subtitles' => 'Subtitles', 'fileInfo.images' => 'Embedded Images', 'fileInfo.dataStreams' => 'Data Streams', 'fileInfo.lyrics' => 'Lyrics', 'fileInfo.file' => 'File', 'fileInfo.attachments' => 'Attachments', 'fileInfo.delivery' => 'Delivery', 'fileInfo.versionCounter' => ({required Object index, required Object count}) => 'Version ${index} of ${count}', 'fileInfo.fileCounter' => ({required Object index, required Object count}) => 'File ${index} of ${count}', 'fileInfo.noStreams' => 'The server reported no streams for this file.', 'fileInfo.copyPath' => 'Copy path', 'fileInfo.pathCopied' => 'File path copied', 'fileInfo.codec' => 'Codec', 'fileInfo.codecTag' => 'Codec Tag', 'fileInfo.resolution' => 'Resolution', 'fileInfo.codedResolution' => 'Coded Resolution', 'fileInfo.bitrate' => 'Bitrate', 'fileInfo.frameRate' => 'Frame Rate', 'fileInfo.rotation' => 'Rotation', 'fileInfo.comment' => 'Comment', 'fileInfo.audioDescription' => 'Audio Description', 'fileInfo.headerCompression' => 'Header Compression', 'fileInfo.sidecarFile' => 'Sidecar File', 'fileInfo.transportTimestamp' => 'Transport Timestamp', 'fileInfo.displayOffset' => 'Display Offset', 'fileInfo.previewFailureCode' => 'Preview Failure Code', 'fileInfo.previewRetries' => 'Preview Retries', 'fileInfo.aspectRatio' => 'Aspect Ratio', 'fileInfo.pixelAspectRatio' => 'Pixel Aspect Ratio', 'fileInfo.profile' => 'Profile', 'fileInfo.level' => 'Level', 'fileInfo.bitDepth' => 'Bit Depth', 'fileInfo.pixelFormat' => 'Pixel Format', 'fileInfo.colorSpace' => 'Color Space', 'fileInfo.colorRange' => 'Color Range', 'fileInfo.colorPrimaries' => 'Color Primaries', 'fileInfo.colorTransfer' => 'Color Transfer', 'fileInfo.chromaSubsampling' => 'Chroma Subsampling', 'fileInfo.chromaLocation' => 'Chroma Location', 'fileInfo.scanType' => 'Scan Type', 'fileInfo.interlaced' => 'Interlaced', 'fileInfo.anamorphic' => 'Anamorphic', 'fileInfo.referenceFrames' => 'Reference Frames', 'fileInfo.dynamicRange' => 'Dynamic Range', 'fileInfo.dolbyVision' => 'Dolby Vision', 'fileInfo.dolbyVisionLevel' => 'Dolby Vision Level', 'fileInfo.dolbyVisionVersion' => 'Dolby Vision Version', 'fileInfo.dolbyVisionLayers' => 'Dolby Vision Layers', 'fileInfo.baseLayerCompatibility' => 'Base Layer Compatibility', 'fileInfo.avcBitstream' => 'AVC Bitstream', 'fileInfo.nalLengthSize' => 'NAL Length Size', 'fileInfo.scalingMatrix' => 'Custom Scaling Matrix', 'fileInfo.streamIdentifier' => 'Stream Identifier', 'fileInfo.streamIndex' => 'Stream Index', 'fileInfo.streamId' => 'Stream ID', 'fileInfo.language' => 'Language', 'fileInfo.languageCode' => 'Language Code', 'fileInfo.streamTitle' => 'Track Title', 'fileInfo.channels' => 'Channels', 'fileInfo.sampleRate' => 'Sample Rate', 'fileInfo.spatialAudio' => 'Spatial Audio', 'fileInfo.textBased' => 'Text Based', 'fileInfo.subtitleFormat' => 'Sidecar Format', 'fileInfo.provider' => 'Provider', 'fileInfo.matchScore' => 'Match Score', 'fileInfo.externalDelivery' => 'Can Be Served Separately', 'fileInfo.sidecarPath' => 'Sidecar Path', 'fileInfo.sourceStream' => 'Copied From', 'fileInfo.temporary' => 'Temporary', 'fileInfo.timeBase' => 'Time Base', 'fileInfo.overallBitrate' => 'Overall Bitrate', 'fileInfo.path' => 'Path', 'fileInfo.fileName' => 'File Name', 'fileInfo.size' => 'Size', 'fileInfo.totalSize' => 'Total Size', 'fileInfo.container' => 'Container', 'fileInfo.duration' => 'Duration', 'fileInfo.previewThumbnails' => 'Preview Thumbnails', 'fileInfo.previewIndex' => 'Preview Index', 'fileInfo.packetLength' => 'Packet Length', 'fileInfo.filePresent' => 'File Present', 'fileInfo.fileReadable' => 'Readable by Server', 'fileInfo.streamPath' => 'Stream Path', 'fileInfo.optimizedForStreaming' => 'Optimized for Streaming', 'fileInfo.has64bitOffsets' => '64-bit Offsets', 'fileInfo.protocol' => 'Protocol', 'fileInfo.mediaType' => 'Media Type', 'fileInfo.sourceKind' => 'Source Kind', 'fileInfo.optimizedVersion' => 'Optimized Version', 'fileInfo.optimizationTarget' => 'Optimization Target', 'fileInfo.deletedAt' => 'Deleted', 'fileInfo.remoteSource' => 'Remote Source', 'fileInfo.infiniteStream' => 'Infinite Stream', 'fileInfo.directPlay' => 'Direct Play', 'fileInfo.directStream' => 'Direct Stream', 'fileInfo.transcoding' => 'Transcoding', 'fileInfo.etag' => 'ETag', 'fileInfo.versionId' => 'Version ID', 'fileInfo.fileId' => 'File ID', 'fileInfo.defaultAudioTrack' => 'Default Audio Track', 'fileInfo.defaultSubtitleTrack' => 'Default Subtitle Track', 'fileInfo.subtitlesOff' => 'Off', 'fileInfo.flagDefault' => 'Default', 'fileInfo.flagForced' => 'Forced', 'fileInfo.flagSelected' => 'Selected', 'fileInfo.flagExternal' => 'External', 'fileInfo.flagHearingImpaired' => 'Hearing impaired', 'fileInfo.flagDub' => 'Dub', 'fileInfo.flagOriginal' => 'Original', 'mediaMenu.markAsWatched' => 'Mark as Watched', 'mediaMenu.markAsUnwatched' => 'Mark as Unwatched', 'mediaMenu.removeFromContinueWatching' => 'Remove from Continue Watching', 'mediaMenu.viewDetails' => 'View details', 'mediaMenu.goToSeries' => 'Go to series', 'mediaMenu.shufflePlay' => 'Shuffle Play', 'mediaMenu.shuffleNotAvailableOffline' => 'Shuffle not available offline', 'mediaMenu.fileInfo' => 'File Info', 'mediaMenu.deleteFromServer' => 'Delete from server', 'mediaMenu.confirmDelete' => 'Delete this media and its files from your server?', 'mediaMenu.deleteMultipleWarning' => 'This includes all episodes and their files.', 'mediaMenu.mediaDeletedSuccessfully' => 'Media item deleted successfully', 'mediaMenu.mediaFailedToDelete' => 'Failed to delete media item', 'mediaMenu.rate' => 'Rate', 'mediaMenu.playFromBeginning' => 'Play from Beginning', 'mediaMenu.playVersion' => 'Play Version...', 'rateSheet.title' => 'Rate', 'rateSheet.server' => 'Server', 'rateSheet.favorite' => 'Favorite', 'rateSheet.favorited' => 'Favorited', 'rateSheet.saved' => 'Saved', 'rateSheet.notAvailable' => 'No match found', 'rateSheet.noConnectedServices' => 'Connect a service in Settings to rate there.', 'accessibility.mediaCardMovie' => ({required Object title}) => '${title}, movie', 'accessibility.mediaCardShow' => ({required Object title}) => '${title}, TV show', 'accessibility.mediaCardEpisode' => ({required Object title, required Object episodeInfo}) => '${title}, ${episodeInfo}', 'accessibility.mediaCardSeason' => ({required Object title, required Object seasonInfo}) => '${title}, ${seasonInfo}', 'accessibility.mediaCardWatched' => 'watched', 'accessibility.mediaCardPartiallyWatched' => ({required Object percent}) => '${percent} percent watched', 'accessibility.mediaCardUnwatched' => 'unwatched', 'accessibility.tapToPlay' => 'Tap to play', 'accessibility.decrease' => 'Decrease', 'accessibility.increase' => 'Increase', 'accessibility.decreaseValue' => ({required Object label}) => 'Decrease ${label}', 'accessibility.increaseValue' => ({required Object label}) => 'Increase ${label}', 'accessibility.hue' => 'Hue', 'accessibility.saturation' => 'Saturation', _ => null, } ?? switch (path) { 'accessibility.brightness' => 'Brightness', 'accessibility.hexColor' => 'Hex color', 'accessibility.expandText' => 'Expand text', 'accessibility.collapseText' => 'Collapse text', 'accessibility.alphabetNavigation' => 'Alphabet navigation', 'accessibility.alphabetScrollHint' => 'Swipe up or down to move by letter', 'accessibility.rowColumnPosition' => ({required Object row, required Object rowCount, required Object column, required Object columnCount}) => 'Row ${row} of ${rowCount}, column ${column} of ${columnCount}', 'accessibility.rowPosition' => ({required Object row, required Object rowCount}) => 'Row ${row} of ${rowCount}', 'tooltips.shufflePlay' => 'Shuffle play', 'tooltips.playTrailer' => 'Play trailer', 'tooltips.markAsWatched' => 'Mark as watched', 'tooltips.markAsUnwatched' => 'Mark as unwatched', 'audioTracks.track' => ({required Object n}) => 'Audio Track ${n}', 'videoControls.audioLabel' => 'Audio', 'videoControls.subtitlesLabel' => 'Subtitles', 'videoControls.resetToZero' => 'Reset to 0ms', 'videoControls.addTime' => ({required Object amount, required Object unit}) => '+${amount}${unit}', 'videoControls.minusTime' => ({required Object amount, required Object unit}) => '-${amount}${unit}', 'videoControls.playsLater' => ({required Object label}) => '${label} plays later', 'videoControls.playsEarlier' => ({required Object label}) => '${label} plays earlier', 'videoControls.noOffset' => 'No offset', 'videoControls.letterbox' => 'Letterbox', 'videoControls.fillScreen' => 'Fill screen', 'videoControls.stretch' => 'Stretch', 'videoControls.lockRotation' => 'Lock rotation', 'videoControls.unlockRotation' => 'Unlock rotation', 'videoControls.timerActive' => 'Timer Active', 'videoControls.playbackWillPauseIn' => ({required Object duration}) => 'Playback will pause in ${duration}', 'videoControls.sleepTimerEndOfVideo' => 'End of current video', 'videoControls.sleepTimerStopAtHeader' => 'Stop at', 'videoControls.sleepTimerDurationHeader' => 'Timer', 'videoControls.playbackWillPauseAtEnd' => 'Playback will pause at the end of this video', 'videoControls.stillWatching' => 'Still watching?', 'videoControls.pausingIn' => ({required Object seconds}) => 'Pausing in ${seconds}s', 'videoControls.continueWatching' => 'Continue', 'videoControls.autoPlayNext' => 'Auto-Play Next', 'videoControls.playNext' => 'Play Next', 'videoControls.playButton' => 'Play', 'videoControls.pauseButton' => 'Pause', 'videoControls.playbackPaused' => 'Paused', 'videoControls.playbackResumed' => 'Playing', 'videoControls.showPlaybackControls' => 'Show playback controls', 'videoControls.hidePlaybackControls' => 'Hide playback controls', 'videoControls.seekBackwardButton' => ({required Object seconds}) => 'Seek backward ${seconds} seconds', 'videoControls.seekForwardButton' => ({required Object seconds}) => 'Seek forward ${seconds} seconds', 'videoControls.previousButton' => 'Previous episode', 'videoControls.nextButton' => 'Next episode', 'videoControls.previousChapterButton' => 'Previous chapter', 'videoControls.nextChapterButton' => 'Next chapter', 'videoControls.muteButton' => 'Mute', 'videoControls.unmuteButton' => 'Unmute', 'videoControls.settingsButton' => 'Playback Settings', 'videoControls.tracksButton' => 'Audio & Subtitles', 'videoControls.chaptersButton' => 'Chapters', 'videoControls.versionQualityButton' => 'Version & Quality', 'videoControls.versionColumnHeader' => 'Version', 'videoControls.qualityColumnHeader' => 'Quality', 'videoControls.qualityOriginal' => 'Original', 'videoControls.qualityPresetLabel' => ({required Object resolution, required Object bitrate}) => '${resolution}p ${bitrate} Mbps', 'videoControls.transcodeUnavailableFallback' => 'Transcoding unavailable — playing original quality', 'videoControls.subtitleUnavailableFallback' => 'Selected subtitles could not be loaded — continuing without subtitles', 'videoControls.pipButton' => 'Picture-in-Picture mode', 'videoControls.aspectRatioButton' => 'Aspect ratio', 'videoControls.ambientLighting' => 'Ambient lighting', 'videoControls.fullscreenButton' => 'Enter fullscreen', 'videoControls.exitFullscreenButton' => 'Exit fullscreen', 'videoControls.alwaysOnTopButton' => 'Always on top', 'videoControls.rotationLockButton' => 'Rotation lock', 'videoControls.lockScreen' => 'Lock screen', 'videoControls.screenLockButton' => 'Screen lock', 'videoControls.longPressToUnlock' => 'Long press to unlock', 'videoControls.timelineSlider' => 'Video timeline', 'videoControls.volumeSlider' => 'Volume level', 'videoControls.endsAt' => ({required Object time}) => 'Ends at ${time}', 'videoControls.pipActive' => 'Playing in Picture-in-Picture', 'videoControls.pipFailed' => 'Picture-in-picture failed to start', 'videoControls.screenshotSaved' => 'Screenshot saved', 'videoControls.zoomPercent' => ({required Object percent}) => 'Zoom ${percent}%', 'videoControls.pipErrors.androidVersion' => 'Requires Android 8.0 or newer', 'videoControls.pipErrors.iosVersion' => 'Requires iOS 15.0 or newer', 'videoControls.pipErrors.permissionDisabled' => 'Picture-in-picture is disabled. Enable it in system settings.', 'videoControls.pipErrors.notSupported' => 'Device doesn\'t support picture-in-picture mode', 'videoControls.pipErrors.voSwitchFailed' => 'Failed to switch video output for picture-in-picture', 'videoControls.pipErrors.failed' => 'Picture-in-picture failed to start', 'videoControls.pipErrors.unknown' => ({required Object error}) => 'An error occurred: ${error}', 'videoControls.chapters' => 'Chapters', 'videoControls.noChaptersAvailable' => 'No chapters available', 'videoControls.queue' => 'Queue', 'videoControls.noQueueItems' => 'No items in queue', 'videoControls.searchSubtitles' => 'Search Subtitles', 'videoControls.language' => 'Language', 'videoControls.noSubtitlesFound' => 'No subtitles found', 'videoControls.subtitleDownloaded' => 'Subtitle downloaded', 'videoControls.subtitleDownloadedNotApplied' => 'Subtitle downloaded, but it could not be selected', 'videoControls.subtitleDownloadFailed' => 'Failed to download subtitle', 'videoControls.searchLanguages' => 'Search languages...', 'messages.markedAsWatched' => 'Marked as watched', 'messages.markedAsUnwatched' => 'Marked as unwatched', 'messages.markedAsWatchedOffline' => 'Marked as watched (will sync when online)', 'messages.markedAsUnwatchedOffline' => 'Marked as unwatched (will sync when online)', 'messages.autoRemovedWatchedDownload' => ({required Object title}) => 'Auto-removed: ${title}', 'messages.autoRemovedWatchedDownloads' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: 'Auto-removed ${n} watched download', other: 'Auto-removed ${n} watched downloads', ), 'messages.removedFromContinueWatching' => 'Removed from Continue Watching', 'messages.errorLoading' => ({required Object error}) => 'Error: ${error}', 'messages.searchPartialResults' => 'Some media servers could not be searched. Showing available results.', 'messages.streamInterrupted' => 'The stream was interrupted. Press play or seek to retry.', 'messages.liveStreamInterrupted' => 'The live stream was interrupted. Press play to retry.', 'messages.fileInfoNotAvailable' => 'File information not available', 'messages.playbackAuthenticationRequired' => 'Sign in to the media server again to play this item.', 'messages.playbackServerUnavailable' => 'The media server is unavailable. Try again later.', 'messages.playbackDataInvalid' => 'The server returned invalid playback information.', 'messages.playbackCancelled' => 'Playback was canceled.', 'messages.playbackFailed' => 'Playback could not be started.', 'messages.errorLoadingFileInfo' => ({required Object error}) => 'Error loading file info: ${error}', 'messages.errorLoadingSeries' => 'Error loading series', 'messages.musicNotSupported' => 'Music playback is not yet supported', 'messages.noDescriptionAvailable' => 'No description available', 'messages.noProfilesAvailable' => 'No profiles available', 'messages.contactAdminForProfiles' => 'Contact your server administrator to add profiles', 'messages.unableToDetermineLibrarySection' => 'Unable to determine library section for this item', 'messages.logsCleared' => 'Logs cleared', 'messages.logsCopied' => 'Logs copied to clipboard', 'messages.noLogsAvailable' => 'No logs available', 'messages.libraryScanning' => ({required Object title}) => 'Scanning "${title}"...', 'messages.libraryScanStarted' => ({required Object title}) => 'Library scan started for "${title}"', 'messages.libraryScanFailed' => ({required Object error}) => 'Failed to scan library: ${error}', 'messages.metadataRefreshing' => ({required Object title}) => 'Refreshing metadata for "${title}"...', 'messages.metadataRefreshStarted' => ({required Object title}) => 'Metadata refresh started for "${title}"', 'messages.metadataRefreshFailed' => ({required Object error}) => 'Failed to refresh metadata: ${error}', 'messages.logoutConfirm' => 'Are you sure you want to log out?', 'messages.noSeasonsFound' => 'No seasons found', 'messages.seasonsLoadFailed' => 'Couldn\'t load seasons', 'messages.noEpisodesFound' => 'No episodes found in first season', 'messages.noEpisodesFoundGeneral' => 'No episodes found', 'messages.episodesLoadFailed' => 'Couldn\'t load episodes', 'messages.noResultsFound' => 'No results found', 'messages.sleepTimerSet' => ({required Object label}) => 'Sleep timer set for ${label}', 'messages.noItemsAvailable' => 'No items available', 'messages.failedToCreatePlayQueueNoItems' => 'Failed to create a play queue — no items', 'messages.failedPlayback' => ({required Object action, required Object error}) => 'Failed to ${action}: ${error}', 'messages.switchingToCompatiblePlayer' => 'Switching to compatible player...', 'messages.serverLimitTitle' => 'Playback failed', 'messages.serverLimitBody' => 'Server error (HTTP 500). A bandwidth/transcoding limit likely rejected this session. Ask the owner to adjust it.', 'messages.logsUploaded' => 'Logs uploaded', 'messages.logsUploadFailed' => 'Failed to upload logs', 'messages.logId' => 'Log ID', 'subtitlingStyling.text' => 'Text', 'subtitlingStyling.border' => 'Border', 'subtitlingStyling.background' => 'Background', 'subtitlingStyling.fontSize' => 'Font Size', 'subtitlingStyling.textColor' => 'Text Color', 'subtitlingStyling.borderSize' => 'Border Size', 'subtitlingStyling.borderColor' => 'Border Color', 'subtitlingStyling.backgroundOpacity' => 'Background Opacity', 'subtitlingStyling.backgroundColor' => 'Background Color', 'subtitlingStyling.position' => 'Position', 'subtitlingStyling.assOverride' => 'ASS Override', 'subtitlingStyling.overrideScale' => 'Scale', 'subtitlingStyling.overrideForce' => 'Force', 'subtitlingStyling.overrideStrip' => 'Remove styling', 'subtitlingStyling.positionTop' => 'Top', 'subtitlingStyling.positionBottom' => 'Bottom', 'subtitlingStyling.bold' => 'Bold', 'subtitlingStyling.italic' => 'Italic', 'subtitlingStyling.renderResolution' => 'Render Resolution', 'subtitlingStyling.renderResolutionScreen' => 'Screen resolution', 'subtitlingStyling.renderResolutionVideo' => 'Video resolution', 'mpvConfig.title' => 'mpv.conf', 'mpvConfig.description' => 'Advanced video player settings', 'mpvConfig.presets' => 'Presets', 'mpvConfig.noPresets' => 'No saved presets', 'mpvConfig.saveAsPreset' => 'Save as Preset...', 'mpvConfig.presetName' => 'Preset Name', 'mpvConfig.presetNameHint' => 'Enter a name for this preset', 'mpvConfig.loadPreset' => 'Load', 'mpvConfig.deletePreset' => 'Delete', 'mpvConfig.presetSaved' => 'Preset saved', 'mpvConfig.presetLoaded' => 'Preset loaded', 'mpvConfig.presetDeleted' => 'Preset deleted', 'mpvConfig.confirmDeletePreset' => 'Are you sure you want to delete this preset?', 'mpvConfig.configPlaceholder' => 'gpu-api=vulkan\nhwdec=auto\n# comment', 'dialog.confirmAction' => 'Confirm Action', 'profiles.addPlezyProfile' => 'Add Plezy profile', 'profiles.switchingProfile' => 'Switching profile…', 'profiles.deleteThisProfileTitle' => 'Delete this profile?', 'profiles.deleteThisProfileMessage' => ({required Object displayName}) => 'Remove ${displayName}. Connections aren\'t affected.', 'profiles.active' => 'Active', 'profiles.manage' => 'Manage', 'profiles.delete' => 'Delete', 'profiles.signOut' => 'Sign out', 'profiles.signOutPlexTitle' => 'Sign out of Plex?', 'profiles.signOutPlexMessage' => ({required Object displayName}) => 'Remove ${displayName} and all Plex Home users? Sign back in anytime.', 'profiles.signedOutPlex' => 'Signed out of Plex.', 'profiles.signOutFailed' => 'Sign out failed.', 'profiles.sectionTitle' => 'Profiles', 'profiles.summarySingle' => 'Add profiles to mix managed users and local identities', 'profiles.summaryMultipleWithActive' => ({required Object count, required Object activeName}) => '${count} profiles · active: ${activeName}', 'profiles.summaryMultiple' => ({required Object count}) => '${count} profiles', 'profiles.removeConnectionTitle' => 'Remove connection?', 'profiles.removeConnectionMessage' => ({required Object displayName, required Object connectionLabel}) => 'Remove ${displayName}\'s access to ${connectionLabel}. Other profiles keep it.', 'profiles.deleteProfileTitle' => 'Delete profile?', 'profiles.deleteProfileMessage' => ({required Object displayName}) => 'Remove ${displayName} and its connections. Servers stay available.', 'profiles.profileNameLabel' => 'Profile name', 'profiles.pinProtectionLabel' => 'PIN protection', 'profiles.pinManagedByPlex' => 'PIN managed by Plex. Edit on plex.tv.', 'profiles.noPinSetEditOnPlex' => 'No PIN set. To require one, edit the home user on plex.tv.', 'profiles.setPin' => 'Set PIN', 'profiles.setPinTitle' => 'Set PIN', 'profiles.confirmPinTitle' => 'Confirm PIN', 'profiles.pinSet' => 'PIN set', 'profiles.changePin' => 'Change', 'profiles.removePin' => 'Remove', 'profiles.connectionsLabel' => 'Connections', 'profiles.add' => 'Add', 'profiles.deleteProfileButton' => 'Delete profile', 'profiles.noConnectionsHint' => 'No connections — add one to use this profile.', 'profiles.noConnections' => 'No connections', 'profiles.plexHomeAccount' => 'Plex Home account', 'profiles.connectionDefault' => 'Default', 'profiles.connectionAs' => ({required Object displayName}) => 'as ${displayName}', 'profiles.makeDefault' => 'Make default', 'profiles.removeConnection' => 'Remove', 'profiles.profileRenamed' => 'Profile renamed.', 'profiles.borrowAddTo' => ({required Object displayName}) => 'Add to ${displayName}', 'profiles.borrowExplain' => 'Borrow another profile\'s connection. PIN-protected profiles require a PIN.', 'profiles.borrowEmpty' => 'Nothing to borrow yet.', 'profiles.borrowEmptySubtitle' => 'Connect Plex or Jellyfin to another profile first.', 'profiles.borrowLoadFailed' => 'Available connections could not be loaded. Try again.', 'profiles.borrowFromProfile' => ({required Object displayName}) => 'From ${displayName}', 'profiles.borrowConnectionBorrowed' => 'Connection borrowed.', 'profiles.borrowFailed' => 'Failed to borrow connection.', 'profiles.incorrectPin' => 'Incorrect PIN.', 'profiles.incorrectPinTryAgain' => 'Incorrect PIN. Please try again.', 'profiles.sourceProfileMissingParentAccount' => 'Source profile is missing its parent account.', 'profiles.failedToLoadHomeUsers' => 'Could not load your Plex Home users. Check your connection and try again.', 'profiles.failedToVerifyPin' => 'Failed to verify PIN.', 'profiles.newProfile' => 'New profile', 'profiles.profileNameHint' => 'e.g. Guests, Kids, Family Room', 'profiles.pinProtectionOptional' => 'PIN protection (optional)', 'profiles.pinExplain' => '4-digit PIN required to switch profiles.', 'profiles.continueButton' => 'Continue', 'profiles.pinsDontMatch' => 'PINs don\'t match', 'connections.sectionTitle' => 'Connections', 'connections.addConnection' => 'Add connection', 'connections.addConnectionSubtitleNoProfile' => 'Sign in with Plex or connect a Jellyfin server', 'connections.addConnectionSubtitleScoped' => ({required Object displayName}) => 'Add to ${displayName}: Plex, Jellyfin, or another profile connection', 'connections.sessionExpiredOne' => ({required Object name}) => 'Session expired for ${name}', 'connections.sessionExpiredMany' => ({required Object count}) => 'Session expired for ${count} servers', 'connections.signInAgain' => 'Sign in again', 'connections.editJellyfinTitle' => 'Edit Jellyfin connection', 'connections.editJellyfinIntro' => ({required Object serverName}) => 'Add or remove URLs for ${serverName}. Plezy will use the reachable URL with the lowest latency.', 'discover.title' => 'Discover', 'discover.noContentAvailable' => 'No content available', 'discover.addMediaToLibraries' => 'Add some media to your libraries', 'discover.continueWatching' => 'Continue Watching', 'discover.continueWatchingIn' => ({required Object library}) => 'Continue Watching in ${library}', 'discover.nextUp' => 'Next Up', 'discover.nextUpIn' => ({required Object library}) => 'Next Up in ${library}', 'discover.recentlyAdded' => 'Recently Added', 'discover.recentlyAddedIn' => ({required Object library}) => 'Recently Added in ${library}', 'discover.latestAlbumsIn' => ({required Object library}) => 'Latest Albums in ${library}', 'discover.recentlyPlayedIn' => ({required Object library}) => 'Recently Played in ${library}', 'discover.mostPlayedIn' => ({required Object library}) => 'Most Played in ${library}', 'discover.playEpisode' => ({required Object season, required Object episode}) => 'S${season}E${episode}', 'discover.overview' => 'Overview', 'discover.cast' => 'Cast', 'discover.extras' => 'Trailers & Extras', 'discover.studio' => 'Studio', 'discover.rating' => 'Rating', 'discover.director' => 'Director', 'discover.directors' => 'Directors', 'discover.movie' => 'Movie', 'discover.tvShow' => 'TV Show', 'discover.minutesLeft' => ({required Object minutes}) => '${minutes} min left', 'discover.moreLikeThis' => 'More Like This', 'errors.searchFailed' => ({required Object error}) => 'Search failed: ${error}', 'errors.searchUnavailable' => 'Search could not reach any media server.', 'errors.connectionTimeout' => ({required Object context}) => 'Connection timeout while loading ${context}', 'errors.connectionFailed' => 'Unable to connect to media server', 'errors.unableToLoad' => ({required Object context}) => 'Unable to load ${context}. Please try again.', 'errors.noClientAvailable' => 'No client available', 'errors.pleaseEnterToken' => 'Please enter a token', 'errors.invalidToken' => 'Invalid token', 'errors.failedToVerifyToken' => ({required Object error}) => 'Failed to verify token: ${error}', 'errors.failedToSwitchProfile' => ({required Object displayName}) => 'Failed to switch to ${displayName}', 'errors.failedToDeleteProfile' => ({required Object displayName}) => 'Failed to delete ${displayName}', 'errors.failedToRate' => 'Couldn\'t update rating', 'libraries.title' => 'Libraries', 'libraries.fallbackTitle' => 'Library', 'libraries.scanLibraryFiles' => 'Scan Library Files', 'libraries.scanLibrary' => 'Scan Library', 'libraries.analyze' => 'Analyze', 'libraries.analyzeLibrary' => 'Analyze Library', 'libraries.refreshMetadata' => 'Refresh Metadata', 'libraries.emptyTrash' => 'Empty Trash', 'libraries.emptyingTrash' => ({required Object title}) => 'Emptying trash for "${title}"...', 'libraries.trashEmptied' => ({required Object title}) => 'Trash emptied for "${title}"', 'libraries.failedToEmptyTrash' => ({required Object error}) => 'Failed to empty trash: ${error}', 'libraries.analyzing' => ({required Object title}) => 'Analyzing "${title}"...', 'libraries.analysisStarted' => ({required Object title}) => 'Analysis started for "${title}"', 'libraries.failedToAnalyze' => ({required Object error}) => 'Failed to analyze library: ${error}', 'libraries.noLibrariesFound' => 'No libraries found', 'libraries.allLibrariesHidden' => 'All libraries are hidden', 'libraries.hiddenLibrariesCount' => ({required Object count}) => 'Hidden libraries (${count})', 'libraries.thisLibraryIsEmpty' => 'This library is empty', 'libraries.noItemsMatchFilters' => 'No items match the active filters', 'libraries.resetFilters' => 'Reset filters', 'libraries.all' => 'All', 'libraries.clearAll' => 'Clear All', 'libraries.scanLibraryConfirm' => ({required Object title}) => 'Are you sure you want to scan "${title}"?', 'libraries.analyzeLibraryConfirm' => ({required Object title}) => 'Are you sure you want to analyze "${title}"?', 'libraries.refreshMetadataConfirm' => ({required Object title}) => 'Are you sure you want to refresh metadata for "${title}"?', 'libraries.emptyTrashConfirm' => ({required Object title}) => 'Are you sure you want to empty trash for "${title}"?', 'libraries.manageLibraries' => 'Manage Libraries', 'libraries.sort' => 'Sort', 'libraries.sortBy' => 'Sort By', 'libraries.filters' => 'Filters', 'libraries.confirmActionMessage' => 'Are you sure you want to perform this action?', 'libraries.showLibrary' => 'Show library', 'libraries.hideLibrary' => 'Hide library', 'libraries.libraryOptions' => 'Library options', 'libraries.content' => 'library content', 'libraries.selectLibrary' => 'Select library', 'libraries.filtersWithCount' => ({required Object count}) => 'Filters (${count})', 'libraries.noRecommendations' => 'No recommendations available', 'libraries.noCollections' => 'No collections in this library', 'libraries.noFoldersFound' => 'No folders found', 'libraries.folders' => 'folders', 'libraries.tabs.recommended' => 'Recommended', 'libraries.tabs.browse' => 'Browse', 'libraries.tabs.collections' => 'Collections', 'libraries.tabs.playlists' => 'Playlists', 'libraries.groupings.title' => 'Grouping', 'libraries.groupings.all' => 'All', 'libraries.groupings.movies' => 'Movies', 'libraries.groupings.shows' => 'TV Shows', 'libraries.groupings.seasons' => 'Seasons', 'libraries.groupings.episodes' => 'Episodes', 'libraries.groupings.artists' => 'Artists', 'libraries.groupings.albums' => 'Albums', 'libraries.groupings.tracks' => 'Tracks', 'libraries.groupings.folders' => 'Folders', 'libraries.filterCategories.genre' => 'Genre', 'libraries.filterCategories.year' => 'Year', 'libraries.filterCategories.contentRating' => 'Content Rating', 'libraries.filterCategories.tag' => 'Tag', 'libraries.filterCategories.unwatched' => 'Unwatched', 'libraries.filterCategories.unplayed' => 'Unplayed', 'libraries.filterCategories.favorites' => 'Favorites', 'libraries.sortLabels.title' => 'Title', 'libraries.sortLabels.dateAdded' => 'Date Added', 'libraries.sortLabels.releaseDate' => 'Release Date', 'libraries.sortLabels.rating' => 'Rating', 'libraries.sortLabels.communityRating' => 'Community Rating', 'libraries.sortLabels.criticRating' => 'Critic Rating', 'libraries.sortLabels.userRating' => 'User Rating', 'libraries.sortLabels.datePlayed' => 'Date Played', 'libraries.sortLabels.playCount' => 'Play Count', 'libraries.sortLabels.productionYear' => 'Production Year', 'libraries.sortLabels.runtime' => 'Runtime', 'libraries.sortLabels.officialRating' => 'Official Rating', 'libraries.sortLabels.premiereDate' => 'Premiere Date', 'libraries.sortLabels.startDate' => 'Start Date', 'libraries.sortLabels.airTime' => 'Air Time', 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Random', 'libraries.sortLabels.dateShared' => 'Date Shared', 'libraries.sortLabels.latestEpisodeAirDate' => 'Latest Episode Air Date', 'libraries.sortLabels.lastEpisodeDateAdded' => 'Last Episode Date Added', 'about.title' => 'About', 'about.openSourceLicenses' => 'Open Source Licenses', 'about.versionLabel' => ({required Object version}) => 'Version ${version}', 'about.appDescription' => 'A beautiful Plex and Jellyfin client for Flutter', 'about.viewLicensesDescription' => 'View licenses of third-party libraries', 'serverSelection.noServersFoundForAccount' => ({required Object username, required Object email}) => 'No servers found for ${username} (${email})', 'serverSelection.failedToLoadServers' => ({required Object error}) => 'Failed to load servers: ${error}', 'hubDetail.title' => 'Title', 'hubDetail.releaseYear' => 'Release Year', 'hubDetail.dateAdded' => 'Date Added', 'hubDetail.rating' => 'Rating', 'hubDetail.noItemsFound' => 'No items found', 'logs.clearLogs' => 'Clear Logs', 'logs.copyLogs' => 'Copy Logs', 'logs.uploadLogs' => 'Upload Logs', 'licenses.relatedPackages' => 'Related Packages', 'licenses.license' => 'License', 'licenses.licenseNumber' => ({required Object number}) => 'License ${number}', 'licenses.licensesCount' => ({required Object count}) => '${count} licenses', 'navigation.libraries' => 'Libraries', 'navigation.downloads' => 'Downloads', 'navigation.liveTv' => 'Live TV', 'navigation.explore' => 'Explore', 'explore.title' => 'Explore', 'explore.selectSource' => 'Select source', 'explore.rows.watchlist' => 'Watchlist', 'explore.rows.recommendedMovies' => 'Recommended Movies', 'explore.rows.recommendedShows' => 'Recommended Shows', 'explore.rows.trendingMovies' => 'Trending Movies', 'explore.rows.trendingShows' => 'Trending Shows', 'explore.rows.popularMovies' => 'Popular Movies', 'explore.rows.popularShows' => 'Popular Shows', 'explore.rows.trendingAnime' => 'Trending Anime', 'explore.rows.suggestedAnime' => 'Suggested Anime', 'explore.rows.airingAnime' => 'Top Airing Anime', 'explore.rows.popularAnime' => 'Most Popular Anime', 'explore.rows.trending' => 'Trending', 'explore.rows.upcomingMovies' => 'Upcoming Movies', 'explore.rows.upcomingShows' => 'Upcoming Shows', 'explore.status.airing' => 'Airing', 'explore.status.ended' => 'Ended', 'explore.status.canceled' => 'Canceled', 'explore.status.upcoming' => 'Upcoming', 'explore.episodeCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} episode', other: '${n} episodes', ), 'explore.cast' => 'Cast', 'explore.characters' => 'Characters', 'explore.addToWatchlist' => 'Add to Watchlist', 'explore.removeFromWatchlist' => 'Remove from Watchlist', 'explore.watchlistUpdateFailed' => 'Couldn\'t update watchlist', 'explore.notInLibrary' => 'Not in your library', 'explore.inTheseLibraries' => 'In these libraries', 'explore.checkingLibrary' => 'Checking your library...', 'explore.emptyTitle' => 'Nothing here yet', 'explore.emptyMessage' => ({required Object source}) => 'Rows from ${source} will appear here once they have content.', 'explore.searchHint' => ({required Object source}) => 'Search ${source}', 'explore.searchEmpty' => ({required Object query}) => 'No results for "${query}"', 'explore.searchPrompt' => ({required Object source}) => 'Search for movies and shows on ${source}.', 'explore.searchFailed' => 'Search failed. Check your connection and try again.', 'explore.badge.rankPopular' => ({required Object n}) => '#${n} popular', 'explore.badge.rankAiring' => ({required Object n}) => '#${n} airing', 'explore.badge.rankRated' => ({required Object n}) => '#${n} rated', 'explore.badge.rankFavorited' => ({required Object n}) => '#${n} favorited', 'explore.badge.rankTrending' => ({required Object n}) => '#${n} trending', 'explore.badge.rankSeasonal' => ({required Object n, required Object season}) => '#${n} in ${season}', 'explore.badge.watchingNow' => ({required Object n}) => '${n} watching', 'explore.badge.available' => 'Available', 'explore.badge.partiallyAvailable' => 'Partly available', 'explore.badge.availableIn4k' => '4K available', 'explore.badge.requested' => 'Requested', 'explore.badge.pendingApproval' => 'Pending approval', 'explore.badge.processing' => 'Processing', 'explore.badge.declined' => 'Declined', 'explore.badge.requestFailed' => 'Request failed', 'explore.badge.requested4k' => '4K requested', 'explore.badge.seasonsAvailable' => ({required Object available, required Object total}) => '${available}/${total} seasons', 'explore.badge.nextEpisodeIn' => ({required Object episode, required Object duration}) => 'Ep ${episode} in ${duration}', 'explore.badge.nextAiringIn' => ({required Object duration}) => 'Next in ${duration}', 'explore.badge.episodesShort' => ({required Object n}) => '${n} eps', 'explore.badge.minutesPerEpisode' => ({required Object n}) => '${n} min/ep', 'explore.badge.adult' => '18+', 'explore.stats.listed' => ({required Object n}) => '${n} listed', 'explore.stats.viewersDay' => ({required Object n}) => '${n} watched today', 'explore.stats.viewersWeek' => ({required Object n}) => '${n} watched this week', 'explore.stats.viewersMonth' => ({required Object n}) => '${n} watched this month', 'explore.stats.viewersYear' => ({required Object n}) => '${n} watched this year', 'explore.stats.viewersAllTime' => ({required Object n}) => '${n} viewers', 'explore.stats.planning' => ({required Object n}) => '${n} planning to watch', 'explore.stats.favorited' => ({required Object n}) => '${n} favorites', 'explore.stats.dropRate' => ({required Object percent}) => '${percent} dropped it', 'explore.stats.comments' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} comment', other: '${n} comments', ), 'explore.stats.votes' => ({required Object n}) => '${n} votes', 'explore.stats.watching' => ({required Object n}) => '${n} watching it', 'explore.stats.completed' => ({required Object n}) => '${n} completed', 'explore.stats.onHold' => ({required Object n}) => '${n} on hold', 'explore.stats.dropped' => ({required Object n}) => '${n} dropped', 'explore.season.winter' => 'Winter', 'explore.season.spring' => 'Spring', 'explore.season.summer' => 'Summer', 'explore.season.fall' => 'Fall', 'explore.season.withYear' => ({required Object season, required Object year}) => '${season} ${year}', 'explore.format.tv' => 'TV', 'explore.format.tvShort' => 'TV Short', 'explore.format.movie' => 'Movie', 'explore.format.special' => 'Special', 'explore.format.ova' => 'OVA', 'explore.format.ona' => 'ONA', 'explore.format.music' => 'Music', 'explore.format.other' => 'Other', 'explore.sourceMaterial.original' => 'Original', 'explore.sourceMaterial.manga' => 'Manga', 'explore.sourceMaterial.lightNovel' => 'Light novel', 'explore.sourceMaterial.novel' => 'Novel', 'explore.sourceMaterial.visualNovel' => 'Visual novel', 'explore.sourceMaterial.game' => 'Game', 'explore.sourceMaterial.webComic' => 'Web comic', 'explore.sourceMaterial.musicRelease' => 'Music', 'explore.sourceMaterial.otherMedia' => 'Other', 'explore.creditRole.director' => 'Director', 'explore.creditRole.writer' => 'Writer', 'explore.creditRole.producer' => 'Producer', 'explore.creditRole.creator' => 'Creator', 'explore.creditRole.composer' => 'Composer', 'explore.ratingSource.critic' => 'Critics', 'explore.ratingSource.audience' => 'Audience', 'explore.ratingSource.imdb' => 'IMDb', 'explore.ratingSource.tmdb' => 'TMDB', 'explore.ratingSource.rottenTomatoes' => 'Rotten Tomatoes', 'explore.ratingSource.simkl' => 'Simkl', 'explore.ratingSource.mal' => 'MyAnimeList', 'explore.ratingSource.anilist' => 'AniList', 'explore.ratingSource.trakt' => 'Trakt', 'explore.ratingSource.rottenTomatoesCritic' => 'Rotten Tomatoes critics', 'explore.ratingSource.rottenTomatoesAudience' => 'Rotten Tomatoes audience', 'explore.broadcast' => ({required Object day, required Object time}) => 'Airs ${day} at ${time}', 'explore.broadcastWithZone' => ({required Object day, required Object time, required Object timezone}) => 'Airs ${day} at ${time} ${timezone}', 'explore.detail.originalTitle' => 'Original title', 'explore.detail.alsoKnownAs' => 'Also known as', 'explore.detail.studios' => 'Studios', 'explore.detail.country' => 'Country', 'explore.detail.language' => 'Language', 'explore.detail.released' => 'Released', 'explore.detail.physicalRelease' => 'On disc', 'explore.detail.ended' => 'Ended', _ => null, } ?? switch (path) { 'explore.detail.addedOn' => ({required Object date}) => 'Added ${date}', 'explore.detail.yourRating' => 'Your rating', 'explore.detail.budget' => 'Budget', 'explore.detail.revenue' => 'Box office', 'explore.detail.contentAdvisory' => 'Age guidance', 'explore.detail.tags' => 'Tags', 'explore.detail.revealSpoilerTags' => 'Show spoiler tags', 'explore.detail.links' => 'Links', 'explore.detail.watchOn' => 'Watch on', 'explore.detail.watchTrailer' => 'Watch trailer', 'explore.detail.openOn' => ({required Object site}) => 'Open on ${site}', 'explore.detail.crew' => 'Crew', 'explore.detail.ratings' => 'Ratings', 'explore.detail.schedule' => 'Schedule', 'explore.detail.recommendedByUsers' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: 'Recommended by ${n} user', other: 'Recommended by ${n} users', ), 'explore.detail.recommendedBy' => ({required Object who}) => 'Recommended by ${who}', 'explore.detail.favoritedBy' => ({required Object who}) => 'Favorited by ${who}', 'explore.detail.unairedEpisodes' => ({required Object n}) => '${n} not aired yet', 'explore.detail.recommendedByPercent' => ({required Object percent}) => 'Recommended by ${percent} of viewers', 'explore.detail.relatedTitles' => 'Related titles', 'explore.detail.background' => 'Background', 'explore.totalResults' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} result', other: '${n} results', ), 'explore.relation.prequel' => 'Prequel', 'explore.relation.sequel' => 'Sequel', 'explore.relation.sideStory' => 'Side story', 'explore.relation.spinOff' => 'Spin-off', 'explore.relation.alternativeVersion' => 'Alternative version', 'explore.relation.summary' => 'Summary', 'explore.relation.parentStory' => 'Parent story', 'explore.relation.adaptation' => 'Adaptation', 'explore.relation.other' => 'Related', 'liveTv.title' => 'Live TV', 'liveTv.guide' => 'Guide', 'liveTv.noChannels' => 'No channels available', 'liveTv.noDvr' => 'No DVR configured on any server', 'liveTv.serverUnavailable' => 'Live TV server is not available.', 'liveTv.serverNotConnected' => 'Live TV server is not connected.', 'liveTv.noPrograms' => 'No program data available', 'liveTv.liveStreamFailed' => 'Live stream failed', 'liveTv.unknownProgram' => 'Unknown Program', 'liveTv.unknownHub' => 'Unknown', 'liveTv.unknownError' => 'Unknown error', 'liveTv.channelNumber' => ({required Object number}) => 'Channel ${number}', 'liveTv.unknownChannel' => 'Unknown channel', 'liveTv.live' => 'LIVE', 'liveTv.reloadGuide' => 'Reload Guide', 'liveTv.now' => 'Now', 'liveTv.today' => 'Today', 'liveTv.tomorrow' => 'Tomorrow', 'liveTv.midnight' => 'Midnight', 'liveTv.overnight' => 'Overnight', 'liveTv.morning' => 'Morning', 'liveTv.daytime' => 'Daytime', 'liveTv.evening' => 'Evening', 'liveTv.lateNight' => 'Late Night', 'liveTv.whatsOn' => 'What\'s On', 'liveTv.watchChannel' => 'Watch Channel', 'liveTv.favorites' => 'Favorites', 'liveTv.reorderFavorites' => 'Reorder Favorites', 'liveTv.favoritesLoadFailed' => 'Could not load favorites. Check your connection and try again.', 'liveTv.favoritesUpdateFailed' => 'Could not update favorites. Check your connection and try again.', 'liveTv.joinSession' => 'Join Session in Progress', 'liveTv.watchFromStart' => ({required Object minutes}) => 'Watch from start (${minutes} min ago)', 'liveTv.watchLive' => 'Watch Live', 'liveTv.goToLive' => 'Go to Live', 'liveTv.record' => 'Record', 'liveTv.recordEpisode' => 'Record Episode', 'liveTv.recordSeries' => 'Record Series', 'liveTv.recordOptions' => 'Record Options', 'liveTv.saveTo' => 'Save to', 'liveTv.recordings' => 'Recordings', 'liveTv.scheduledRecordings' => 'Scheduled', 'liveTv.recordingRules' => 'Recording Rules', 'liveTv.noScheduledRecordings' => 'Nothing scheduled to record', 'liveTv.manageRecording' => 'Manage recording', 'liveTv.cancelRecording' => 'Cancel recording', 'liveTv.cancelRecordingTitle' => 'Cancel this recording?', 'liveTv.cancelRecordingMessage' => ({required Object title}) => '${title} will no longer be recorded.', 'liveTv.deleteRule' => 'Delete rule', 'liveTv.deleteRuleTitle' => 'Delete recording rule?', 'liveTv.deleteRuleMessage' => ({required Object title}) => 'Future episodes of ${title} will not be recorded.', 'liveTv.recordingScheduled' => 'Recording scheduled', 'liveTv.alreadyScheduled' => 'This program is already scheduled', 'liveTv.dvrAdminRequired' => 'DVR settings require an admin account', 'liveTv.recordingFailed' => 'Couldn\'t schedule recording', 'liveTv.recordingTargetMissing' => 'Couldn\'t determine recording library', 'liveTv.recordNotAvailable' => 'Recording not available for this program', 'liveTv.recordingCancelled' => 'Recording canceled', 'liveTv.recordingRuleDeleted' => 'Recording rule deleted', 'liveTv.processRecordingRules' => 'Re-evaluate rules', 'liveTv.recordingInProgress' => 'Recording now', 'liveTv.recordingsCount' => ({required Object count}) => '${count} scheduled', 'liveTv.editRule' => 'Edit rule', 'liveTv.editRuleAction' => 'Edit', 'liveTv.recordingRuleUpdated' => 'Recording rule updated', 'liveTv.guideReloadRequested' => 'Guide refresh requested', 'liveTv.rulesProcessRequested' => 'Rule re-evaluation requested', 'liveTv.recordShow' => 'Record show', 'collections.title' => 'Collections', 'collections.collection' => 'Collection', 'collections.empty' => 'Collection is empty', 'collections.deleteCollection' => 'Delete Collection', 'collections.deleteConfirm' => ({required Object title}) => 'Delete "${title}"? This can\'t be undone.', 'collections.deleted' => 'Collection deleted', 'collections.deleteFailed' => 'Failed to delete collection', 'collections.deleteFailedWithError' => ({required Object error}) => 'Failed to delete collection: ${error}', 'collections.selectCollection' => 'Select Collection', 'collections.collectionName' => 'Collection Name', 'collections.enterCollectionName' => 'Enter collection name', 'collections.addedToCollection' => 'Added to collection', 'collections.errorAddingToCollection' => 'Failed to add to collection', 'collections.created' => 'Collection created', 'collections.removeFromCollection' => 'Remove from collection', 'collections.removeFromCollectionConfirm' => ({required Object title}) => 'Remove "${title}" from this collection?', 'collections.removedFromCollection' => 'Removed from collection', 'collections.removeFromCollectionFailed' => 'Failed to remove from collection', 'collections.removeFromCollectionError' => ({required Object error}) => 'Error removing from collection: ${error}', 'collections.searchCollections' => 'Search collections...', 'playlists.title' => 'Playlists', 'playlists.playlist' => 'Playlist', 'playlists.noPlaylists' => 'No playlists found', 'playlists.create' => 'Create Playlist', 'playlists.playlistName' => 'Playlist Name', 'playlists.enterPlaylistName' => 'Enter playlist name', 'playlists.delete' => 'Delete Playlist', 'playlists.removeItem' => 'Remove from Playlist', 'playlists.smartPlaylist' => 'Smart Playlist', 'playlists.itemCount' => ({required Object count}) => '${count} items', 'playlists.oneItem' => '1 item', 'playlists.emptyPlaylist' => 'This playlist is empty', 'playlists.deleteConfirm' => 'Delete Playlist?', 'playlists.deleteMessage' => ({required Object name}) => 'Are you sure you want to delete "${name}"?', 'playlists.created' => 'Playlist created', 'playlists.deleted' => 'Playlist deleted', 'playlists.itemAdded' => 'Added to playlist', 'playlists.itemRemoved' => 'Removed from playlist', 'playlists.selectPlaylist' => 'Select Playlist', 'playlists.searchPlaylists' => 'Search playlists...', 'playlists.errorCreating' => 'Failed to create playlist', 'playlists.errorDeleting' => 'Failed to delete playlist', 'playlists.errorLoading' => 'Failed to load playlists', 'playlists.errorAdding' => 'Failed to add to playlist', 'playlists.errorReordering' => 'Failed to reorder playlist item', 'playlists.errorRemoving' => 'Failed to remove from playlist', 'music.goToAlbum' => 'Go to album', 'music.goToArtist' => 'Go to artist', 'music.instantMix' => 'Instant Mix', 'music.playNext' => 'Play next', 'music.addToQueue' => 'Add to queue', 'music.discNumber' => ({required Object n}) => 'Disc ${n}', 'music.trackCount' => ({required num n}) => (_root.$meta.cardinalResolver ?? PluralResolvers.cardinal('en'))(n, one: '${n} track', other: '${n} tracks', ), 'music.nowPlaying' => 'Now Playing', 'music.playingFrom' => ({required Object title}) => 'Playing from ${title}', 'music.queue' => 'Queue', 'music.clearQueue' => 'Clear queue', 'music.lyrics' => 'Lyrics', 'music.noLyrics' => 'No lyrics available', 'music.sleepTimer' => 'Sleep timer', 'music.sleepTimerEndOfTrack' => 'End of track', 'music.sleepTimerMinutes' => ({required Object n}) => '${n} minutes', 'music.stopPlayback' => 'Stop playback', 'music.previousTrack' => 'Previous track', 'music.nextTrack' => 'Next track', 'music.repeat' => 'Repeat', 'music.repeatAll' => 'Repeat all', 'music.repeatOne' => 'Repeat one', 'watchTogether.title' => 'Watch Together', 'watchTogether.description' => 'Watch content in sync with friends and family', 'watchTogether.createSession' => 'Create Session', 'watchTogether.creating' => 'Creating...', 'watchTogether.joinSession' => 'Join Session', 'watchTogether.joining' => 'Joining...', 'watchTogether.controlMode' => 'Control Mode', 'watchTogether.controlModeQuestion' => 'Who can control playback?', 'watchTogether.hostOnly' => 'Host Only', 'watchTogether.anyone' => 'Anyone', 'watchTogether.hostingSession' => 'Hosting Session', 'watchTogether.inSession' => 'In Session', 'watchTogether.sessionCode' => 'Session Code', 'watchTogether.openSessionControls' => 'Open Watch Together session controls', 'watchTogether.copySessionCode' => 'Copy session code', 'watchTogether.hostControlsPlayback' => 'Host controls playback', 'watchTogether.anyoneCanControl' => 'Anyone can control playback', 'watchTogether.hostControls' => 'Host controls', 'watchTogether.anyoneControls' => 'Anyone controls', 'watchTogether.participants' => 'Participants', 'watchTogether.host' => 'Host', 'watchTogether.hostBadge' => 'HOST', 'watchTogether.youAreHost' => 'You are the host', 'watchTogether.watchingWithOthers' => 'Watching with others', 'watchTogether.endSession' => 'End Session', 'watchTogether.leaveSession' => 'Leave Session', 'watchTogether.endSessionQuestion' => 'End Session?', 'watchTogether.leaveSessionQuestion' => 'Leave Session?', 'watchTogether.endSessionConfirm' => 'This will end the session for all participants.', 'watchTogether.leaveSessionConfirm' => 'You will be removed from the session.', 'watchTogether.endSessionConfirmOverlay' => 'This will end the watch session for all participants.', 'watchTogether.leaveSessionConfirmOverlay' => 'You will be disconnected from the watch session.', 'watchTogether.end' => 'End', 'watchTogether.leave' => 'Leave', 'watchTogether.syncing' => 'Syncing...', 'watchTogether.joinWatchSession' => 'Join Watch Session', 'watchTogether.enterCodeHint' => 'Enter 5-character code', 'watchTogether.pasteFromClipboard' => 'Paste from clipboard', 'watchTogether.pleaseEnterCode' => 'Please enter a session code', 'watchTogether.codeMustBe5Chars' => 'Session code must be 5 characters', 'watchTogether.joinInstructions' => 'Enter the host\'s session code to join.', 'watchTogether.failedToCreate' => 'Failed to create session', 'watchTogether.failedToJoin' => 'Failed to join session', 'watchTogether.sessionCodeCopied' => 'Session code copied to clipboard', 'watchTogether.relayUnreachable' => 'Relay server unreachable. ISP blocking may prevent Watch Together.', 'watchTogether.reconnectingToHost' => 'Reconnecting to host...', 'watchTogether.currentPlayback' => 'Current Playback', 'watchTogether.joinCurrentPlayback' => 'Join Current Playback', 'watchTogether.joinCurrentPlaybackDescription' => 'Jump back into what the host is currently watching', 'watchTogether.failedToOpenCurrentPlayback' => 'Failed to open current playback', 'watchTogether.participantJoined' => ({required Object name}) => '${name} joined', 'watchTogether.participantLeft' => ({required Object name}) => '${name} left', 'watchTogether.participantPaused' => ({required Object name}) => '${name} paused', 'watchTogether.participantResumed' => ({required Object name}) => '${name} resumed', 'watchTogether.participantSeeked' => ({required Object name}) => '${name} changed the playback position', 'watchTogether.participantBuffering' => ({required Object name}) => '${name} is buffering', 'watchTogether.participantNeedsUpdate' => ({required Object name}) => '${name} is on an older app version — sync unavailable', 'watchTogether.resumingWithout' => ({required Object name}) => 'Resuming without ${name}', 'watchTogether.waitingForParticipants' => 'Waiting for others to load...', 'watchTogether.waitingForName' => ({required Object name}) => 'Waiting for ${name}...', 'watchTogether.recentRooms' => 'Recent Rooms', 'watchTogether.renameRoom' => 'Rename Room', 'watchTogether.removeRoom' => 'Remove', 'watchTogether.guestSwitchUnavailable' => 'Couldn\'t switch — server unavailable for sync', 'watchTogether.guestSwitchFailed' => 'Couldn\'t switch — content not found on this server', 'downloads.title' => 'Downloads', 'downloads.manage' => 'Manage', 'downloads.tvShows' => 'TV Shows', 'downloads.movies' => 'Movies', 'downloads.music' => 'Music', 'downloads.tracksQueued' => ({required Object count}) => '${count} tracks queued for download', 'downloads.noDownloads' => 'No downloads yet', 'downloads.noDownloadsDescription' => 'Downloaded content will appear here for offline viewing', 'downloads.downloadNow' => 'Download', 'downloads.deleteDownload' => 'Delete download', 'downloads.retryDownload' => 'Retry download', 'downloads.downloadQueued' => 'Download queued', 'downloads.downloadResumed' => 'Download resumed', 'downloads.serverErrorBitrate' => 'Server error: file may exceed the remote bitrate limit', 'downloads.storageFull' => 'Downloads stopped because device storage is full. Free some space, then retry.', 'downloads.episodesQueued' => ({required Object count}) => '${count} episodes queued for download', 'downloads.downloadDeleted' => 'Download deleted', 'downloads.deleteConfirm' => ({required Object title}) => 'Delete "${title}" from this device?', 'downloads.cancelledDownloadTitle' => 'Canceled Download', 'downloads.cancelledDownloadMessage' => 'This download was canceled. What would you like to do?', 'downloads.allEpisodesAlreadyDownloaded' => 'All episodes already downloaded', 'downloads.resumeDownload' => 'Resume download', 'downloads.cancelledDownload' => 'Canceled download', 'downloads.syncingFile' => ({required Object file, required Object status}) => '${file} (syncing ${status})', 'downloads.downloadedFileClickToComplete' => ({required Object file}) => 'Downloaded ${file} - Click to complete', 'downloads.partialDownloadClickToComplete' => 'Partially downloaded - Click to complete', 'downloads.deleting' => 'Deleting...', 'downloads.deletingWithProgress' => ({required Object title, required Object current, required Object total}) => 'Deleting ${title}... (${current} of ${total})', 'downloads.queuedTooltip' => 'Queued', 'downloads.queuedFilesTooltip' => ({required Object files}) => 'Queued ${files}', 'downloads.downloadingTooltip' => 'Downloading...', 'downloads.downloadingFilesTooltip' => ({required Object files}) => 'Downloading ${files}', 'downloads.noDownloadsTree' => 'No downloads', 'downloads.pauseAll' => 'Pause all', 'downloads.resumeAll' => 'Resume all', 'downloads.deleteAll' => 'Delete all', 'downloads.selectVersion' => 'Select Version', 'downloads.allEpisodes' => 'All episodes', 'downloads.unwatchedOnly' => 'Unwatched only', 'downloads.nextNUnwatched' => ({required Object count}) => 'Next ${count} unwatched', 'downloads.customAmount' => 'Custom amount...', 'downloads.includeSpecials' => 'Include Specials', 'downloads.howManyEpisodes' => 'How many episodes?', 'downloads.invalidEpisodeCount' => 'Enter a valid episode count.', 'downloads.keepSynced' => 'Keep synced', 'downloads.downloadOnce' => 'Download once', 'downloads.keepNUnwatched' => ({required Object count}) => 'Keep ${count} unwatched', 'downloads.editSyncRule' => 'Edit sync rule', 'downloads.removeSyncRule' => 'Remove sync rule', 'downloads.removeSyncRuleConfirm' => ({required Object title}) => 'Stop syncing "${title}"? Downloaded episodes will be kept.', 'downloads.removeListSyncRuleConfirm' => ({required Object title}) => 'Stop syncing "${title}"?', 'downloads.deleteSyncRuleDownloads' => 'Also delete associated downloads', 'downloads.deleteSyncRuleDownloadsDescription' => 'Downloads used by another sync rule or profile will be kept.', 'downloads.syncRuleCreated' => ({required Object count}) => 'Sync rule created — keeping ${count} unwatched episodes', 'downloads.syncRuleUpdated' => 'Sync rule updated', 'downloads.syncRuleRemoved' => 'Sync rule removed', 'downloads.syncRuleAndDownloadsRemoved' => 'Sync rule and associated downloads removed', 'downloads.syncRuleCleanupBusy' => 'Sync rules are currently updating. Try again in a moment.', 'downloads.syncRuleCleanupUnavailable' => 'Associated downloads could not be identified safely. Reconnect the server and try again, or remove the rule without deleting downloads.', 'downloads.syncedNewEpisodes' => ({required Object count, required Object title}) => 'Synced ${count} new episodes for ${title}', 'downloads.activeSyncRules' => 'Sync rules', 'downloads.noSyncRules' => 'No sync rules', 'downloads.manageSyncRule' => 'Manage sync', 'downloads.editEpisodeCount' => 'Episode count', 'downloads.editSyncFilter' => 'Sync filter', 'downloads.syncAllItems' => 'Syncing all items', 'downloads.syncUnwatchedItems' => 'Syncing unwatched items', 'downloads.syncRuleServerContext' => ({required Object server, required Object status}) => 'Server: ${server} • ${status}', 'downloads.syncRuleAvailable' => 'Available', 'downloads.syncRuleOffline' => 'Offline', 'downloads.syncRuleSignInRequired' => 'Sign in required', 'downloads.syncRuleNotAvailableForProfile' => 'Not available for current profile', 'downloads.syncRuleUnknownServer' => 'Unknown server', 'downloads.syncRuleListCreated' => 'Sync rule created', 'downloads.backgroundWarning.bannerBlocked' => 'Downloads will stop when you leave the app', 'downloads.backgroundWarning.bannerDegraded' => 'Background downloads may be limited', 'downloads.backgroundWarning.bannerAction' => 'Details', 'downloads.backgroundWarning.sheetTitle' => 'Background downloads are blocked', 'downloads.backgroundWarning.sheetTitleDegraded' => 'Background downloads may be limited', 'downloads.backgroundWarning.sheetIntro' => 'Android is preventing Plezy from downloading reliably in the background.', 'downloads.backgroundWarning.sheetIntroDegraded' => 'Your device is limiting when Plezy can download in the background.', 'downloads.backgroundWarning.reasonBackgroundRestricted' => 'Plezy\'s background usage is restricted. Set its battery or background usage to "Unrestricted".', 'downloads.backgroundWarning.reasonStandbyRestricted' => 'Android has put Plezy in a restricted standby state. Set its battery usage to "Unrestricted".', 'downloads.backgroundWarning.reasonDownloadChannelBlocked' => 'Download notifications are turned off, so progress and controls may be unavailable.', 'downloads.backgroundWarning.reasonNotificationsDisabled' => 'Notifications are turned off. On Android 13 or newer, they are required for long background downloads.', 'downloads.backgroundWarning.reasonDataSaver' => 'Data Saver is on, which blocks background downloads on mobile data. Downloads should still run on Wi-Fi.', 'downloads.backgroundWarning.reasonOemUnknown' => 'Downloads repeatedly stopped while Plezy was in the background. Check Plezy\'s battery or background usage settings.', 'downloads.backgroundWarning.openSettings' => 'Open settings', 'downloads.backgroundWarning.stillNotWorking' => 'Device-specific help', 'downloads.backgroundWarning.stillNotWorkingDescription' => 'See steps for your device, or send a log from Settings › View Logs if the issue continues.', 'downloads.backgroundWarning.dialogTitle' => 'Downloads may not finish', 'downloads.backgroundWarning.dialogDownloadAnyway' => 'Download anyway', 'downloads.backgroundWarning.dialogFixFirst' => 'Fix this first', 'downloads.backgroundWarning.statusTile' => 'Background downloads', 'downloads.backgroundWarning.statusOk' => 'Allowed to run in the background', 'downloads.backgroundWarning.statusBlocked' => 'Blocked by system settings', 'downloads.backgroundWarning.statusDegraded' => 'Limited by system settings', 'downloads.backgroundWarning.statusUnknown' => 'Not checked yet', 'downloads.backgroundWarning.settingsUnavailable' => 'Couldn\'t open system settings on this device', 'downloads.backgroundWarning.linkUnavailable' => 'Couldn\'t open dontkillmyapp.com on this device', 'shaders.title' => 'Shaders', 'shaders.noShaderDescription' => 'No video enhancement', 'shaders.nvscalerDescription' => 'NVIDIA image scaling for sharper video', 'shaders.artcnnVariantNeutral' => 'Neutral', 'shaders.artcnnVariantDenoise' => 'Denoise', 'shaders.artcnnVariantDenoiseSharpen' => 'Denoise + Sharpen', 'shaders.qualityFast' => 'Fast', 'shaders.qualityHQ' => 'High Quality', 'shaders.mode' => 'Mode', 'shaders.importShader' => 'Import Shader', 'shaders.customShaderDescription' => 'Custom GLSL shader', 'shaders.shaderImported' => 'Shader imported', 'shaders.shaderImportFailed' => 'Failed to import shader', 'shaders.deleteShader' => 'Delete Shader', 'shaders.deleteShaderConfirm' => ({required Object name}) => 'Delete "${name}"?', 'companionRemote.title' => 'Companion Remote', 'companionRemote.connectedTo' => ({required Object name}) => 'Connected to ${name}', 'companionRemote.unknownDevice' => 'Unknown Device', 'companionRemote.session.startingServer' => 'Starting remote server...', 'companionRemote.session.hostAddress' => 'Host Address', 'companionRemote.session.connected' => 'Connected', 'companionRemote.session.serverRunning' => 'Remote server active', 'companionRemote.session.serverStopped' => 'Remote server stopped', 'companionRemote.session.serverRunningDescription' => 'Mobile devices on your network can connect to this app', 'companionRemote.session.serverStoppedDescription' => 'Start the server to allow mobile devices to connect', 'companionRemote.session.usePhoneToControl' => 'Use your mobile device to control this app', 'companionRemote.session.startServer' => 'Start Server', 'companionRemote.session.stopServer' => 'Stop Server', 'companionRemote.session.minimize' => 'Minimize', 'companionRemote.pairing.discoveryDescription' => 'Plezy devices with the same Plex account appear here', 'companionRemote.pairing.hostAddressHint' => '192.168.1.100:48632', 'companionRemote.pairing.connecting' => 'Connecting...', 'companionRemote.pairing.searchingForDevices' => 'Looking for devices...', 'companionRemote.pairing.noDevicesFound' => 'No devices found on your network', 'companionRemote.pairing.noDevicesHint' => 'Open Plezy on desktop and use the same Wi-Fi', 'companionRemote.pairing.availableDevices' => 'Available Devices', 'companionRemote.pairing.manualConnection' => 'Manual Connection', 'companionRemote.pairing.cryptoInitFailed' => 'Couldn\'t start secure connection. Sign in to Plex first.', 'companionRemote.pairing.validationHostRequired' => 'Please enter host address', 'companionRemote.pairing.validationHostFormat' => 'Format must be IP:port (e.g., 192.168.1.100:48632)', 'companionRemote.pairing.connectionTimedOut' => 'Connection timed out. Use the same network on both devices.', 'companionRemote.pairing.sessionNotFound' => 'Device not found. Make sure Plezy is running on the host.', 'companionRemote.pairing.authFailed' => 'Authentication failed. Both devices need the same Plex account.', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Failed to connect: ${error}', 'companionRemote.remote.disconnectConfirm' => 'Do you want to disconnect from the remote session?', 'companionRemote.remote.reconnecting' => 'Reconnecting...', 'companionRemote.remote.attemptOf' => ({required Object current}) => 'Attempt ${current} of 5', 'companionRemote.remote.retryNow' => 'Retry Now', 'companionRemote.remote.tabRemote' => 'Remote', 'companionRemote.remote.tabPlay' => 'Play', 'companionRemote.remote.tabMore' => 'More', 'companionRemote.remote.menu' => 'Menu', 'companionRemote.remote.tabNavigation' => 'Tab Navigation', 'companionRemote.remote.tabDiscover' => 'Discover', 'companionRemote.remote.tabLibraries' => 'Libraries', 'companionRemote.remote.tabSearch' => 'Search', 'companionRemote.remote.tabDownloads' => 'Downloads', 'companionRemote.remote.tabSettings' => 'Settings', 'companionRemote.remote.previous' => 'Previous', 'companionRemote.remote.playPause' => 'Play/Pause', 'companionRemote.remote.next' => 'Next', 'companionRemote.remote.seekBack' => 'Seek Back', 'companionRemote.remote.stop' => 'Stop', 'companionRemote.remote.seekForward' => 'Seek Fwd', 'companionRemote.remote.volume' => 'Volume', 'companionRemote.remote.volumeDown' => 'Down', 'companionRemote.remote.volumeUp' => 'Up', 'companionRemote.remote.fullscreen' => 'Fullscreen', 'companionRemote.remote.subtitles' => 'Subtitles', 'companionRemote.remote.audio' => 'Audio', 'companionRemote.remote.searchHint' => 'Search on desktop...', 'companionRemote.errors.noNetworkInterface' => 'No network interface found', 'companionRemote.errors.authenticationFailed' => 'Authentication failed', 'companionRemote.errors.serverStartFailed' => ({required Object error}) => 'Failed to start remote server: ${error}', 'companionRemote.errors.commandFailed' => ({required Object error}) => 'Failed to send remote command: ${error}', 'companionRemote.errors.joinTimedOut' => 'Timed out joining session', 'companionRemote.errors.failedToConnectAnyAddress' => 'Failed to connect to any address', 'companionRemote.errors.connectionLostAfterAttempts' => ({required Object attempts}) => 'Connection lost after ${attempts} attempts', 'companionRemote.errors.connectionLost' => 'Connection lost', 'videoSettings.playbackSpeed' => 'Playback Speed', 'videoSettings.normalSpeed' => 'Normal', 'videoSettings.sleepTimerActive' => ({required Object duration}) => 'Active (${duration})', 'videoSettings.zoom' => 'Zoom', 'videoSettings.sleepTimer' => 'Sleep Timer', 'videoSettings.audioSync' => 'Audio Sync', 'videoSettings.subtitleSync' => 'Subtitle Sync', 'videoSettings.hdr' => 'HDR', 'videoSettings.audioOutput' => 'Audio Output', 'videoSettings.performanceOverlay' => 'Performance Overlay', 'videoSettings.audioPassthrough' => 'Audio Passthrough', 'videoSettings.audioOutputDolbyAtmos' => 'Dolby Atmos', 'videoSettings.audioOutputDolbyAudio' => 'Dolby Audio', 'videoSettings.audioOutputSurround' => 'Surround', 'videoSettings.audioOutputSpatial' => 'Spatial Audio', 'videoSettings.audioOutputStereo' => 'Stereo', 'videoSettings.audioNormalization' => 'Normalize Loudness', 'videoSettings.audioDownmix' => 'Downmix to Stereo', 'performanceOverlay.color' => 'Color', 'performanceOverlay.performance' => 'Performance', 'performanceOverlay.buffer' => 'Buffer', 'performanceOverlay.app' => 'App', 'performanceOverlay.decoder' => 'Decoder', 'performanceOverlay.rawDecoder' => 'Raw Decoder', 'performanceOverlay.tunneling' => 'Tunneling', 'performanceOverlay.aspect' => 'Aspect', 'performanceOverlay.rotation' => 'Rotation', 'performanceOverlay.dvSource' => 'DV Source', 'performanceOverlay.dvPath' => 'DV Path', 'performanceOverlay.p7Conversion' => 'P7 Conv', 'performanceOverlay.sampleRate' => 'Sample Rate', 'performanceOverlay.pixelFormat' => 'Pixel Fmt', 'performanceOverlay.hwFormat' => 'HW Fmt', 'performanceOverlay.matrix' => 'Matrix', 'performanceOverlay.primaries' => 'Primaries', 'performanceOverlay.transfer' => 'Transfer', 'performanceOverlay.renderFps' => 'Render FPS', 'performanceOverlay.displayFps' => 'Display FPS', 'performanceOverlay.avSync' => 'A/V Sync', 'performanceOverlay.dropped' => 'Dropped', 'performanceOverlay.dvRpus' => 'DV RPUs', 'performanceOverlay.dvRpuAverage' => 'DV RPU Avg', 'performanceOverlay.dvSampleAverage' => 'DV Sample Avg', 'performanceOverlay.maxLuma' => 'Max Luma', 'performanceOverlay.minLuma' => 'Min Luma', 'performanceOverlay.maxCll' => 'MaxCLL', 'performanceOverlay.maxFall' => 'MaxFALL', 'performanceOverlay.cacheUsed' => 'Cache Used', 'performanceOverlay.cacheLimit' => 'Cache Limit', 'performanceOverlay.speed' => 'Speed', 'performanceOverlay.player' => 'Player', 'performanceOverlay.memory' => 'Memory', 'performanceOverlay.uiFps' => 'UI FPS', 'externalPlayer.title' => 'External Player', 'externalPlayer.useExternalPlayer' => 'Use External Player', 'externalPlayer.useExternalPlayerDescription' => 'Open videos in another app', 'externalPlayer.selectPlayer' => 'Select Player', 'externalPlayer.customPlayers' => 'Custom Players', 'externalPlayer.systemDefault' => 'System Default', 'externalPlayer.addCustomPlayer' => 'Add Custom Player', 'externalPlayer.playerName' => 'Player Name', 'externalPlayer.playerNameHint' => 'My Player', 'externalPlayer.playerCommand' => 'Command', 'externalPlayer.playerPackage' => 'Package Name', 'externalPlayer.playerUrlScheme' => 'URL Scheme', 'externalPlayer.off' => 'Off', 'externalPlayer.launchFailed' => 'Failed to open external player', 'externalPlayer.appNotInstalled' => ({required Object name}) => '${name} is not installed', 'externalPlayer.playInExternalPlayer' => 'Play in External Player', 'metadataEdit.editMetadata' => 'Edit...', 'metadataEdit.screenTitle' => 'Edit Metadata', 'metadataEdit.basicInfo' => 'Basic Info', 'metadataEdit.artwork' => 'Artwork', 'metadataEdit.advancedSettings' => 'Advanced Settings', 'metadataEdit.title' => 'Title', 'metadataEdit.sortTitle' => 'Sort Title', 'metadataEdit.originalTitle' => 'Original Title', 'metadataEdit.releaseDate' => 'Release Date', 'metadataEdit.contentRating' => 'Content Rating', 'metadataEdit.studio' => 'Studio', 'metadataEdit.tagline' => 'Tagline', 'metadataEdit.summary' => 'Summary', 'metadataEdit.poster' => 'Poster', 'metadataEdit.background' => 'Background', 'metadataEdit.logo' => 'Logo', 'metadataEdit.squareArt' => 'Square Art', 'metadataEdit.selectPoster' => 'Select Poster', 'metadataEdit.selectBackground' => 'Select Background', 'metadataEdit.selectLogo' => 'Select Logo', 'metadataEdit.selectSquareArt' => 'Select Square Art', 'metadataEdit.fromUrl' => 'From URL', 'metadataEdit.uploadFile' => 'Upload File', 'metadataEdit.enterImageUrl' => 'Enter image URL', 'metadataEdit.imageUrl' => 'Image URL', 'metadataEdit.metadataUpdated' => 'Metadata updated', 'metadataEdit.metadataUpdateFailed' => 'Failed to update metadata', 'metadataEdit.artworkUpdated' => 'Artwork updated', 'metadataEdit.artworkUpdateFailed' => 'Failed to update artwork', 'metadataEdit.noArtworkAvailable' => 'No artwork available', 'metadataEdit.artworkOption' => ({required Object index}) => 'Artwork option ${index}', 'metadataEdit.selectedArtworkOption' => ({required Object index}) => 'Artwork option ${index}, selected', 'metadataEdit.notSet' => 'Not set', _ => null, } ?? switch (path) { 'metadataEdit.libraryDefault' => 'Library default', 'metadataEdit.accountDefault' => 'Account default', 'metadataEdit.seriesDefault' => 'Series default', 'metadataEdit.episodeSorting' => 'Episode Sorting', 'metadataEdit.oldestFirst' => 'Oldest first', 'metadataEdit.newestFirst' => 'Newest first', 'metadataEdit.keep' => 'Keep', 'metadataEdit.allEpisodes' => 'All episodes', 'metadataEdit.latestEpisodes' => ({required Object count}) => '${count} latest episodes', 'metadataEdit.latestEpisode' => 'Latest episode', 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episodes added in the past ${count} days', 'metadataEdit.deleteAfterPlaying' => 'Delete Episodes After Playing', 'metadataEdit.never' => 'Never', 'metadataEdit.afterADay' => 'After a day', 'metadataEdit.afterAWeek' => 'After a week', 'metadataEdit.afterAMonth' => 'After a month', 'metadataEdit.onNextRefresh' => 'On next refresh', 'metadataEdit.seasons' => 'Seasons', 'metadataEdit.show' => 'Show', 'metadataEdit.hide' => 'Hide', 'metadataEdit.episodeOrdering' => 'Episode Ordering', 'metadataEdit.tmdbAiring' => 'The Movie Database (Aired)', 'metadataEdit.tvdbAiring' => 'TheTVDB (Aired)', 'metadataEdit.tvdbAbsolute' => 'TheTVDB (Absolute)', 'metadataEdit.metadataLanguage' => 'Metadata Language', 'metadataEdit.useOriginalTitle' => 'Use Original Title', 'metadataEdit.preferredAudioLanguage' => 'Preferred Audio Language', 'metadataEdit.preferredSubtitleLanguage' => 'Preferred Subtitle Language', 'metadataEdit.subtitleMode' => 'Auto-Select Subtitle Mode', 'metadataEdit.manuallySelected' => 'Manually selected', 'metadataEdit.shownWithForeignAudio' => 'Shown with foreign audio', 'metadataEdit.alwaysEnabled' => 'Always enabled', 'metadataEdit.tags' => 'Tags', 'metadataEdit.addTag' => 'Add tag', 'metadataEdit.genre' => 'Genre', 'metadataEdit.director' => 'Director', 'metadataEdit.writer' => 'Writer', 'metadataEdit.producer' => 'Producer', 'metadataEdit.country' => 'Country', 'metadataEdit.collection' => 'Collection', 'metadataEdit.label' => 'Label', 'metadataEdit.style' => 'Style', 'metadataEdit.mood' => 'Mood', 'matchScreen.match' => 'Match...', 'matchScreen.fixMatch' => 'Fix Match...', 'matchScreen.unmatch' => 'Unmatch', 'matchScreen.unmatchConfirm' => 'Clear this match? Plex treats it as unmatched until rematched.', 'matchScreen.unmatchSuccess' => 'Item unmatched', 'matchScreen.unmatchFailed' => 'Failed to unmatch item', 'matchScreen.matchApplied' => 'Match applied', 'matchScreen.matchFailed' => 'Failed to apply match', 'matchScreen.titleHint' => 'Title', 'matchScreen.yearHint' => 'Year', 'matchScreen.search' => 'Search', 'matchScreen.noMatchesFound' => 'No matches found', 'serverTasks.title' => 'Server Tasks', 'serverTasks.failedToLoad' => 'Failed to load tasks', 'serverTasks.noTasks' => 'No tasks running', 'trakt.title' => 'Trakt', 'trakt.connected' => 'Connected', 'trakt.connectedAs' => ({required Object username}) => 'Connected as @${username}', 'trakt.disconnectConfirm' => 'Disconnect Trakt account?', 'trakt.disconnectConfirmBody' => 'Plezy will stop sending events to Trakt. You can reconnect any time.', 'trakt.scrobble' => 'Real-time scrobbling', 'trakt.scrobbleDescription' => 'Send play, pause, and stop events to Trakt during playback.', 'trakt.watchedSync' => 'Sync watched status', 'trakt.watchedSyncDescription' => 'When you mark items as watched in Plezy, they are also marked as watched on Trakt.', 'seerr.title' => 'Seerr', 'seerr.connectTitle' => 'Connect Seerr', 'seerr.serverUrl' => 'Server URL', 'seerr.serverUrlHelper' => 'The address of your Seerr instance', 'seerr.checkServer' => 'Continue', 'seerr.signInWithJellyfin' => 'Sign in with Jellyfin', 'seerr.signInWithEmby' => 'Sign in with Emby', 'seerr.signInWithLocal' => 'Use a local account', 'seerr.email' => 'Email', 'seerr.noSignInMethods' => 'This Seerr instance offers no sign-in method Plezy supports.', 'seerr.instance' => 'Instance', 'seerr.disconnectConfirm' => 'Disconnect Seerr?', 'seerr.disconnectConfirmBody' => 'Plezy will forget this Seerr instance. Reconnect any time.', 'seerr.request' => 'Request', 'seerr.request4k' => 'Request in 4K', 'seerr.seasons' => 'Seasons', 'seerr.allSeasons' => 'All seasons', 'seerr.advancedOptions' => 'Advanced', 'seerr.destinationServer' => 'Destination server', 'seerr.qualityProfile' => 'Quality profile', 'seerr.rootFolder' => 'Root folder', 'seerr.languageProfile' => 'Language profile', 'seerr.requestSubmitted' => 'Request submitted', 'seerr.requestFailed' => ({required Object error}) => 'Request failed: ${error}', 'seerr.requestsLoadFailed' => 'Couldn\'t load request options', 'seerr.nothingToRequest' => 'Everything is already available or requested.', 'seerr.statusAvailable' => 'Available', 'seerr.statusPartiallyAvailable' => 'Partially available', 'seerr.statusRequested' => 'Requested', 'seerr.statusProcessing' => 'Processing', 'services.title' => 'Services', 'services.hubSubtitle' => 'Sync watch progress and request new titles.', 'services.notConnected' => 'Not connected', 'services.connectedAs' => ({required Object username}) => 'Connected as @${username}', 'services.scrobble' => 'Track progress automatically', 'services.scrobbleDescription' => 'Update your list when you finish an episode or movie.', 'services.disconnectConfirm' => ({required Object service}) => 'Disconnect ${service}?', 'services.disconnectConfirmBody' => ({required Object service}) => 'Plezy will stop updating ${service}. Reconnect any time.', 'services.connectFailed' => ({required Object service}) => 'Couldn\'t connect to ${service}. Try again.', 'services.names.mal' => 'MyAnimeList', 'services.names.anilist' => 'AniList', 'services.names.simkl' => 'Simkl', 'services.names.seerr' => 'Seerr', 'services.deviceCode.title' => ({required Object service}) => 'Activate Plezy on ${service}', 'services.deviceCode.body' => ({required Object url}) => 'Visit ${url} and enter this code:', 'services.deviceCode.openToActivate' => ({required Object service}) => 'Open ${service} to activate', 'services.deviceCode.copyCode' => 'Copy activation code', 'services.deviceCode.waitingForAuthorization' => 'Waiting for authorization…', 'services.deviceCode.codeCopied' => 'Code copied', 'services.oauthProxy.title' => ({required Object service}) => 'Sign in to ${service}', 'services.oauthProxy.body' => 'Scan this QR code or open the URL on any device.', 'services.oauthProxy.openToSignIn' => ({required Object service}) => 'Open ${service} to sign in', 'services.oauthProxy.copyUrl' => 'Copy sign-in URL', 'services.oauthProxy.urlCopied' => 'URL copied', 'services.libraryFilter.title' => 'Library filter', 'services.libraryFilter.subtitleAllSyncing' => 'Syncing all libraries', 'services.libraryFilter.subtitleNoneSyncing' => 'Nothing syncing', 'services.libraryFilter.subtitleBlocked' => ({required Object count}) => '${count} blocked', 'services.libraryFilter.subtitleAllowed' => ({required Object count}) => '${count} allowed', 'services.libraryFilter.mode' => 'Filter mode', 'services.libraryFilter.modeBlacklist' => 'Blacklist', 'services.libraryFilter.modeWhitelist' => 'Whitelist', 'services.libraryFilter.modeHintBlacklist' => 'Sync every library except the ones checked below.', 'services.libraryFilter.modeHintWhitelist' => 'Sync only the libraries checked below.', 'services.libraryFilter.libraries' => 'Libraries', 'services.libraryFilter.noLibraries' => 'No libraries available', 'addServer.addJellyfinTitle' => 'Add Jellyfin server', 'addServer.serverUrls' => 'Server URLs', 'addServer.serverUrlsHelper' => 'Multiple URLs allowed, separated by commas.', 'addServer.findServer' => 'Find server', 'addServer.searchingLocalServers' => 'Looking for local Jellyfin servers...', 'addServer.localServers' => 'Local Jellyfin servers', 'addServer.username' => 'Username', 'addServer.password' => 'Password', 'addServer.signIn' => 'Sign in', 'addServer.change' => 'Change', 'addServer.required' => 'Required', 'addServer.couldNotReachServer' => ({required Object error}) => 'Could not reach the server: ${error}', 'addServer.signInFailed' => ({required Object error}) => 'Sign-in failed: ${error}', 'addServer.quickConnectFailed' => ({required Object error}) => 'Quick Connect failed: ${error}', 'addServer.addPlexTitle' => 'Sign in with Plex', 'addServer.pinExpired' => 'PIN expired before sign-in. Please try again.', 'addServer.failedToRegisterAccount' => ({required Object error}) => 'Failed to register account: ${error}', 'addServer.enterJellyfinUrlError' => 'Enter your Jellyfin server URL', 'addServer.addConnectionTitle' => 'Add connection', 'addServer.addConnectionTitleScoped' => ({required Object name}) => 'Add to ${name}', 'addServer.signInWithPlexCard' => 'Sign in with Plex', 'addServer.signInWithPlexCardSubtitle' => 'Authorize this device. Shared servers are added.', 'addServer.signInWithPlexCardSubtitleScoped' => 'Authorize a Plex account. Home users become profiles.', 'addServer.connectToJellyfinCard' => 'Connect to Jellyfin', 'addServer.connectToJellyfinCardSubtitle' => 'Enter your server URL, username, and password.', 'addServer.connectToJellyfinCardSubtitleScoped' => ({required Object name}) => 'Sign in to a Jellyfin server. Binds to ${name}.', 'addServer.borrowFromAnotherProfile' => 'Borrow from another profile', 'addServer.borrowFromAnotherProfileSubtitle' => 'Reuse another profile\'s connection. PIN-protected profiles require a PIN.', _ => null, }; } }